@@ -2187,6 +2187,28 @@ static int bcm2835_codec_s_ctrl(struct v4l2_ctrl *ctrl)
2187
2187
ret = bcm2835_codec_set_level_profile (ctx , ctrl );
2188
2188
break ;
2189
2189
2190
+ case V4L2_CID_MPEG_VIDEO_H264_MIN_QP :
2191
+ if (!ctx -> component )
2192
+ break ;
2193
+
2194
+ ret = vchiq_mmal_port_parameter_set (ctx -> dev -> instance ,
2195
+ & ctx -> component -> output [0 ],
2196
+ MMAL_PARAMETER_VIDEO_ENCODE_MIN_QUANT ,
2197
+ & ctrl -> val ,
2198
+ sizeof (ctrl -> val ));
2199
+ break ;
2200
+
2201
+ case V4L2_CID_MPEG_VIDEO_H264_MAX_QP :
2202
+ if (!ctx -> component )
2203
+ break ;
2204
+
2205
+ ret = vchiq_mmal_port_parameter_set (ctx -> dev -> instance ,
2206
+ & ctx -> component -> output [0 ],
2207
+ MMAL_PARAMETER_VIDEO_ENCODE_MAX_QUANT ,
2208
+ & ctrl -> val ,
2209
+ sizeof (ctrl -> val ));
2210
+ break ;
2211
+
2190
2212
case V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME : {
2191
2213
u32 mmal_bool = 1 ;
2192
2214
@@ -3111,7 +3133,7 @@ static int bcm2835_codec_open(struct file *file)
3111
3133
case ENCODE :
3112
3134
{
3113
3135
/* Encode controls */
3114
- v4l2_ctrl_handler_init (hdl , 9 );
3136
+ v4l2_ctrl_handler_init (hdl , 11 );
3115
3137
3116
3138
v4l2_ctrl_new_std_menu (hdl , & bcm2835_codec_ctrl_ops ,
3117
3139
V4L2_CID_MPEG_VIDEO_BITRATE_MODE ,
@@ -3159,6 +3181,14 @@ static int bcm2835_codec_open(struct file *file)
3159
3181
BIT (V4L2_MPEG_VIDEO_H264_PROFILE_MAIN ) |
3160
3182
BIT (V4L2_MPEG_VIDEO_H264_PROFILE_HIGH )),
3161
3183
V4L2_MPEG_VIDEO_H264_PROFILE_HIGH );
3184
+ v4l2_ctrl_new_std (hdl , & bcm2835_codec_ctrl_ops ,
3185
+ V4L2_CID_MPEG_VIDEO_H264_MIN_QP ,
3186
+ 0 , 51 ,
3187
+ 1 , 20 );
3188
+ v4l2_ctrl_new_std (hdl , & bcm2835_codec_ctrl_ops ,
3189
+ V4L2_CID_MPEG_VIDEO_H264_MAX_QP ,
3190
+ 0 , 51 ,
3191
+ 1 , 51 );
3162
3192
v4l2_ctrl_new_std (hdl , & bcm2835_codec_ctrl_ops ,
3163
3193
V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME ,
3164
3194
0 , 0 , 0 , 0 );
0 commit comments