A PULL request was issued to the linux-media mailing list tonight for the NTSC closed captioning support:
http://kernellabs.com/hg/~dheitmueller/em28xx-vbi3
So if you have a em2880 based device such as the Haupauge HVR-950, a PCTV HD Pro 800e, ATI TV Wonder 600 USB, or any of the em2860 based devices such as the KWorld 2800d, then you now magically have closed captioning support!
The raw VBI support is currently specific to NTSC, but PAL support will come soon. The work also exposed some bugs in zvbi, as well as prompted me to realize that tvtime’s closed captioning support is completely broken if your VBI capture buffer width doesn’t happen to be 2048. Now that I actually have the VBI support working on one of my cards, I’m hoping to go back and do some fixes on the userland apps.
Special thanks go out to EyeMagnet Limited for sponsoring this work.
Hi Devin,
Thanks a lot for adding zvbi-ntsc-cc support!!
Do you know if Hauppauge WinTV HVR 950Q is supported?
http://www.newegg.com/Product/Product.aspx?Item=N82E16815116034&cm_re=hauppauge_wintv-hvr-_-15-116-034-_-Product
Cheers,
Dave
Hello Dave,
I did the analog support for the HVR-950Q as well, and can tell you definitively that VBI is not currently implemented. The 950q is not based on em28xx but rather the Auvitek au0828 bridge, and I didn’t have any specs on how the VBI support works on that chip.
Devin
Ah, good to know! What about the HVR-950 (http://www.newegg.com/Product/Product.aspx?Item=N82E16815116017&cm_re=hauppauge_wintv-hvr-_-15-116-017-_-Product) — does that also have the Auvitek bridge?
Do you post an updated em88xx-cards.c somewhere, or should I look upstream? Do you expect all em88xx devices to support raw zvbi-ntsc-cc with the code you just submitted?
Cheers,
Dave
Yes, the VBI support will work with the HVR-950 (in fact, that’s the card I did the original development with).
The support works with all em28xx cards that have an em2881/2/3 or em2860. It’s been tested primarily with the HVR-950 and the KWorld 2800D, but it should work the others as well.
Cheers,
Devin
Hi,
You mentioned that there were some bugs in zvbi, are those fixed in cvs? I ask because I have a KWorld 2800D with the newest em28xx drivers from the v4l-dvb source tree. When I attempt zvbi-ntsc-cc -c -d /dev/vbi0 I get a segfault, and I’m not sure if it’s due to zvbi. I’m using version 2.33, Thanks
Hello Tim,
Add “-v” to the command line. There is a bug in zvbi-cc-ntsc where if you don’t have it in verbose mode, the program will segfault as soon as the first logging event occurs (it’s a NULL pointer dereference).
The driver should work very well with the 2800d and zvbi-ntsc-cc, given that is the board and application I did the original development with. If you’re looking for a graphical application, the KernelLabs version of tvtime now supports NTSC closed captions with the em28xx driver (see http://www.kernellabs.com/blog/?cat=49 for more info).
Devin
Thanks so much for your response! Unfortunately, while the segfault is gone it’s still not working. I pasted the output from zvbi-ntsc-cc below (sorry it’s so long, but there is no way to attach files): Thanks for any help. I did a stock Gentoo install with the v4l-dvb source tree.
Try to open V4L2 0.20 VBI device, libzvbi interface rev.
Opened /dev/vbi0
libzvbi:io-v4l2k:vbi_capture_v4l2k_new: Try to open V4L2 2.6 VBI device, libzvbi interface rev.
libzvbi:io-v4l2k:vbi_capture_v4l2k_new: Opened /dev/vbi0.
libzvbi:io-v4l2k:vbi_capture_v4l2k_new: /dev/vbi0 (EM2860/SAA711X Reference Design) is a v4l2 vbi device,
driver em28xx, version 0x00000102.
libzvbi:io-v4l2k:vbi_capture_v4l2k_new: Using streaming interface.
libzvbi:io-v4l2k:v4l2_get_videostd: Current scanning system is 625.
libzvbi:io-v4l2k:v4l2_update_services: Querying current vbi parameters…
libzvbi:io-v4l2k:v4l2_update_services: …success.
libzvbi:print_vfmt: VBI capture parameters supported:
libzvbi:io-v4l2k:v4l2_update_services: Attempt to set vbi capture parameters.
libzvbi:sampling_par:_vbi_sampling_par_from_services_log: Service 0x00000020 (Closed Caption 525, field 1) requires videostd_set 0x2, have 0x0.
libzvbi:sampling_par:_vbi_sampling_par_from_services_log: Service 0x00000040 (Closed Caption 525, field 2) requires videostd_set 0x2, have 0x0.
libzvbi:io-v4l2k:v4l2_update_services: Will capture services 0x00000000, added 0x0 commit=1.
libzvbi:io-v4l2k:vbi_capture_v4l2k_new: Failed with errno 22, errmsg ‘Sorry, /dev/vbi0 (EM2860/SAA711X Reference Design) cannot capture any of the requested data services with scanning 625.’.
Cannot capture vbi data with v4l2 interface:
Sorry, /dev/vbi0 (EM2860/SAA711X Reference Design) cannot capture any of the requested data services with scanning 625.
Will try v4l.
libzvbi: Try to open v4l vbi device, libzvbi interface rev.
libzvbi: Opened /dev/vbi0
libzvbi: Driver name ‘EM2860/SAA711X Reference Design’
libzvbi: /dev/vbi0 (EM2860/SAA711X Reference Design) is a v4l vbi device
libzvbi: Hinted video standard 525, guessed 525
libzvbi: Driver supports VIDIOCGVBIFMT, guessed videostandard 625
VBI capture parameters supported: format 0000000c, 13500000 Hz, 720 bpl, F1 6+18, F2 318+18, flags 00000000
libzvbi: Driver does not support VIDIOCSVBIFMT
VBI capture parameters granted: format 0000000c, 13500000 Hz, 720 bpl, F1 6+18, F2 318+18, flags 00000000
libzvbi: Accept current vbi parameters
libzvbi: Nyquist check passed
libzvbi: Request decoding of services 0x00000060, strict level 1
libzvbi: Will capture services 0x00000000, added 0x0 commit:1
Cannot capture vbi data with v4l interface:
Sorry, /dev/vbi0 (EM2860/SAA711X Reference Design) cannot capture any of the requested data services.
actually after I did a “v4lctl setnorm NTSC” I no longer get the error messages (turns out PAL was being used), but now the only output is “VBI Read Timeout (Ignored)” I really appreciate any help, seems like I’m so close to getting it to work, thanks
Hi Tim,
You had to manually set the norm to NTSC? Are you not running a TV application in parallel? If not, the V4L streaming probably hasn’t been started (simply doing an open and read will not explicitly tell the driver to start streaming).
As a test, run tvtime and in a separate window try running zvbi-ntsc-cc and see if it starts working.
Devin
Hi,
Thanks for the info, that was exactly the problem. I ran the streamer application from the xawtv package in one terminal, then zvbi-ntsc-cc in another terminal and there was success!