Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
Bug 1163698 - Webcam not working in kamoso
Summary: Webcam not working in kamoso
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: kamoso
Version: 21
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: nucleo
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard: AcceptedBlocker
: 1164869 (view as bug list)
Depends On:
Blocks: F21FinalBlocker
TreeView+ depends on / blocked
 
Reported: 2014-11-13 10:13 UTC by Martin Kho
Modified: 2014-11-29 15:38 UTC (History)
20 users (show)

Fixed In Version: kamoso-2.0.2-21.20140902git.fc21
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2014-11-25 22:37:08 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)
Patch to fix freezes (519 bytes, patch)
2014-11-22 22:01 UTC, Martin Kho
no flags Details | Diff
Patch2: Real fix for freezes (5.32 KB, patch)
2014-11-28 12:25 UTC, Martin Kho
no flags Details | Diff
gst-freeze patch (1.15 KB, patch)
2014-11-29 15:37 UTC, Martin Kho
no flags Details | Diff
Add nosound patch (1.19 KB, patch)
2014-11-29 15:38 UTC, Martin Kho
no flags Details | Diff
Cosmetisc patch (2.51 KB, patch)
2014-11-29 15:38 UTC, Martin Kho
no flags Details | Diff


Links
System ID Private Priority Status Summary Last Updated
KDE Software Compilation 327345 0 None None None Never

Description Martin Kho 2014-11-13 10:13:50 UTC
Description of problem:
My webcam is found and initialized at kernel level (dmesg), but kamoso doesn't recognize it. In the Multimedia module under Video Recording the device is not listed. This issue is know, see [1]

I own a Logitech C270 webcam.

[1] https://bugs.kde.org/show_bug.cgi?id=327345

Version-Release number of selected component (if applicable):
phonon-4.8.1-1.fc21.x86_64
phonon-backend-gstreamer-4.8.0-3.fc21.x86_64
pulseaudio-5.0-24.20141103gitaec81.fc21.x86_64

How reproducible:
Always

Steps to Reproduce:
1. start kamoso
2.
3.

Actual results:
kamoso doesn't recognize the webcam

Expected results:
kamoso recognizes the webcam

Additional info:

Comment 1 Kevin Kofler 2014-11-13 14:02:21 UTC
Uh, Kamoso doesn't even use Phonon, it uses QtGStreamer. So I think that either your issues with Kamoso are entirely unrelated to the ones with Phonon, or the issue must be lower in the stack (GStreamer or even kernel).

Comment 2 Martin Kho 2014-11-13 14:32:40 UTC
Hi Kevin,

I don't know. The only thing I can see is:

ldd in Fedora 20 gives:
...
libphonon.so.4 => /lib64/libphonon.so.4 
...
libQtGStreamer-0.10.so.0 => /lib64/libQtGStreamer-0.10.so.0
libQtGStreamerUi-0.10.so.0 => /lib64/libQtGStreamerUi-0.10.so.0
...

ldd in Fedora 21 gives:
...
libphonon.so.4 => /lib64/libphonon.so.4
...
libQtGStreamer-1.0.so.0 => /lib64/libQtGStreamer-1.0.so.0
libQtGStreamerUi-1.0.so.0 => /lib64/libQtGStreamerUi-1.0.so.0
...

dmesg in Fedora 21:
...
[   11.277615] usb 1-1.1: set resolution quirk: cval->res = 384
[   11.278211] usbcore: registered new interface driver snd-usb-audio
[   11.278293] uvcvideo: Found UVC 1.00 device <unnamed> (046d:0825)
[   11.293251] input: UVC Camera (046d:0825) as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1:1.0/input/input13
[   11.293406] usbcore: registered new interface driver uvcvideo
[   11.293407] USB Video Class driver (1.1.1)

May be it's the update from gstreamer version 0.10 to 1.0?

Comment 3 Kevin Kofler 2014-11-13 15:12:27 UTC
Most likely, yes. Both QtGStreamer and Kamoso required changes for GStreamer 1, they might not be bug-free yet. The Kamoso port was tested by its developer, but probably not by more people.

Comment 4 nucleo 2014-11-17 18:45:46 UTC
*** Bug 1164869 has been marked as a duplicate of this bug. ***

Comment 5 Markus S. 2014-11-17 19:36:50 UTC
It's kernel 3.17's fault, not GStreamer's.

Comment 6 nucleo 2014-11-17 19:39:01 UTC
This problem is not in kernel, it was in kernels before 3.17 after moving to gstreamer1.

Comment 7 Rex Dieter 2014-11-17 19:43:16 UTC
There may be several root causes.  For Markus (as discussed on irc today), things work as expected with 3.16 kernels, but not with 3.17 ones.

Comment 8 Martin Kho 2014-11-17 22:45:34 UTC
Hi,

Huh? Did Fedora 21 ever had a kernel 3.16.x? My issue is not a kernel issue:
dmesg, at least, tells me so. What about udev?

Martin Kho

Btw. in Fedora 20 (had both kernel 3.16.x and 3.17.x) I don't have an issue with my webcam.

Comment 9 Markus S. 2014-11-17 23:01:13 UTC
(In reply to Martin Kho from comment #8)

> Btw. in Fedora 20 (had both kernel 3.16.x and 3.17.x) I don't have an issue
> with my webcam.

I tried (under F20) launching Kamoso – same experience as reported.
Then reboot with 3.16 kernel – /dev/video0 is back again and Kamoso works.

Comment 10 Orion Poplawski 2014-11-18 02:35:16 UTC
Markus - perhaps you should file a separate bug for your kernel issue?  I seem to have a similar experience as Martin - a /dev/video0 device, but no recording in kamoso.

Does gstreamer have any tools for debugging devices/

Comment 11 Orion Poplawski 2014-11-18 03:52:35 UTC
gst-inspect-1.0  v4l2src 

appears to show the webcam:

  device              : Device location
                        flags: readable, writable
                        String. Default: "/dev/video0"
  device-name         : Name of the device
                        flags: readable
                        String. Default: "HD WebCam"

Comment 12 Orion Poplawski 2014-11-18 04:02:02 UTC
$ GST_DEBUG=v4l2src:5 kamoso

0:00:00.225019461  4864      0x1ac9c50 DEBUG                v4l2src gstv4l2src.c:306:gst_v4l2src_negotiate:<v4l2src> caps of src: video/x-raw, format=(string)YUY2, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)10/1; video/x-raw, format=(string)YUY2, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YUY2, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YUY2, width=(int)352, height=(int)288, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YUY2, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YUY2, width=(int)176, height=(int)144, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YUY2, width=(int)160, height=(int)120, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; image/jpeg, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 15/1 }; image/jpeg, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 15/1 }; image/jpeg, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 15/1 }; image/jpeg, width=(int)352, height=(int)288, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 15/1 }; image/jpeg, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 15/1 }; image/jpeg, width=(int)176, height=(int)144, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 15/1 }; image/jpeg, width=(int)160, height=(int)120, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)I420, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)I420, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)I420, width=(int)352, height=(int)288, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)I420, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)I420, width=(int)176, height=(int)144, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)I420, width=(int)160, height=(int)120, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YV12, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YV12, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YV12, width=(int)352, height=(int)288, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YV12, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YV12, width=(int)176, height=(int)144, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YV12, width=(int)160, height=(int)120, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)BGR, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)BGR, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)BGR, width=(int)352, height=(int)288, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)BGR, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)BGR, width=(int)176, height=(int)144, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)BGR, width=(int)160, height=(int)120, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)RGB, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)RGB, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)RGB, width=(int)352, height=(int)288, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)RGB, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)RGB, width=(int)176, height=(int)144, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)RGB, width=(int)160, height=(int)120, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }
0:00:00.225558293  4864      0x1ac9c50 DEBUG                v4l2src gstv4l2src.c:307:gst_v4l2src_negotiate:<v4l2src> thiscaps: video/x-raw, format=(string)YUY2, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)10/1; video/x-raw, format=(string)YUY2, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YUY2, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YUY2, width=(int)352, height=(int)288, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YUY2, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YUY2, width=(int)176, height=(int)144, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YUY2, width=(int)160, height=(int)120, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; image/jpeg, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 15/1 }; image/jpeg, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 15/1 }; image/jpeg, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 15/1 }; image/jpeg, width=(int)352, height=(int)288, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 15/1 }; image/jpeg, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 15/1 }; image/jpeg, width=(int)176, height=(int)144, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 15/1 }; image/jpeg, width=(int)160, height=(int)120, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)I420, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)I420, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)I420, width=(int)352, height=(int)288, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)I420, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)I420, width=(int)176, height=(int)144, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)I420, width=(int)160, height=(int)120, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YV12, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YV12, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YV12, width=(int)352, height=(int)288, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YV12, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YV12, width=(int)176, height=(int)144, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)YV12, width=(int)160, height=(int)120, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)BGR, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)BGR, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)BGR, width=(int)352, height=(int)288, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)BGR, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)BGR, width=(int)176, height=(int)144, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)BGR, width=(int)160, height=(int)120, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)RGB, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)RGB, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)RGB, width=(int)352, height=(int)288, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)RGB, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)RGB, width=(int)176, height=(int)144, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }; video/x-raw, format=(string)RGB, width=(int)160, height=(int)120, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction){ 30/1, 15/1 }
0:00:00.227155483  4864      0x1ac9c50 DEBUG                v4l2src gstv4l2src.c:315:gst_v4l2src_negotiate:<v4l2src> caps of peer: EMPTY
0:00:00.227198867  4864      0x1ac9c50 DEBUG                v4l2src gstv4l2src.c:316:gst_v4l2src_negotiate:<v4l2src> peercaps: EMPTY
0:00:00.227223329  4864      0x1ac9c50 DEBUG                v4l2src gstv4l2src.c:339:gst_v4l2src_negotiate:<v4l2src> intersect: (NULL)
0:00:00.227246961  4864      0x1ac9c50 DEBUG                v4l2src gstv4l2src.c:340:gst_v4l2src_negotiate:<v4l2src> icaps: (NULL)

Comment 13 Orion Poplawski 2014-11-18 04:06:51 UTC
$ GST_DEBUG=3 kamoso
0:00:00.212953234  5624      0x1b33450 WARN                 basesrc gstbasesrc.c:2933:gst_base_src_loop:<v4l2src> error: Internal data flow error.
0:00:00.213016601  5624      0x1b33450 WARN                 basesrc gstbasesrc.c:2933:gst_base_src_loop:<v4l2src> error: streaming task paused, reason not-negotiated (-4)

0:00:06.409319482  5637      0x2221c00 WARN                 basesrc gstbasesrc.c:3470:gst_base_src_start_complete:<source> pad not activated yet
0:00:06.410332523  5637      0x2221c00 WARN                 basesrc gstbasesrc.c:3470:gst_base_src_start_complete:<source> pad not activated yet
0:00:07.492531740  5637 0x7eff70002800 FIXME                    bin gstbin.c:4023:gst_bin_query: implement duration caching in GstBin again

Comment 14 Martin Kho 2014-11-18 12:59:30 UTC
Hi,

I did some further digging into kamoso and gstreamer and found the following:
pre:
  enable kamoso debug info (kdebugdialog)

a) Run:
$ GST_DEBUG=4 kamoso
Output:
kamoso(2781) WebcamWidget::playFile: ================ PIPELINE ================
kamoso(2781) WebcamWidget::playFile: "v4l2src name=v4l2src device=/dev/video0 ! videoconvert ! video/x-raw, format=RGB, width=640, height=480, framerate=15/1; video/x-raw, format=RGB, width=640, height=480, framerate=24/1; video/x-raw, format=RGB, width=640, height=480, framerate=30/1; video/x-raw, format=RGB, width=352, height=288, framerate=15/1 ! gamma name=gamma ! videobalance name=videoBalance ! tee name=duplicate ! queue ! videoscale ! autovideosink name=videosink duplicate. ! queue name=linkQueue ! videoconvert ! fakesink name=fakesink"
...
0:00:00.973176733  2781      0x2771f20 WARN                 basesrc gstbasesrc.c:2933:gst_base_src_loop:<v4l2src> error: Internal data flow error.
0:00:00.973187187  2781      0x2771f20 WARN                 basesrc gstbasesrc.c:2933:gst_base_src_loop:<v4l2src> error: streaming task paused, reason not-negotiated (-4)
0:00:00.973211900  2781      0x2771f20 INFO        GST_ERROR_SYSTEM gstelement.c:1835:gst_element_message_full:<v4l2src> posting message: Internal data flow error.
0:00:00.973276715  2781      0x2771f20 INFO        GST_ERROR_SYSTEM gstelement.c:1858:gst_element_message_full:<v4l2src> posted error message: Internal data flow error.
...
kamoso(2781) WebcamWidget::onBusMessage: "Internal data flow error."

b) Then I Launched the gst-string at the command prompt:
$ gst-launch-1.0 v4l2src name=v4l2src device=/dev/video0 ! videoconvert ! video/x-raw, format=RGB, width=640, height=480, framerate=15/1\; video/x-raw, format=RGB, width=640, height=480, framerate=24/1\; video/x-raw, format=RGB, width=640, height=480, framerate=30/1\; video/x-raw, format=RGB, width=352, height=288, framerate=15/1 ! gamma name=gamma ! videobalance name=videoBalance ! tee name=duplicate ! queue ! videoscale ! autovideosink name=videosink duplicate. ! queue name=linkQueue ! videoconvert ! fakesink name=fakesink
Output:
...
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src: Internal data flow error.
Additional debug info:
gstbasesrc.c(2933): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src:
streaming task paused, reason not-negotiated (-4)

c) In the kamoso source the video format parameter is not RGB but I420. So I changed all format=RGB to format-I420:
$ gst-launch-1.0 v4l2src name=v4l2src device=/dev/video0 ! videoconvert ! video/x-raw, format=I420, width=640, height=480, framerate=15/1\; video/x-raw, format=I420, width=640, height=480, framerate=24/1\; video/x-raw, format=I420, width=640, height=480, framerate=30/1\; video/x-raw, format=I420, width=352, height=288, framerate=15/1 ! gamma name=gamma ! videobalance name=videoBalance ! tee name=duplicate ! queue ! videoscale ! autovideosink name=videosink duplicate. ! queue name=linkQueue ! videoconvert ! fakesink name=fakesink
Output: Hurray, my webcam works!

WIP: Trying to find where I420 gets changed into RGB.

HTH a little,

Martin Kho

Comment 15 Martin Kho 2014-11-18 20:52:46 UTC
Hi,

The format parameter RGB comes from kamoso. I was looking at the very latest kamoso sources[1] were this was changed to I420.

Aleix Pol made some changes to the Port to gstreamer1 by Andreas Cord-Landwehr. With these changes my webcam is working again.

Martin Kho

[1] http://quickgit.kde.org/?p=kamoso.git

Comment 16 Martin Kho 2014-11-19 09:53:50 UTC
Hi,

The patches that Aleix Pol submitted are just a first start to get kamoso working with gstreamer1. There are some freezes and video recording isn't working.

At least, there is progress to get kamoso working again and thats nice!

Martin Kho

Comment 17 Fedora Update System 2014-11-19 15:48:22 UTC
kamoso-2.0.2-21.20140902git.fc21 has been submitted as an update for Fedora 21.
https://admin.fedoraproject.org/updates/kamoso-2.0.2-21.20140902git.fc21

Comment 18 Mustafa Muhammad 2014-11-19 17:36:48 UTC
(In reply to Fedora Update System from comment #17)
> kamoso-2.0.2-21.20140902git.fc21 has been submitted as an update for Fedora
> 21.
> https://admin.fedoraproject.org/updates/kamoso-2.0.2-21.20140902git.fc21

This fixed the problem for me.

Comment 19 Fedora Blocker Bugs Application 2014-11-21 12:24:11 UTC
Proposed as a Freeze Exception for 21-final by Fedora user rdieter using the blocker tracking app because:

 kamoso application (included in kde spin) initial port to use gstreamer1 wasn't great and didn't work well for a large number of users/webcam's.  This latest build works much better, and would like this included on the final spin image.

Comment 20 Jaroslav Reznik 2014-11-21 12:34:39 UTC
This should even be blocker, at it's basic app functionality and it is installed by default in KDE, as "All applications that can be launched using the standard graphical mechanism of a release-blocking desktop after a default installation of that desktop must start successfully and withstand a basic functionality test."

Comment 21 Martin Kho 2014-11-22 22:00:38 UTC
Hi,

In my latest comment (#16) I talked about freezes that I still experienced and not working videorecording.

I digged a little deeper into the kamoso source code and found a problem with the code behind the "Take a video" button at the left side. Kamoso freezes - at least for me - when I press this button, and press this butten again or one of the other two buttens (both called "Take pictures"). After the second button press kamoso called gstreamer to put the webcam in state playing, although it is already in this state. It makes gstreamer very unhappy.

The "fix/workaround" for me is:
diff -uNr kamoso-2.0.2.orig/src/kamoso.cpp kamoso-2.0.2/src/kamoso.cpp
--- kamoso-2.0.2.orig/src/kamoso.cpp	2014-11-22 22:18:36.831198607 +0100
+++ kamoso-2.0.2/src/kamoso.cpp	2014-11-22 22:21:24.169097285 +0100
@@ -232,7 +232,9 @@
     }
 
     m_webcam->stopRecording(finalPath);
-    m_webcam->playFile(deviceManager->playingDevice());
+    // MK: commented out the following line, because it
+    // freezes kamoso.
+    // m_webcam->playFile(deviceManager->playingDevice());
 }
 
 void Kamoso::refreshDeviceList()

This "fix/workaround" makes kamoso working as one would expect. I didn't have any freezes and everything works.

Caution!: I have no idea what the possible side effects are if there are of this patch.

HTH,

Martin Kho

Btw: patch uploaded as separate comment.

Comment 22 Martin Kho 2014-11-22 22:01:36 UTC
Created attachment 960294 [details]
Patch to fix freezes

Comment 23 Martin Kho 2014-11-23 08:36:09 UTC
Hi,

I did some more testing and my "fix/workaround" is not good. Please forget about it.

Sorry for the noise.


Martin Kho

Comment 24 Kamil Páral 2014-11-24 12:48:18 UTC
I have tried kamoso with T500 and my webcamera indeed doesn't work. It works with GNOME. F21 TC3. After I applied the kamoso update from comment 17, it started to work.

Comment 25 Adam Williamson 2014-11-24 18:09:07 UTC
Discussed at 2014-11-24 blocker review meeting: http://meetbot.fedoraproject.org/fedora-blocker-review/2014-11-24/f21-blocker-review.2014-11-24-17.01.log.txt . Accepted as a blocker per c#20, "All applications that can be launched using the standard graphical mechanism of a release-blocking desktop after a default installation of that desktop must start successfully and withstand a basic functionality test." - https://fedoraproject.org/wiki/Fedora_21_Final_Release_Criteria#Default_application_functionality .

Comment 26 Fedora Update System 2014-11-25 22:37:08 UTC
kamoso-2.0.2-21.20140902git.fc21 has been pushed to the Fedora 21 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 27 Sudhir Khanger 2014-11-25 23:38:48 UTC
Camera is being recognized after the kamoso-2.0.2-21.20140902git.fc21 update but it gets stuck with a still picture time to time. The application doesn't get frozen but picture does. After clicking around the camera picture may or may not resume.

Comment 28 Martin Kho 2014-11-28 12:24:35 UTC
Hi,

Altouhg this report is officially closed, I hope that someone is interested to get the last issues solved.

It took a while before I found out where the freezes came from. The long story short is that the framerate has to fixed. I created a new patch and did exclusive tests. Everything is - for me - now working, even more. What new is that, videos can now be recorded with and without sound.

The patch is created against kamoso-2.0.2-21.20140902git.fc21.

HTH

Martin Kho

Comment 29 Martin Kho 2014-11-28 12:25:44 UTC
Created attachment 962454 [details]
Patch2: Real fix for freezes

Comment 30 Rex Dieter 2014-11-29 14:20:29 UTC
Martin, 

First of all, thanks for your work on this!

That said, ideally you'd open separate reports for your issue(s) (bonus for using bugs.kde.org and/or reviewboard.kde.org to get the code upstream asap)

Looking at the patch, upstream will likely not accept it as-is, it contains added comments (though *mostly* good), unrelated cleanups, and translation changes.

If you these into separate patches:
* critical gst-only fixes
* cleanup/polish fixes
* (possibly) translatable string fixes, ie, anything changes to stuff inside i18n(...)

then we'll have something that's more likely to be upstreamable.

Comment 31 Martin Kho 2014-11-29 15:35:55 UTC
Hi Rex,

As you asked me, I now have split up the patch in:
1. kamoso-2.0.2-gst-freeze.patch
2. kamoso-2.0.2-add-without-sound.patch
3. kamoso-2.0.2-cosmetics.patch

Again, these can be applied to kamoso-2.0.2-21.20140902git.fc21.

Thanks,

Martin Kho

Comment 32 Martin Kho 2014-11-29 15:37:03 UTC
Created attachment 962750 [details]
gst-freeze patch

Witout comment :-)

Comment 33 Martin Kho 2014-11-29 15:38:10 UTC
Created attachment 962751 [details]
Add nosound patch

Again without comment

Comment 34 Martin Kho 2014-11-29 15:38:56 UTC
Created attachment 962753 [details]
Cosmetisc patch


Note You need to log in before you can comment on or make changes to this bug.