Lines Matching +full:video +full:- +full:encoder
3 * Author: Jeffy Chen <jeffy.chen@rock-chips.com>
18 * Boston, MA 02110-1301, USA.
55 #define DEFAULT_PROP_QP_MAX_STEP -1 /* Auto */
74 GST_STATIC_CAPS ("video/x-h265, "
76 "stream-format = (string) { byte-stream }, "
84 GST_STATIC_CAPS ("video/x-raw,"
92 GstVideoEncoder *encoder = GST_VIDEO_ENCODER (object); in gst_mpp_h265_enc_set_property() local
93 GstMppH265Enc *self = GST_MPP_H265_ENC (encoder); in gst_mpp_h265_enc_set_property()
94 GstMppEnc *mppenc = GST_MPP_ENC (encoder); in gst_mpp_h265_enc_set_property()
99 if (self->qp_init == qp_init) in gst_mpp_h265_enc_set_property()
102 self->qp_init = qp_init; in gst_mpp_h265_enc_set_property()
107 if (self->qp_min == qp_min) in gst_mpp_h265_enc_set_property()
110 self->qp_min = qp_min; in gst_mpp_h265_enc_set_property()
115 if (self->qp_max == qp_max) in gst_mpp_h265_enc_set_property()
118 self->qp_max = qp_max; in gst_mpp_h265_enc_set_property()
123 if (self->qp_max_step == qp_max_step) in gst_mpp_h265_enc_set_property()
126 self->qp_max_step = qp_max_step; in gst_mpp_h265_enc_set_property()
134 mppenc->prop_dirty = TRUE; in gst_mpp_h265_enc_set_property()
141 GstVideoEncoder *encoder = GST_VIDEO_ENCODER (object); in gst_mpp_h265_enc_get_property() local
142 GstMppH265Enc *self = GST_MPP_H265_ENC (encoder); in gst_mpp_h265_enc_get_property()
146 g_value_set_uint (value, self->qp_init); in gst_mpp_h265_enc_get_property()
149 g_value_set_uint (value, self->qp_min); in gst_mpp_h265_enc_get_property()
152 g_value_set_uint (value, self->qp_max); in gst_mpp_h265_enc_get_property()
155 g_value_set_int (value, self->qp_max_step); in gst_mpp_h265_enc_get_property()
164 gst_mpp_h265_enc_set_src_caps (GstVideoEncoder * encoder) in gst_mpp_h265_enc_set_src_caps() argument
169 caps = gst_caps_new_empty_simple ("video/x-h265"); in gst_mpp_h265_enc_set_src_caps()
172 gst_structure_set (structure, "stream-format", in gst_mpp_h265_enc_set_src_caps()
173 G_TYPE_STRING, "byte-stream", NULL); in gst_mpp_h265_enc_set_src_caps()
176 return gst_mpp_enc_set_src_caps (encoder, caps); in gst_mpp_h265_enc_set_src_caps()
180 gst_mpp_h265_enc_apply_properties (GstVideoEncoder * encoder) in gst_mpp_h265_enc_apply_properties() argument
182 GstMppH265Enc *self = GST_MPP_H265_ENC (encoder); in gst_mpp_h265_enc_apply_properties()
183 GstMppEnc *mppenc = GST_MPP_ENC (encoder); in gst_mpp_h265_enc_apply_properties()
185 if (G_LIKELY (!mppenc->prop_dirty)) in gst_mpp_h265_enc_apply_properties()
188 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h265:qp_init", self->qp_init); in gst_mpp_h265_enc_apply_properties()
190 if (mppenc->rc_mode == MPP_ENC_RC_MODE_FIXQP) { in gst_mpp_h265_enc_apply_properties()
191 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h265:qp_max", self->qp_init); in gst_mpp_h265_enc_apply_properties()
192 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h265:qp_min", self->qp_init); in gst_mpp_h265_enc_apply_properties()
193 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h265:qp_step", 0); in gst_mpp_h265_enc_apply_properties()
194 } else if (mppenc->rc_mode == MPP_ENC_RC_MODE_CBR) { in gst_mpp_h265_enc_apply_properties()
196 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h265:qp_max", in gst_mpp_h265_enc_apply_properties()
197 self->qp_max ? self->qp_max : 28); in gst_mpp_h265_enc_apply_properties()
198 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h265:qp_min", in gst_mpp_h265_enc_apply_properties()
199 self->qp_min ? self->qp_min : 4); in gst_mpp_h265_enc_apply_properties()
200 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h265:qp_step", in gst_mpp_h265_enc_apply_properties()
201 self->qp_max_step >= 0 ? self->qp_max_step : 8); in gst_mpp_h265_enc_apply_properties()
202 } else if (mppenc->rc_mode == MPP_ENC_RC_MODE_VBR) { in gst_mpp_h265_enc_apply_properties()
203 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h265:qp_max", in gst_mpp_h265_enc_apply_properties()
204 self->qp_max ? self->qp_max : 40); in gst_mpp_h265_enc_apply_properties()
205 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h265:qp_min", in gst_mpp_h265_enc_apply_properties()
206 self->qp_min ? self->qp_min : 12); in gst_mpp_h265_enc_apply_properties()
207 mpp_enc_cfg_set_s32 (mppenc->mpp_cfg, "h265:qp_step", in gst_mpp_h265_enc_apply_properties()
208 self->qp_max_step >= 0 ? self->qp_max_step : 8); in gst_mpp_h265_enc_apply_properties()
211 if (!gst_mpp_enc_apply_properties (encoder)) in gst_mpp_h265_enc_apply_properties()
214 return gst_mpp_h265_enc_set_src_caps (encoder); in gst_mpp_h265_enc_apply_properties()
218 gst_mpp_h265_enc_set_format (GstVideoEncoder * encoder, in gst_mpp_h265_enc_set_format() argument
223 if (!pclass->set_format (encoder, state)) in gst_mpp_h265_enc_set_format()
226 return gst_mpp_h265_enc_apply_properties (encoder); in gst_mpp_h265_enc_set_format()
230 gst_mpp_h265_enc_handle_frame (GstVideoEncoder * encoder, in gst_mpp_h265_enc_handle_frame() argument
235 if (G_UNLIKELY (!gst_mpp_h265_enc_apply_properties (encoder))) { in gst_mpp_h265_enc_handle_frame()
240 return pclass->handle_frame (encoder, frame); in gst_mpp_h265_enc_handle_frame()
246 self->parent.mpp_type = MPP_VIDEO_CodingHEVC; in gst_mpp_h265_enc_init()
248 self->qp_init = DEFAULT_PROP_QP_INIT; in gst_mpp_h265_enc_init()
249 self->qp_min = DEFAULT_PROP_QP_MIN; in gst_mpp_h265_enc_init()
250 self->qp_max = DEFAULT_PROP_QP_MAX; in gst_mpp_h265_enc_init()
251 self->qp_max_step = DEFAULT_PROP_QP_MAX_STEP; in gst_mpp_h265_enc_init()
262 "MPP H265 encoder"); in gst_mpp_h265_enc_class_init()
264 encoder_class->set_format = GST_DEBUG_FUNCPTR (gst_mpp_h265_enc_set_format); in gst_mpp_h265_enc_class_init()
265 encoder_class->handle_frame = in gst_mpp_h265_enc_class_init()
268 gobject_class->set_property = in gst_mpp_h265_enc_class_init()
270 gobject_class->get_property = in gst_mpp_h265_enc_class_init()
274 g_param_spec_uint ("qp-init", "Initial QP", in gst_mpp_h265_enc_class_init()
280 g_param_spec_uint ("qp-min", "Min QP", in gst_mpp_h265_enc_class_init()
285 g_param_spec_uint ("qp-max", "Max QP", in gst_mpp_h265_enc_class_init()
290 g_param_spec_int ("qp-max-step", "Max QP step", in gst_mpp_h265_enc_class_init()
291 "Max delta QP step between two frames (-1 = default)", -1, 51, in gst_mpp_h265_enc_class_init()
302 "Rockchip Mpp H265 Encoder", "Codec/Encoder/Video", in gst_mpp_h265_enc_class_init()
303 "Encode video streams via Rockchip Mpp", in gst_mpp_h265_enc_class_init()
304 "Jeffy Chen <jeffy.chen@rock-chips.com>"); in gst_mpp_h265_enc_class_init()