lot of bugs in cx88-blackbird

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The HVR1300 driver has several bugs:

1.
When executing VIDIOC_S_EXT_CTRLS or VIDIOC_S_FREQUENCY on the mpeg device 
while the mpeg device is active (capturing), the driver calls 
blackbird_stop_codec(). This stops the encoder (API call 
CX2341X_ENC_STOP_CAPTURE).
Unfortunately, the encoder gets never restarted after the ioctl is finished. 

To restart the encoder, we now need to stop capturing and restart reading.
But if this is required anyway, the code could be much easier when the driver 
would simply return EBUSY.

I think the bug was introduced in May 2007 (!) with this patch:
(V4L/DVB (6828): cx88-blackbird: audio improvements)
http://git.linuxtv.org/media_tree.git?a=commitdiff;h=f9e54e0c84da869ad9bc372fb4eab26d558dbfc2

The necessary CX2341X_ENC_START_CAPTURE API command to restart the encoder was 
moved with this patch from blackbird_initialize_codec() to a new function 
blackbird_start_codec(), but this new function is not called.

For vidioc_s_ext_ctrls the patch ("Stop the mpeg encoder when changing 
parameters ") totally misses a solution to restart the encoder.

The different methods to switch channels with mpeg encoder cards have been 
discussed in the ivtv-devel list lately:
http://www.gossamer-threads.com/lists/ivtv/devel/41154

My suggestion is that the driver should return EBUSY for VIDIOC_S_FREQUENCY 
and all critical settings (standard, bitrate, format, ...) while a capture is 
in progess. This should happen not only on the mpeg device but also on the 
analogue device.

 
2.
On this hybrid card, we have an analogue and an mpeg device. As far as I  know 
there is still no application which knows how to handle this. 
If the User Controls (Brightness, Contrast, Saturation, Hue, Volume) are 
executed on the analogue device while the mpeg device is active, the result is 
static on audio+video. We need to stop reading and re-tune the current 
frequency by executing VIDIOC_S_FREQUENCY on the mpeg device. 

3.
When executing VIDIOC_S_FREQENCY or any other ioctl on the analogue device, 
the result is always static video+audio. v4l2-ctl --get-freq still shows the 
right frequency, but the tuner is obviously on another frequency.

4.
If we use VIDIOC_S_STD on the analogue device, a following "v4l2-ctl --get-
standard" (executed on the mpeg device) shows still the previous standard.

5.
The default video size for mpeg is 720x480 (which is right for the default 
standard NTSC-M). If we change the standard to PAL-BG, the size is still 
720x480. As far as I remember, the cx2341x does only work properly with height 
576 when the video standard is 50Hz. The ivtv driver adjustes this 
automatically.

6.
Setting the video size with VIDIOC_S_FMT for V4L2_BUF_TYPE_VIDEO_CAPTURE works 
only when executed on the mpeg device. How should an application know this? 
(for cards with saa7134-empress it is vice versa, VIDIOC_S_FMT works only on 
the analogue device...)

7.
switching from an external input back to TV (input 0) often results in audio 
static. Re-setting the video standard helps.

8. 
The external input "S-Video" has no colour although an Y/C signal is supplied.

9.
reading from mpeg device fails randomly with Input/output error. Even a driver 
reload is not sufficient - I have to reboot my machine to get it working 
again.

10.
vidioc_s_ext_ctrls  only supports V4L2_CTRL_CLASS_MPEG,  but not 
V4L2_CTRL_CLASS_USER. The driver should internally pass these to vidioc_s_ctrl 
instead of returning EINVAL.

11.
When switching from input Television to Input Composite1 , then switching to a 
radio channel and switching back to Composite 1, the video comes from 
Composite1 but the audio from Television (previous TV channel). Directly 
switching from Television to radio and then to Composite1 has no problems.


I am not a driver developer and can't fix this myself. But I could do testings 
and hope there is a developer who is willing to have a look at these problems.

Greets,
Martin
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux