1 #ifndef GST_VAAPI_BASE_ENCODER_H
2 #define GST_VAAPI_BASE_ENCODER_H
4 #include "gstvaapiencoder.h"
8 typedef struct _GstVaapiBaseEncoder GstVaapiBaseEncoder;
9 typedef struct _GstVaapiBaseEncoderPrivate GstVaapiBaseEncoderPrivate;
10 typedef struct _GstVaapiBaseEncoderClass GstVaapiBaseEncoderClass;
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))
21 struct _GstVaapiBaseEncoder {
22 GstVaapiEncoder parent;
25 struct _GstVaapiBaseEncoderClass {
26 GstVaapiEncoderClass parent_class;
28 /* in <open> function*/
29 gboolean (*validate_attributes) (GstVaapiBaseEncoder* encoder);
30 gboolean (*pre_alloc_resource) (GstVaapiBaseEncoder *base_encoder, GstVaapiDisplay *display, GstVaapiContext *context);
32 /* in <close> function */
33 gboolean (*release_resource) (GstVaapiBaseEncoder* encoder, GstVaapiDisplay *display, GstVaapiContext *context);
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);
43 struct _GstVaapiBaseEncoderPrivate {
44 GstVaapiDisplay *display;
45 GstVaapiContext *context;
46 //VAAPI_Encode_State state;
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);