2 #ifndef _GST_H264_ENCODER_H_
3 #define _GST_H264_ENCODER_H_
6 #include "gst/vaapi/gstvaapisurfacepool.h"
8 #include "gstvaapibaseencoder.h"
12 typedef struct _GstH264Encoder GstH264Encoder;
13 typedef struct _GstH264EncoderPrivate GstH264EncoderPrivate;
14 typedef struct _GstH264EncoderClass GstH264EncoderClass;
17 #define GST_TYPE_H264_ENCODER (gst_h264_encoder_get_type())
18 #define GST_IS_H264_ENCODER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_H264_ENCODER))
19 #define GST_IS_H264_ENCODER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_H264_ENCODER))
20 #define GST_H264_ENCODER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_H264_ENCODER, GstH264EncoderClass))
21 #define GST_H264_ENCODER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_H264_ENCODER, GstH264Encoder))
22 #define GST_H264_ENCODER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_H264_ENCODER, GstH264EncoderClass))
23 #define GST_H264_ENCODER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj),GST_TYPE_H264_ENCODER,GstH264EncoderPrivate))
26 H264_PROFILE_BASELINE = 66,
27 H264_PROFILE_MAIN = 77,
28 H264_PROFILE_EXTENDED = 88,
29 H264_PROFILE_HIGH = 100,
30 H264_PROFILE_HIGH10 = 110,
31 H264_PROFILE_HIGH422 = 122,
32 H264_PROFILE_HIGH444 = 144,
33 H264_PROFILE_HIGH444_PREDICTIVE = 244,
37 H264_LEVEL_10 = 10, /* QCIF format, < 380160 samples/sec */
38 H264_LEVEL_11 = 11, /* CIF format, < 768000 samples/sec */
39 H264_LEVEL_12 = 12, /* CIF format, < 1536000 samples/sec */
40 H264_LEVEL_13 = 13, /* CIF format, < 3041280 samples/sec */
41 H264_LEVEL_20 = 20, /* CIF format, < 3041280 samples/sec */
42 H264_LEVEL_21 = 21, /* HHR format, < 5068800 samples/sec */
43 H264_LEVEL_22 = 22, /* SD/4CIF format, < 5184000 samples/sec */
44 H264_LEVEL_30 = 30, /* SD/4CIF format, < 10368000 samples/sec */
45 H264_LEVEL_31 = 31, /* 720pHD format, < 27648000 samples/sec */
46 H264_LEVEL_32 = 32, /* SXGA format, < 55296000 samples/sec */
47 H264_LEVEL_40 = 40, /* 2Kx1K format, < 62914560 samples/sec */
48 H264_LEVEL_41 = 41, /* 2Kx1K format, < 62914560 samples/sec */
49 H264_LEVEL_42 = 42, /* 2Kx1K format, < 125829120 samples/sec */
50 H264_LEVEL_50 = 50, /* 3672x1536 format, < 150994944 samples/sec */
51 H264_LEVEL_51 = 51, /* 4096x2304 format, < 251658240 samples/sec */
54 #define H264_DEFAULT_PROFILE H264_PROFILE_BASELINE
55 #define H264_DEFAULT_LEVEL H264_LEVEL_30
56 #define H264_DEFAULT_INIT_QP 24
57 #define H264_DEFAULT_MIN_QP 1
58 #define H264_DEFAULT_INTRA_PERIOD 30
59 #define H264_DEFAULT_FPS 30
60 #define H264_DEFAULT_SLICE_NUM 1
62 struct _GstH264Encoder {
63 GstVaapiBaseEncoder parent; /*based on gobject*/
69 guint32 init_qp; /*default 24*/
70 guint32 min_qp; /*default 1*/
75 struct _GstH264EncoderClass {
76 GstVaapiBaseEncoderClass parent_class;
80 GType gst_h264_encoder_get_type(void);
82 GstH264Encoder *gst_h264_encoder_new(void);
83 static inline void gst_h264_encoder_unref (GstH264Encoder * encoder)
85 g_object_unref (encoder);
88 void gst_h264_encoder_set_es_flag(GstH264Encoder* encoder, gboolean es);
93 #endif /*_GST_H264_ENCODER_H_ */