diff options
author | Hans Verkuil <hverkuil@xs4all.nl> | 2006-10-07 21:22:10 +0200 |
---|---|---|
committer | Hans Verkuil <hverkuil@xs4all.nl> | 2006-10-07 21:22:10 +0200 |
commit | 71c8df049b0cb2e3416560f7bcfaebc5cd9b8060 (patch) | |
tree | 9ce70910084375fad06eb7ae8560d6e9c8a04201 /linux/drivers/media/video/cx25840 | |
parent | 11255722295705ec801399ca48c8a36f3aa8fffe (diff) | |
download | mediapointer-dvb-s2-71c8df049b0cb2e3416560f7bcfaebc5cd9b8060.tar.gz mediapointer-dvb-s2-71c8df049b0cb2e3416560f7bcfaebc5cd9b8060.tar.bz2 |
Fix VIDIOC_G_FMT for NTSC in cx25840.
From: Hans Verkuil <hverkuil@xs4all.nl>
VIDIOC_G_FMT returned the sliced VBI types in the wrong lines for NTSC
(three lines too low).
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Diffstat (limited to 'linux/drivers/media/video/cx25840')
-rw-r--r-- | linux/drivers/media/video/cx25840/cx25840-vbi.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/linux/drivers/media/video/cx25840/cx25840-vbi.c b/linux/drivers/media/video/cx25840/cx25840-vbi.c index 4b6417fe8..f78f8cd2d 100644 --- a/linux/drivers/media/video/cx25840/cx25840-vbi.c +++ b/linux/drivers/media/video/cx25840/cx25840-vbi.c @@ -236,6 +236,7 @@ int cx25840_vbi(struct i2c_client *client, unsigned int cmd, void *arg) 0, 0, V4L2_SLICED_VPS, 0, 0, /* 9 */ 0, 0, 0, 0 }; + int is_pal = !(cx25840_get_v4lstd(client) & V4L2_STD_525_60); int i; fmt = arg; @@ -247,13 +248,25 @@ int cx25840_vbi(struct i2c_client *client, unsigned int cmd, void *arg) if ((cx25840_read(client, 0x404) & 0x10) == 0) break; - for (i = 7; i <= 23; i++) { - u8 v = cx25840_read(client, 0x424 + i - 7); + if (is_pal) { + for (i = 7; i <= 23; i++) { + u8 v = cx25840_read(client, 0x424 + i - 7); + + svbi->service_lines[0][i] = lcr2vbi[v >> 4]; + svbi->service_lines[1][i] = lcr2vbi[v & 0xf]; + svbi->service_set |= + svbi->service_lines[0][i] | svbi->service_lines[1][i]; + } + } + else { + for (i = 10; i <= 21; i++) { + u8 v = cx25840_read(client, 0x424 + i - 10); - svbi->service_lines[0][i] = lcr2vbi[v >> 4]; - svbi->service_lines[1][i] = lcr2vbi[v & 0xf]; - svbi->service_set |= - svbi->service_lines[0][i] | svbi->service_lines[1][i]; + svbi->service_lines[0][i] = lcr2vbi[v >> 4]; + svbi->service_lines[1][i] = lcr2vbi[v & 0xf]; + svbi->service_set |= + svbi->service_lines[0][i] | svbi->service_lines[1][i]; + } } break; } |