gstreamer chooses wrong resolution with gspca_zc3xx webcam?

Bug #317000 reported by volkris
2
Affects Status Importance Assigned to Milestone
GStreamer
Invalid
Undecided
Unassigned
gstreamer0.10 (Ubuntu)
Fix Released
Low
Unassigned

Bug Description

Binary package hint: empathy

After the move to Intrepid I was unable to videoconference through empathy. My local video simply wouldn't show up. Once the v4l2 stuff settled down other video programs (cheese, ekiga, skype) began working again, but empathy never caught up.

I ran STREAM_ENGINE_PERSIST to get telepathy-stream-engine debug output, and here's the error message:

   ** (telepathy-stream-engine:5966): DEBUG: bus_async_handler: got error from v4l2src1: Device '/dev/video0' cannot capture at 352x288: v4l2src_calls.c(1298): gst_v4l2src_set_capture (): /GstPipeline:pipeline0/GstGConfVideoSrc:gconfvideosrc0/GstBin:bin2/GstV4l2Src:v4l2src1:
   Tried to capture at 352x288, but device returned size 320x240 (1111 13), destroying video pipeline
   ** (telepathy-stream-engine:5966): DEBUG: Closing all video streams
   libv4l2: error converting / decoding frame data: v4l-convert: error destination buffer too small

Note that it tried to capture in CIF but go the nearby VGA mode... as if some player was confused about which resolution to request or which was requested.

This bug is very similar to their reported bug at http://bugs.freedesktop.org/show_bug.cgi?id=18901 . There Oliver says it's either a problem with gstreamer or the kernel driver. Lovely.

I ran cheese with its verbose logging and after it got on its feet it showed the following line in terminal:
v4l2src name=video_source device=/dev/video0 ! capsfilter name=capsfilter caps=video/x-raw-rgb,width=640,height=480,framerate=30/1;video/x-raw-yuv,width=640,height=480,framerate=30/1 ! identity

So cheese seems to properly detect available camera modes and requests one explicitly? I typed this line into gstreamer-properties as a custom video source and empathy video began working fine.

With so many players, from empathy to stream-engine to gstreamer to driver, I have no idea where the actual fault is. It looks like some autodetect code is failing to choose an available resolution so I would guess gstreamer.

Anyway, webcam:
Bus 001 Device 002: ID 0ac8:303b Z-Star Microelectronics Corp. ZC0303 WebCam
telepathy-stream-engine 0.5.3-1
empathy 2.25.2-2ubuntu1~ppa8.10+1
And I will attach the debug log from telepathy-stream-engine

Revision history for this message
volkris (volkris) wrote :
Revision history for this message
volkris (volkris) wrote :

Also, this bug may be related to the image resizing issue many people reported with skype and ekiga: I started experiencing that bug at the same time, and I suspect that skype may be requesting a resolution that doesn't exist causing a crop instead of a scale.

dmesg output:
[ 185.532143] usb 1-2: new full speed USB device using uhci_hcd and address 2
[ 185.740047] usb 1-2: configuration #1 chosen from 1 choice
[ 186.010518] Linux video capture interface: v2.00
[ 186.057042] gspca: main v2.2.0 registered
[ 186.079174] gspca: probing 0ac8:303b
[ 187.723112] zc3xx: probe 2wr ov vga 0x0000
[ 187.767110] zc3xx: probe sensor -> 11
[ 187.767121] zc3xx: Find Sensor HV7131R(c)
[ 187.779449] gspca: probe ok
[ 187.780319] usbcore: registered new interface driver zc3xx
[ 187.781532] zc3xx: registered
[ 201.377114] zc3xx: probe 2wr ov vga 0x0000

Revision history for this message
volkris (volkris) wrote :

Problem still present with a cutting edge kernel. I tested in the process of testing for bug #292086

Revision history for this message
volkris (volkris) wrote :

The recently proposed kernel (2.6.27-12-generic) seems to fix this bug for me.

affects: empathy (Ubuntu) → gstreamer0.10 (Ubuntu)
Revision history for this message
Pedro Villavicencio (pedro) wrote :

thanks, closing the bug.

Changed in gstreamer0.10 (Ubuntu):
importance: Undecided → Low
status: New → Fix Released
Changed in gstreamer:
status: New → Invalid
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.