Hi, VBI (Closed Caption, CC) capturing never worked in NTSC mode with the cx88 driver. For a client I'd like to get these fixes into the kernel at the next opportunity. They were tested with libzvbi and a patched version of tvtime. Trent Piepho proposed the same fixes: > Yes, I found those bugs as well when I wrote a simple program to make > those pictures of line 21 data. For some reason, someone added a > " -1" to all the start lines that shouldn't be there (at least for > NTSC). The driver is also set to capture just 288*4 = 1152 pixels, > which isn't enough. 63.556 us * 28.636363 MHz = 1820 pixels - 220 > pixel offset = 1600 pixels. > > tvtime still doesn't work when these driver bugs are fixed. The VBI > code in tvtime is stupid, and doesn't check the VBI format _at all_. > It just assumes it will get what the bttv driver has historically > provided. After fixing tvtime, I was able to get it to decode captions > somewhat. Michael Signed-off-by: Michael H. Schimek <mschimek@xxxxxx>
diff -Nurpid v4l-dvb.orig/linux/drivers/media/video/cx88/cx88-core.c v4l-dvb/linux/drivers/media/video/cx88/cx88-core.c --- v4l-dvb.orig/linux/drivers/media/video/cx88/cx88-core.c Fri Apr 21 03:21:07 2006 +++ v4l-dvb/linux/drivers/media/video/cx88/cx88-core.c Tue May 9 01:16:09 2006 @@ -717,7 +717,7 @@ static unsigned int inline norm_htotal(s static unsigned int inline norm_vbipack(struct cx88_tvnorm *norm) { - return (norm->id & V4L2_STD_625_50) ? 511 : 288; + return (norm->id & V4L2_STD_625_50) ? 511 : 400; } int cx88_set_scale(struct cx88_core *core, unsigned int width, unsigned int height, diff -Nurpid v4l-dvb.orig/linux/drivers/media/video/cx88/cx88-vbi.c v4l-dvb/linux/drivers/media/video/cx88/cx88-vbi.c --- v4l-dvb.orig/linux/drivers/media/video/cx88/cx88-vbi.c Fri Apr 21 03:21:08 2006 +++ v4l-dvb/linux/drivers/media/video/cx88/cx88-vbi.c Tue May 9 01:15:28 2006 @@ -35,8 +35,8 @@ void cx8800_vbi_fmt(struct cx8800_dev *d if (dev->core->tvnorm->id & V4L2_STD_525_60) { /* ntsc */ f->fmt.vbi.sampling_rate = 28636363; - f->fmt.vbi.start[0] = 10 -1; - f->fmt.vbi.start[1] = 273 -1; + f->fmt.vbi.start[0] = 10; + f->fmt.vbi.start[1] = 273; } else if (dev->core->tvnorm->id & V4L2_STD_625_50) { /* pal */ diff -Nurpid v4l-dvb.orig/linux/drivers/media/video/cx88/cx88.h v4l-dvb/linux/drivers/media/video/cx88/cx88.h --- v4l-dvb.orig/linux/drivers/media/video/cx88/cx88.h Fri Apr 21 03:21:08 2006 +++ v4l-dvb/linux/drivers/media/video/cx88/cx88.h Tue May 9 01:16:57 2006 @@ -40,7 +40,7 @@ #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15) #include <linux/mutex.h> #endif -#define CX88_VERSION_CODE KERNEL_VERSION(0,0,5) +#define CX88_VERSION_CODE KERNEL_VERSION(0,0,6) #ifndef TRUE # define TRUE (1==1)
-- Unsubscribe mailto:video4linux-list-request@xxxxxxxxxx?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list