b15c0e77f1000728e2d05891cffb80daaa110e92
[profile/ivi/gstreamer-vaapi.git] / gst / vaapiencode / gstvaapibaseencoder.h
1 #ifndef GST_VAAPI_BASE_ENCODER_H
2 #define GST_VAAPI_BASE_ENCODER_H
3
4 #include "gstvaapiencoder.h"
5
6 G_BEGIN_DECLS
7
8 typedef struct _GstVaapiBaseEncoder              GstVaapiBaseEncoder;
9 typedef struct _GstVaapiBaseEncoderPrivate       GstVaapiBaseEncoderPrivate;
10 typedef struct _GstVaapiBaseEncoderClass         GstVaapiBaseEncoderClass;
11
12 #define GST_TYPE_VAAPI_BASE_ENCODER             (gst_vaapi_base_encoder_get_type())
13 #define GST_IS_VAAPI_BASE_ENCODER(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_VAAPI_BASE_ENCODER))
14 #define GST_IS_VAAPI_BASE_ENCODER_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_VAAPI_BASE_ENCODER))
15 #define GST_VAAPI_BASE_ENCODER_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_VAAPI_BASE_ENCODER,  GstVaapiBaseEncoderClass))
16 #define GST_VAAPI_BASE_ENCODER(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_VAAPI_BASE_ENCODER, GstVaapiBaseEncoder))
17 #define GST_VAAPI_BASE_ENCODER_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_VAAPI_BASE_ENCODER,  GstVaapiBaseEncoderClass))
18 #define GST_VAAPI_BASE_ENCODER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj),GST_TYPE_VAAPI_BASE_ENCODER,  GstVaapiBaseEncoderPrivate))
19
20
21 struct _GstVaapiBaseEncoder {
22   GstVaapiEncoder parent;
23 };
24
25 struct _GstVaapiBaseEncoderClass {
26   GstVaapiEncoderClass parent_class;
27
28   /* in <open> function*/
29   gboolean (*validate_attributes)   (GstVaapiBaseEncoder* encoder);
30   gboolean (*pre_alloc_resource)    (GstVaapiBaseEncoder *base_encoder, GstVaapiDisplay *display, GstVaapiContext *context);
31
32   /* in <close> function */
33   gboolean (*release_resource)      (GstVaapiBaseEncoder* encoder, GstVaapiDisplay *display, GstVaapiContext *context);
34
35   EncoderStatus (*prepare_frame)    (GstVaapiBaseEncoder *encoder, GstVaapiDisplay *display,
36                                      GstVaapiContext *context, GstVaapiSurface *surface,
37                                      guint frame_index, VABufferID coded_buf, gboolean *is_key);
38   void (*notify_frame)              (GstVaapiBaseEncoder *encoder, guint8 *buf, guint32 size);
39   GstBuffer *(*copy_coded_frame)    (GstVaapiBaseEncoder *encoder, guint8 *buf, guint32 size, VABufferID *coded_buf);
40 };
41
42 /*
43 struct _GstVaapiBaseEncoderPrivate {
44   GstVaapiDisplay     *display;
45   GstVaapiContext     *context;
46   //VAAPI_Encode_State   state;
47 };
48 */
49
50 GType    gst_vaapi_base_encoder_get_type(void);
51 void     gst_vaapi_base_encoder_set_frame_notify(GstVaapiBaseEncoder *encoder, gboolean flag);
52 gboolean gst_vaapi_base_encoder_set_va_profile(GstVaapiBaseEncoder *encoder, guint profile);
53 void     gst_vaapi_base_encoder_set_input_format(GstVaapiBaseEncoder* encoder, guint32 format);
54
55
56 G_END_DECLS
57
58 #endif
59