提交 00528d9c 编写于 作者: M Mike Isely 提交者: Mauro Carvalho Chehab

V4L/DVB (8176): pvrusb2: Update video_gop_size

When switching video standard, ensure that video GOP size remains
appropriately configured.
Signed-off-by: NMike Isely <isely@pobox.com>
Signed-off-by: NMauro Carvalho Chehab <mchehab@infradead.org>
上级 ab062fe3
...@@ -2456,18 +2456,35 @@ static int pvr2_hdw_commit_execute(struct pvr2_hdw *hdw) ...@@ -2456,18 +2456,35 @@ static int pvr2_hdw_commit_execute(struct pvr2_hdw *hdw)
/* Handle some required side effects when the video standard is /* Handle some required side effects when the video standard is
changed.... */ changed.... */
if (hdw->std_dirty) { if (hdw->std_dirty) {
/* Rewrite the vertical resolution to be appropriate to the
video standard that has been selected. */
int nvres; int nvres;
int gop_size;
if (hdw->std_mask_cur & V4L2_STD_525_60) { if (hdw->std_mask_cur & V4L2_STD_525_60) {
nvres = 480; nvres = 480;
gop_size = 15;
} else { } else {
nvres = 576; nvres = 576;
gop_size = 12;
} }
/* Rewrite the vertical resolution to be appropriate to the
video standard that has been selected. */
if (nvres != hdw->res_ver_val) { if (nvres != hdw->res_ver_val) {
hdw->res_ver_val = nvres; hdw->res_ver_val = nvres;
hdw->res_ver_dirty = !0; hdw->res_ver_dirty = !0;
} }
/* Rewrite the GOP size to be appropriate to the video
standard that has been selected. */
if (gop_size != hdw->enc_ctl_state.video_gop_size) {
struct v4l2_ext_controls cs;
struct v4l2_ext_control c1;
memset(&cs, 0, sizeof(cs));
memset(&c1, 0, sizeof(c1));
cs.controls = &c1;
cs.count = 1;
c1.id = V4L2_CID_MPEG_VIDEO_GOP_SIZE;
c1.value = gop_size;
cx2341x_ext_ctrls(&hdw->enc_ctl_state, 0, &cs,
VIDIOC_S_EXT_CTRLS);
}
} }
if (hdw->input_dirty && hdw->state_pathway_ok && if (hdw->input_dirty && hdw->state_pathway_ok &&
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册