If I try to make or receive a call from Empathy, stream-engine tries to capture from my laptop's built-in webcam at 640x480, fails to do so, and then hangs. This means that Empathy sits there not knowing what's going on, and the call never works.
If I move /dev/video0 out of the way, calls in both directions work just fine.
This is the end of the debug output from telepathy-stream-engine, after which no debug output is produced:
(telepathy-stream-engine:23584): farsight-rtp-DEBUG: AUDIO - farsight_rtp_stream_set_sending: Setting sending on 0
** (telepathy-stream-engine:23584): DEBUG: bus_async_handler: got error from v4l2src1: Device '/dev/video0' cannot capture at 640x480: v4l2src_calls.c(1298): gst_v4l2src_set_capture (): /GstPipeline:pipeline0/GstGConfVideoSrc:gconfvideosrc0/GstBin:bin2/GstV4l2Src:v4l2src1:
Tried to capture at 640x480, but device returned size 320x240 (1136 13), destroying video pipeline
** (telepathy-stream-engine:23584): DEBUG: Closing all video streams
Either v4l2src is still broken (then its a gst problem) or you v4l2 driver sucks (then its a kernel problem).
And yes, s-e fs1 sucks. I won't fix it. I hate it. We want fs2 with libtpfs! ! !
Any idea how to tell whether it's gstreamer or kernel?
A workaround for me is to run cheese with verbose output. It will detect a workable gstreamer configuration and spit out a line that can be typed into gstreamer-properties as a custom video source.
For me this was:
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
I filed a bug over in Ubuntu since this is apparently not an empathy/telepathy bug: https://bugs.launchpad.net/ubuntu/+source/empathy/+bug/317000