diff options
author | Andy Walls <awalls@radix.net> | 2008-12-12 14:24:04 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2008-12-30 06:38:32 -0500 |
commit | dd073434b5285121007860914a004320d644ee7e (patch) | |
tree | 8ead658f43d30b68c07bea8b8f868835da7e5331 /drivers/media/video/cx18/cx18-streams.c | |
parent | abb096de82f6f920a06ca935f76925261e66b556 (diff) |
V4L/DVB (9805): cx18: Port fix for raw/sliced VBI mixup from ivtv and cx25840
This is a port of the fixes Hans Verkuil made for ivtv/cx25840:
The service_set field was used to determine whether raw or sliced VBI was
desired. This is incorrect since it is perfectly valid to select sliced VBI
with a service_set of 0.
Instead the driver should check on VIDIOC_S_FMT whether the type
field matches the raw or sliced VBI type.
Updated the cx18 driver accordingly, including an additional check in
cx18_start_v4l2_encode_stream() that didn't exist in ivtv.
Signed-off-by: Andy Walls <awalls@radix.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/cx18/cx18-streams.c')
-rw-r--r-- | drivers/media/video/cx18/cx18-streams.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/media/video/cx18/cx18-streams.c b/drivers/media/video/cx18/cx18-streams.c index 9ead4591b1d2..c87cd5369a4f 100644 --- a/drivers/media/video/cx18/cx18-streams.c +++ b/drivers/media/video/cx18/cx18-streams.c | |||
@@ -340,7 +340,7 @@ void cx18_streams_cleanup(struct cx18 *cx, int unregister) | |||
340 | static void cx18_vbi_setup(struct cx18_stream *s) | 340 | static void cx18_vbi_setup(struct cx18_stream *s) |
341 | { | 341 | { |
342 | struct cx18 *cx = s->cx; | 342 | struct cx18 *cx = s->cx; |
343 | int raw = cx->vbi.sliced_in->service_set == 0; | 343 | int raw = cx18_raw_vbi(cx); |
344 | u32 data[CX2341X_MBOX_MAX_DATA]; | 344 | u32 data[CX2341X_MBOX_MAX_DATA]; |
345 | int lines; | 345 | int lines; |
346 | 346 | ||
@@ -471,8 +471,8 @@ int cx18_start_v4l2_encode_stream(struct cx18_stream *s) | |||
471 | captype = CAPTURE_CHANNEL_TYPE_PCM; | 471 | captype = CAPTURE_CHANNEL_TYPE_PCM; |
472 | break; | 472 | break; |
473 | case CX18_ENC_STREAM_TYPE_VBI: | 473 | case CX18_ENC_STREAM_TYPE_VBI: |
474 | captype = cx->vbi.sliced_in->service_set ? | 474 | captype = cx18_raw_vbi(cx) ? |
475 | CAPTURE_CHANNEL_TYPE_SLICED_VBI : CAPTURE_CHANNEL_TYPE_VBI; | 475 | CAPTURE_CHANNEL_TYPE_VBI : CAPTURE_CHANNEL_TYPE_SLICED_VBI; |
476 | cx->vbi.frame = 0; | 476 | cx->vbi.frame = 0; |
477 | cx->vbi.inserted_frame = 0; | 477 | cx->vbi.inserted_frame = 0; |
478 | memset(cx->vbi.sliced_mpeg_size, | 478 | memset(cx->vbi.sliced_mpeg_size, |