Lines Matching +full:video +full:- +full:encoder
3 * Author: Randy Li <randy.li@rock-chips.com>
6 * Author: Jeffy Chen <jeffy.chen@rock-chips.com>
21 * Boston, MA 02110-1301, USA.
70 #define DEFAULT_PROP_QP_MAX_STEP -1 /* Auto */
91 GST_STATIC_CAPS ("video/x-h264, "
93 "stream-format = (string) { byte-stream }, "
101 GST_STATIC_CAPS ("video/x-raw,"
162 GstVideoEncoder *encoder = GST_VIDEO_ENCODER (object); in gst_mpp_h264_enc_set_property() local
163 GstMppH264Enc *self = GST_MPP_H264_ENC (encoder); in gst_mpp_h264_enc_set_property()
164 GstMppEnc *mppenc = GST_MPP_ENC (encoder); in gst_mpp_h264_enc_set_property()
169 if (self->profile == profile) in gst_mpp_h264_enc_set_property()
172 self->profile = profile; in gst_mpp_h264_enc_set_property()
177 if (self->level == level) in gst_mpp_h264_enc_set_property()
180 self->level = level; in gst_mpp_h264_enc_set_property()
185 if (self->qp_init == qp_init) in gst_mpp_h264_enc_set_property()
188 self->qp_init = qp_init; in gst_mpp_h264_enc_set_property()
193 if (self->qp_min == qp_min) in gst_mpp_h264_enc_set_property()
196 self->qp_min = qp_min; in gst_mpp_h264_enc_set_property()
201 if (self->qp_max == qp_max) in gst_mpp_h264_enc_set_property()
204 self->qp_max = qp_max; in gst_mpp_h264_enc_set_property()
209 if (self->qp_max_step == qp_max_step) in gst_mpp_h264_enc_set_property()
212 self->qp_max_step = qp_max_step; in gst_mpp_h264_enc_set_property()
220 mppenc->prop_dirty = TRUE; in gst_mpp_h264_enc_set_property()
227 GstVideoEncoder *encoder = GST_VIDEO_ENCODER (object); in gst_mpp_h264_enc_get_property() local
228 GstMppH264Enc *self = GST_MPP_H264_ENC (encoder); in gst_mpp_h264_enc_get_property()
232 g_value_set_enum (value, self->profile); in gst_mpp_h264_enc_get_property()
235 g_value_set_enum (value, self->level); in gst_mpp_h264_enc_get_property()
238 g_value_set_uint (value, self->qp_init); in gst_mpp_h264_enc_get_property()
241 g_value_set_uint (value, self->qp_min); in gst_mpp_h264_enc_get_property()
244 g_value_set_uint (value, self->qp_max); in gst_mpp_h264_enc_get_property()
247 g_value_set_int (value, self->qp_max_step); in gst_mpp_h264_enc_get_property()
256 gst_mpp_h264_enc_set_src_caps (GstVideoEncoder * encoder) in gst_mpp_h264_enc_set_src_caps() argument
258 GstMppH264Enc *self = GST_MPP_H264_ENC (encoder); in gst_mpp_h264_enc_set_src_caps()
263 caps = gst_caps_new_empty_simple ("video/x-h264"); in gst_mpp_h264_enc_set_src_caps()
266 gst_structure_set (structure, "stream-format", in gst_mpp_h264_enc_set_src_caps()
267 G_TYPE_STRING, "byte-stream", NULL); in gst_mpp_h264_enc_set_src_caps()
270 string = g_enum_to_string (GST_TYPE_MPP_H264_ENC_PROFILE, self->profile); in gst_mpp_h264_enc_set_src_caps()
274 string = g_enum_to_string (GST_TYPE_MPP_H264_ENC_LEVEL, self->level); in gst_mpp_h264_enc_set_src_caps()
278 return gst_mpp_enc_set_src_caps (encoder, caps); in gst_mpp_h264_enc_set_src_caps()
282 gst_mpp_h264_enc_apply_properties (GstVideoEncoder * encoder) in gst_mpp_h264_enc_apply_properties() argument
284 GstMppH264Enc *self = GST_MPP_H264_ENC (encoder); in gst_mpp_h264_enc_apply_properties()
285 GstMppEnc *mppenc = GST_MPP_ENC (encoder); in gst_mpp_h264_enc_apply_properties()
287 if (G_LIKELY (!mppenc->prop_dirty)) in gst_mpp_h264_enc_apply_properties()
290 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h264:qp_init", self->qp_init); in gst_mpp_h264_enc_apply_properties()
292 if (mppenc->rc_mode == MPP_ENC_RC_MODE_FIXQP) { in gst_mpp_h264_enc_apply_properties()
293 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h264:qp_max", self->qp_init); in gst_mpp_h264_enc_apply_properties()
294 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h264:qp_min", self->qp_init); in gst_mpp_h264_enc_apply_properties()
295 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h264:qp_step", 0); in gst_mpp_h264_enc_apply_properties()
296 } else if (mppenc->rc_mode == MPP_ENC_RC_MODE_CBR) { in gst_mpp_h264_enc_apply_properties()
298 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h264:qp_max", in gst_mpp_h264_enc_apply_properties()
299 self->qp_max ? self->qp_max : 28); in gst_mpp_h264_enc_apply_properties()
300 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h264:qp_min", in gst_mpp_h264_enc_apply_properties()
301 self->qp_min ? self->qp_min : 4); in gst_mpp_h264_enc_apply_properties()
302 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h264:qp_step", in gst_mpp_h264_enc_apply_properties()
303 self->qp_max_step >= 0 ? self->qp_max_step : 8); in gst_mpp_h264_enc_apply_properties()
304 } else if (mppenc->rc_mode == MPP_ENC_RC_MODE_VBR) { in gst_mpp_h264_enc_apply_properties()
305 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h264:qp_max", in gst_mpp_h264_enc_apply_properties()
306 self->qp_max ? self->qp_max : 40); in gst_mpp_h264_enc_apply_properties()
307 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h264:qp_min", in gst_mpp_h264_enc_apply_properties()
308 self->qp_min ? self->qp_min : 12); in gst_mpp_h264_enc_apply_properties()
309 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h264:qp_step", in gst_mpp_h264_enc_apply_properties()
310 self->qp_max_step >= 0 ? self->qp_max_step : 8); in gst_mpp_h264_enc_apply_properties()
313 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h264:profile", self->profile); in gst_mpp_h264_enc_apply_properties()
314 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h264:level", self->level); in gst_mpp_h264_enc_apply_properties()
316 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h264:trans8x8", in gst_mpp_h264_enc_apply_properties()
317 self->profile == GST_MPP_H264_PROFILE_HIGH); in gst_mpp_h264_enc_apply_properties()
318 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h264:cabac_en", in gst_mpp_h264_enc_apply_properties()
319 self->profile != GST_MPP_H264_PROFILE_BASELINE); in gst_mpp_h264_enc_apply_properties()
320 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h264:cabac_idc", 0); in gst_mpp_h264_enc_apply_properties()
322 if (!gst_mpp_enc_apply_properties (encoder)) in gst_mpp_h264_enc_apply_properties()
325 return gst_mpp_h264_enc_set_src_caps (encoder); in gst_mpp_h264_enc_apply_properties()
329 gst_mpp_h264_enc_set_format (GstVideoEncoder * encoder, in gst_mpp_h264_enc_set_format() argument
334 if (!pclass->set_format (encoder, state)) in gst_mpp_h264_enc_set_format()
337 return gst_mpp_h264_enc_apply_properties (encoder); in gst_mpp_h264_enc_set_format()
341 gst_mpp_h264_enc_handle_frame (GstVideoEncoder * encoder, in gst_mpp_h264_enc_handle_frame() argument
346 if (G_UNLIKELY (!gst_mpp_h264_enc_apply_properties (encoder))) { in gst_mpp_h264_enc_handle_frame()
351 return pclass->handle_frame (encoder, frame); in gst_mpp_h264_enc_handle_frame()
357 self->parent.mpp_type = MPP_VIDEO_CodingAVC; in gst_mpp_h264_enc_init()
359 self->profile = DEFAULT_PROP_PROFILE; in gst_mpp_h264_enc_init()
360 self->level = DEFAULT_PROP_LEVEL; in gst_mpp_h264_enc_init()
361 self->qp_init = DEFAULT_PROP_QP_INIT; in gst_mpp_h264_enc_init()
362 self->qp_min = DEFAULT_PROP_QP_MIN; in gst_mpp_h264_enc_init()
363 self->qp_max = DEFAULT_PROP_QP_MAX; in gst_mpp_h264_enc_init()
364 self->qp_max_step = DEFAULT_PROP_QP_MAX_STEP; in gst_mpp_h264_enc_init()
375 "MPP H264 encoder"); in gst_mpp_h264_enc_class_init()
377 encoder_class->set_format = GST_DEBUG_FUNCPTR (gst_mpp_h264_enc_set_format); in gst_mpp_h264_enc_class_init()
378 encoder_class->handle_frame = in gst_mpp_h264_enc_class_init()
381 gobject_class->set_property = in gst_mpp_h264_enc_class_init()
383 gobject_class->get_property = in gst_mpp_h264_enc_class_init()
399 g_param_spec_uint ("qp-init", "Initial QP", in gst_mpp_h264_enc_class_init()
405 g_param_spec_uint ("qp-min", "Min QP", in gst_mpp_h264_enc_class_init()
410 g_param_spec_uint ("qp-max", "Max QP", in gst_mpp_h264_enc_class_init()
415 g_param_spec_int ("qp-max-step", "Max QP step", in gst_mpp_h264_enc_class_init()
416 "Max delta QP step between two frames (-1 = default)", -1, 51, in gst_mpp_h264_enc_class_init()
427 "Rockchip Mpp H264 Encoder", "Codec/Encoder/Video", in gst_mpp_h264_enc_class_init()
428 "Encode video streams via Rockchip Mpp", in gst_mpp_h264_enc_class_init()
429 "Randy Li <randy.li@rock-chips.com>, " in gst_mpp_h264_enc_class_init()
430 "Jeffy Chen <jeffy.chen@rock-chips.com>"); in gst_mpp_h264_enc_class_init()