mirror of
https://github.com/adulau/aha.git
synced 2024-12-30 12:46:17 +00:00
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: Valentin Zagura <puthre@gmail.com> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
07f640f0dd
commit
2544bf2d61
1 changed files with 14 additions and 0 deletions
|
@ -1456,6 +1456,20 @@ static int mpeg_do_ioctl(struct inode *inode, struct file *file,
|
|||
blackbird_set_params(dev, f);
|
||||
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:
|
||||
return cx88_do_ioctl( inode, file, 0, dev->core, cmd, arg, cx88_ioctl_hook );
|
||||
|
|
Loading…
Reference in a new issue