After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 136392 - [v4lsrc] buggy wit qc-usb driver
[v4lsrc] buggy wit qc-usb driver
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins
git master
Other Linux
: Normal normal
: 0.8.2
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2004-03-06 17:47 UTC by Angel Carpintero
Modified: 2004-12-22 21:47 UTC
See Also:
GNOME target: ---
GNOME version: 2.3/2.4



Description Angel Carpintero 2004-03-06 17:47:55 UTC
v4l pluggin is buggy with Webcams based in qc-usb driver ,
 Cause pluggin expect at least 2 frames to be queued as minimum :

 ----- OUTPUT ------ 
 
/usr/local/gstreamer/core/bin/gst-launch-0.7 v4lsrc device="/dev/video0" !
sdlvideosink
RUNNING pipeline ...
/dev/video0 [v4l]: no overlay support
ERROR         default(32654)
v4l-overlay_calls.c(76):gst_v4l_set_overlay:<v4lsrc0> Executing v4l-conf
failed.
ERROR         default(32654)
v4l-overlay_calls.c(76):gst_v4l_set_overlay:<v4lsrc0> system error: Conseguido
ERROR: from element /pipeline0/v4lsrc0: Executing v4l-conf failed.
Additional debug info:
v4l-overlay_calls.c(76): gst_v4l_set_overlay: /pipeline0/v4lsrc0:
system error: Conseguido
Opened device 'Logitech USB Camera' ('/dev/video0') successfully
Got 1 buffers ('YUV-4:2:2 (packed)') of size 416 KB
Caught interrupt.
Execution ended after 479 iterations (sum 44757233000 ns, average 93438899
ns, min 530000 ns, max 1746394000 ns).
[root@develop2 qc-usb-0.6.0]# rmmod quickcam
[root@develop2 qc-usb-0.6.0]# insmod quickcam
Using /lib/modules/2.4.22-1.2174.nptl/kernel/drivers/video/quickcam.o
[root@develop2 qc-usb-0.6.0]# /usr/local/gstreamer/core/bin/gst-launch-0.7
v4lsrc device="/dev/video0" ! sdlvideosink
RUNNING pipeline ...
/dev/video0 [v4l]: no overlay support
ERROR         default(  799)
v4l-overlay_calls.c(76):gst_v4l_set_overlay:<v4lsrc0> Executing v4l-conf
failed.
ERROR         default(  799)
v4l-overlay_calls.c(76):gst_v4l_set_overlay:<v4lsrc0> system error: Conseguido
ERROR: from element /pipeline0/v4lsrc0: Executing v4l-conf failed.
Additional debug info:
v4l-overlay_calls.c(76): gst_v4l_set_overlay: /pipeline0/v4lsrc0:
system error: Conseguido
Opened device 'Logitech USB Camera' ('/dev/video0') successfully
ERROR         default(  799)
v4lsrc_calls.c(192):gst_v4lsrc_capture_init:<v4lsrc0> (null)
ERROR         default(  799)
v4lsrc_calls.c(192):gst_v4lsrc_capture_init:<v4lsrc0> Not enough buffers.
We got 1, we want at least 22
ERROR: from element /pipeline0/v4lsrc0: Could not read from resource.
Additional debug info:
v4lsrc_calls.c(192): gst_v4lsrc_capture_init: /pipeline0/v4lsrc0:
Not enough buffers. We got 1, we want at least 2
ERROR: pipeline doesn't want to play.

 --------------------

 #define MIN_BUFFERS_QUEUED 2 (v4lsrc_calls.c" line 36 )

 So using the utility that come with qc-usb , qcset :

 qcset /dev/video0 compat=dblbuf , so it does that
 
  v4lsrc->mbuf.frames = 2 , but however didn't work ... 

 --- OUTPUT ---

 /usr/local/gstreamer/core/bin/gst-launch-0.7 v4lsrc device="/dev/video0" !
sdlvideosink
RUNNING pipeline ...
/dev/video0 [v4l]: no overlay support
ERROR         default(32649)
v4l-overlay_calls.c(76):gst_v4l_set_overlay:<v4lsrc0> Executing v4l-conf
failed.
ERROR         default(32649)
v4l-overlay_calls.c(76):gst_v4l_set_overlay:<v4lsrc0> system error: Conseguido
ERROR: from element /pipeline0/v4lsrc0: Executing v4l-conf failed.
Additional debug info:
v4l-overlay_calls.c(76): gst_v4l_set_overlay: /pipeline0/v4lsrc0:
system error: Conseguido
Opened device 'Logitech USB Camera' ('/dev/video0') successfully
Got 2 buffers ('YUV-4:2:2 (packed)') of size 208 KB
ERROR         default(32649)
v4lsrc_calls.c(358):gst_v4lsrc_requeue_frame:<v4lsrc0> (null)
ERROR         default(32649)
v4lsrc_calls.c(358):gst_v4lsrc_requeue_frame:<v4lsrc0> Invalid state 1
(expected 2), can't requeue
ERROR: from element /pipeline0/v4lsrc0: GStreamer developers were too lazy
to assign an error code to this error.  Please file a bug.
Additional debug info:
v4lsrc_calls.c(358): gst_v4lsrc_requeue_frame: /pipeline0/v4lsrc0:
Invalid state 1 (expected 2), can't requeue
Caught interrupt.


 --------------
 But if MIN_BUFFERS_QUEUED is changed to 1 then the pluggin is working :-)

 Well Ronnald i guess that is a weird way , but allowing to pass the 

 MIN_BUFFERS_QUEUED as a parameter fix the problem.
Comment 1 Ronald Bultje 2004-03-06 20:43:35 UTC
I've used this before and it worked for me... I'll try again.
Comment 2 Ronald Bultje 2004-04-29 01:27:07 UTC
Thomas & me fixed this.