Hello all,
This issue has been lagging for years and I wanted to get some expert advice on debugging it. It seems I'm the only one with a cx8800 card that is having problems so I hope to take the challenge up and propose a solution to the maintainer.
So the software I'm using is GEM. It has v4l2 support, and works fine with my bt848 card. Problem is I can't get things working properly with my cx8800 cards.
First HW info:
lspci reports my tuner as:
00:0d.0 Multimedia video controller: Conexant CX23880/1/2/3 PCI Video and Audio Decoder (rev 05)
The card is branded as a Leadtek Winfast 2000XP Expert.
I'm sure the problem is with the v4l2 implementation in Gem as running the following command gives me perfect video on this card at 640x480:
mplayer tv:// -tv driver=v4l2:device=/dev/video0:input=1:norm=NTSC-M
(the output follows this message).
So the card is capable of 640x480.
If I run Gem on this card as 320x240 all works fine. (pictured in attachment 320x240.png)
As soon as I change the resolution to 640x480 I get the following errors repeated:
VIDIOCMCAPTURE1: Invalid argument VIDIOCMCAPTURE2: Invalid argument
And the image appears as in attachment 640x480.png
What should my steps for debugging be?
Is there dead-simple v4l2 example source (including output so I can confirm its working) I can test with and compare with Gem sources?
Any advice appreciated.
B. Bogart
-- Here is the mplayer output:
MPlayer dev-SVN-r26940 CPU: AMD Athlon(tm) 64 Processor 3200+ (Family: 15, Model: 47, Stepping: 0) CPUflags: MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 1 Compiled with runtime CPU detection. Can't open joystick device /dev/input/js0: No such file or directory Can't init input joystick mplayer: could not connect to socket mplayer: No such file or directory Failed to open LIRC support. You will not be able to use your remote control.
Playing tv://. TV file format detected. Selected driver: v4l2 name: Video 4 Linux 2 input author: Martin Olschewski olschewski@zpr.uni-koeln.de comment: first try, more to come ;-) Selected device: Leadtek Winfast 2000XP Expert Tuner cap: Tuner rxs: Capabilites: video capture VBI capture device tuner read/write streaming supported norms: 0 = PAL-BG; 1 = PAL-DK; 2 = PAL-I; 3 = PAL-M; 4 = PAL-N; 5 = PAL-Nc; 6 = PAL-60; 7 = NTSC-M; 8 = NTSC-M-JP; 9 = NTSC-443; 10 = SECAM-DK; 11 = SECAM-L; inputs: 0 = Television; 1 = Composite1; 2 = S-Video; Current input: 1 Current format: BGR24 v4l2: current audio mode is : MONO v4l2: ioctl set format failed: Invalid argument v4l2: ioctl set format failed: Invalid argument open: No such file or directory [MGA] Couldn't open: /dev/mga_vid open: No such file or directory [MGA] Couldn't open: /dev/mga_vid [VO_TDFXFB] Can't open /dev/fb0: No such file or directory. s3fb: can't open /dev/fb0: No such file or directory ========================================================================== Opening video decoder: [raw] RAW Uncompressed Video VDec: vo config request - 640 x 480 (preferred colorspace: Packed UYVY) VDec: using Packed UYVY as output csp (no 0) Movie-Aspect is undefined - no prescaling applied. VO: [xv] 640x480 => 640x480 Packed UYVY Selected video codec: [rawuyvy] vfm: raw (RAW UYVY) ========================================================================== Audio: no sound Starting playback... v4l2: 40 frames successfully processed, -39 frames dropped.
Exiting... (Quit)
Hey Johannes,
I've read through the v4l code in Gem and realized an important issue:
1. My previous post about resolution and problems with "VIDIOCMCAPTURE1: Invalid argument" messages was due to me using v4l1 not 2!
2. As best as I can tell, while using v4l2, my UYVY card does not work at all.
In the PD window I get:
video driver 0: video4linux2 video driver 1: ieee1394 for linux v4l2: wanted 6408, got 'RGB4' v4l2: GEM: pix_video: Opened video connection 0x12
STDERR gives me:
VIDIOC_DQBUF: stopping capture thread!: Resource temporarily unavailable
Resulting in an all black image.
I could not understand the reqFormat vs format stuff but I do know the card produces V4L2_PIX_FMT_UYVY video.
I inserted a few statements at line 450 of videoV4L2.cpp (attached)
These statements result in:
bbogart: fmt.fmt.pix.pixelformat = 876758866 bbogart: m_reqFormat = 6408 bbogart: GL_YCBCR_422_GEM = 34233 bbogart: GL_LUMINANCE = 6409 bbogart: GL_RGB= 6407 bbogart: V4L2_PIX_FMT_UYVY = 1498831189 bbogart: V4L2_PIX_FMT_SBGGR8 = 825770306 bbogart: V4L2_PIX_FMT_GREY = 1497715271 bbogart: V4L2_PIX_FMT_YUYV = 1448695129 bbogart: V4L2_PIX_FMT_Y41P = 1345401945 bbogart: V4L2_PIX_FMT_YVU420 = 842094169 bbogart: V4L2_PIX_FMT_YVU410 = 961893977 bbogart: V4L2_PIX_FMT_YUV422P = 1345466932 bbogart: V4L2_PIX_FMT_YUV411P = 1345401140 bbogart: V4L2_PIX_FMT_NV12 = 842094158
Ok, so 6408 is RGBA.
So I send the "colorspace YUV" message to pix_video.
Now I see:
bbogart: fmt.fmt.pix.pixelformat = 1498831189 bbogart: m_reqFormat = 34233 bbogart: GL_YCBCR_422_GEM = 34233 bbogart: V4L2_PIX_FMT_UYVY = 1498831189
so that all looks correct fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_UYVY and m_reqFormat = GL_YCBCR_422_GEM
BUT the PD console still prints:
v4l2: wanted 34233, got 'UYVY' v4l2: GEM: pix_video: Opened video connection 0xE
But 34233 is a YUV format...
I still get the VIDIOC_DQBUF: stopping capture thread!: Resource temporarily unavailable error.
So I'm stuck here, but I hope this helps enough that you can give me more hints on what else to try.
Thanks, B. Bogart