提交 2544bf2d 编写于 作者: V Valentin Zagura 提交者: Mauro Carvalho Chehab

V4L/DVB (3973): Cx88-blackbird: pause the encoder during frequency change

Added code to cx88-blackbird.c to treat the VIDIOC_S_FREQUENCY ioctl
to stop mpeg stream before changing the frequency and restart it after.
It seems that the mpeg stream needs to be paused while changing the
channel frequency, otherwise the mpeg encoder enters into a bad state,
producing artifacts.
Signed-off-by: NValentin Zagura <puthre@gmail.com>
Signed-off-by: NMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: NMauro Carvalho Chehab <mchehab@infradead.org>
上级 07f640f0
...@@ -1456,6 +1456,20 @@ static int mpeg_do_ioctl(struct inode *inode, struct file *file, ...@@ -1456,6 +1456,20 @@ static int mpeg_do_ioctl(struct inode *inode, struct file *file,
blackbird_set_params(dev, f); blackbird_set_params(dev, f);
return 0; return 0;
} }
case VIDIOC_S_FREQUENCY:
{
blackbird_api_cmd(fh->dev, CX2341X_ENC_STOP_CAPTURE, 3, 0,
BLACKBIRD_END_NOW,
BLACKBIRD_MPEG_CAPTURE,
BLACKBIRD_RAW_BITS_NONE);
cx88_do_ioctl( inode, file, 0, dev->core, cmd, arg, cx88_ioctl_hook );
blackbird_initialize_codec(dev);
cx88_set_scale(dev->core, dev->width, dev->height,
fh->mpegq.field);
return 0;
}
default: default:
return cx88_do_ioctl( inode, file, 0, dev->core, cmd, arg, cx88_ioctl_hook ); return cx88_do_ioctl( inode, file, 0, dev->core, cmd, arg, cx88_ioctl_hook );
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册