Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2544bf2d authored by Valentin Zagura's avatar Valentin Zagura Committed by Mauro Carvalho Chehab
Browse files

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: default avatarValentin Zagura <puthre@gmail.com>
Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 07f640f0
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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 );