Bug 601563

Summary: libv4lconvert
Product: [Fedora] Fedora Reporter: Leslie Katz <lesliek>
Component: libv4lAssignee: Hans de Goede <hdegoede>
Status: CLOSED UPSTREAM QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: low    
Version: rawhideCC: hdegoede
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-06-10 09:44:09 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Leslie Katz 2010-06-08 08:10:51 UTC
Description of problem: When I run cheese, I get an error message: "libv4lconvert: Error decompressing JPEG: unknown huffman code:".
Then follows a number (is that what it is?) like "0000ffff".



Version-Release number of selected component (if applicable): 0.6.0-1.


How reproducible: It happens each time I run cheese (if that's indeed what I'm being asked).

Comment 1 Hans de Goede 2010-06-08 08:28:09 UTC
Those errors are being printed by libv4lconvert because your webcam is producing corrupt jpeg frames. This could be a driver issue, or a hardware issue.

Can you attach the output of dmesg and lsusb please ?

Comment 2 Leslie Katz 2010-06-08 08:39:23 UTC
I HOPE that this is the relevant output from dmesg (I'm not very knowledgeable about these things!):

[60049.912051] usb 3-1: new full speed USB device using ohci_hcd and address 2
[60050.079289] usb 3-1: configuration #1 chosen from 1 choice
[60050.923634] TKIP: RX tkey->key_idx=2 frame keyidx=1 priv=d8d36a80
[60051.658433] Linux video capture interface: v2.00
[60051.746547] gspca: main v2.6.0 registered
[60051.776481] gspca: probing 0ac8:307b
[60052.633111] zc3xx: probe 2wr ov vga 0x7648
[60052.633120] zc3xx: probe sensor -> 7648
[60052.633127] zc3xx: Find Sensor OV7648
[60052.637261] gspca: probe ok
[60052.637310] usbcore: registered new interface driver zc3xx
[60052.637318] zc3xx: registered

Likewise, that this is what you want from lsusb:

Bus 003 Device 002: ID 0ac8:307b Z-Star Microelectronics Corp. USB 1.1 Webcam

Comment 3 Hans de Goede 2010-06-08 08:51:14 UTC
Yes that is what I was looking for, thanks.

Do you get this error message once, or do you get it printed a lot of times ? Also does the webcam work in cheese, and does the display look ok, or is some part missing at the bottom ?

Thanks & Regards,

Hans

Comment 4 Leslie Katz 2010-06-08 09:22:43 UTC
Apologies. I should've said that the error message keeps repeating for so long as the program keeps running. I know that because I run the program from a terminal and can see the output in the terminal in the background while cheese is open.

Also, when I run the program, the display is fine; nothing is missing at the bottom. I see video of myself.

Comment 5 Leslie Katz 2010-06-08 09:25:04 UTC
Apologies. I should've said that the error message keeps repeating for so long as the program keeps running. I know that because I run the program from a terminal and can see the output in the terminal in the background while cheese is open.

Also, when I run the program, the display is fine; nothing is missing at the bottom. I see video of myself.

Comment 6 Hans de Goede 2010-06-08 11:46:21 UTC
Hi,

This will need some further testing / debugging. Could you please
try installing and running camorama with your webcam, do:
yum install camorama
camorama

And then check if the entire image is ok, esp. if the bottom right corner (the last pixel) is showing what it should, try moving a piece of paper in front of the cam so that it covers this corner and check that the last pixel also changes to the color of the paper (and back again when you remove the paper).

Also write down the framerate that camorama is showing.

Also I've made some changes to libv4l recently which should lead to the error message no longer being printed or changing depending on the exact nature of the problem.

Can you please install and try the latest libv4l version ?
Do:
git clone git://linuxtv.org/v4l-utils.git
cd v4l-utils/lib

And then follow the installation instructions here:
http://hansdegoede.livejournal.com/7622.html

After this try the camera again with camorama, look at the framerate again,
has it changed ?

Thanks & Regards,

Hans

Comment 7 Leslie Katz 2010-06-08 21:19:01 UTC
I'm certainly prepared to try to install camorama and the latest version of libv4l and do as you suggest, but have to ask first--does it matter that I'm using Ubuntu rather than Fedora?

I first posted about my problem on the cheese list and was told to file this bug report instead, so I did, without worrying about the fact that I wasn't using Fedora. Now I'm worried I might have breached some rule in doing that.

Comment 8 Hans de Goede 2010-06-09 07:20:47 UTC
(In reply to comment #7)
> I'm certainly prepared to try to install camorama and the latest version of
> libv4l and do as you suggest, but have to ask first--does it matter that I'm
> using Ubuntu rather than Fedora?
> 
> I first posted about my problem on the cheese list and was told to file this
> bug report instead, so I did, without worrying about the fact that I wasn't
> using Fedora. Now I'm worried I might have breached some rule in doing that.    

Hi,

No problem I'm libv4l's upstream author and maintainer so I'm still interested in pursuing this. Using Fedora bugzilla for this is a bit strange though, directly mailing me would have been better. But we are here now anyways so lets continue this discussion here.

Your milage with camorama on ubuntu may vary but we'll see. There are 2 reasons why I want you to try camorama:
1) It does not scale the image but shows it at its true resolution, so if 1 or 2
   pixels at the bottom right are corrupt (which I would expect given the error
   message you are seeing) it will not blur them out because of scaling
2) It shows at how much fps the video stream is running

Chances are red and blue colors will be swapped in Ubuntu's camorama this is a known camorama bug, which has been fixed in Fedora for a while now :)

Regards,

Hans

Comment 9 Leslie Katz 2010-06-09 08:51:06 UTC
Well, I fell almost at the first hurdle.

I installed camorama (v 0.19-2).

Before running it, I ran cheese, just to make sure that the webcam was working. It was, but cheese still produced the error messages that had prompted me to raise this in the first place.

I shut down cheese.

I then ran camorama from a terminal. The following appeared in the terminal: "(camorama:3490): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated".

camorama opened in a second window, but there was no picture where it should have appeared, just a series of horizontal fuzzy grey bars. A separate window also appeared with the error message: "Unable to capture image."

I'm not sure what to try next. I did take a screenshot of my desktop with the three windows open on it, but don't know if there's a way to attach it to this message. If you'd like to see it, I could email it to you.

Thank you for trying to help me like this.

Comment 10 Hans de Goede 2010-06-09 08:57:22 UTC
Try running camorama like this:

LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so camorama

That should help.

Comment 11 Leslie Katz 2010-06-09 09:11:12 UTC
That made camorama work, thank you.

Here are the points I hope you want from me:

1. In the terminal, the same error message as that I get when running cheese kept repeating itself.

2. The image didn't fill the area it should have filled. Along the bottom was a thin black strip of uniform width.

3. The colours were wrong, as you said they'd be.

4. The current and average fps readings varied, but after a while, I saw 25.00 current and 23.71 average.

Comment 12 Hans de Goede 2010-06-09 11:54:12 UTC
Leslie,

Thanks that is all very good info to have, this means that as I already was afraid the problem is a driver bug.

I believe this is already fixed in the latest upstream kernel. To verify you could install the latest v4l-dvb stack. There is a special v4l-dvb tree which allows replacing your v4l drivers without replacing your entire kernel.

To do this install mercurial and then do:
hg clone http://linuxtv.org/hg/~hgoede/gspca
cd gspca
make menuconfig
<disable at least the zc0301 driver (under video -> usb), exit, save>
make
<if the make fails in some driver, disable that driver in menuconfig, this
 sometimes happens depending on which kernel you are compiling against>
sudo make install
<reboot, yes really>

Then you will have the latest upstream v4l stack, which I expect will fix this problem.

Regards,

Hans

Comment 13 Leslie Katz 2010-06-10 02:49:50 UTC
Hans, I'm sorry, but I'm simply not competent to do what you ask. I got as far as running make menuconfig and a window opened for kernel configuration, but I had absolutely no idea how to proceed from there, so I just closed the window down, without (I hope!) making any changes.

I'll try to find some information about how one uses the configuration window and if I can understand it will return to that window and report back.

Leslie

Comment 14 Hans de Goede 2010-06-10 06:55:22 UTC
Hi,

No worries. I just checked and things should work if you don't make any changes, so do:
make menuconfig
<select exit>
<choose yes to save changes if asked>
make
sudo make install
<reboot, yes really>

Regards,

Hans

Comment 15 Leslie Katz 2010-06-10 07:23:53 UTC
Hans, I followed each of the steps you listed. All seemed to work as it should. I then rebooted.

Unfortunately, all is as it was before. cheese keeps spitting out the same message while it remains open. camorama only runs when I use the special command you gave me and then the points about it that I made above still apply.

I'm sorry to be such a pain!

Comment 16 Hans de Goede 2010-06-10 08:11:37 UTC
Hi,

I think that for some reason you are still using the old driver. Can you run cheese, then go to the preferences menu and see what resolutions it lists ?

With the new driver it should list 640x472 and 320x232.

Maybe you're running a different kernel now as before the reboot ?

Regards,

Hans

Comment 17 Leslie Katz 2010-06-10 08:28:13 UTC
Cheese doesn't list those resolutions, but 640x480 and 320x240.

My default kernel is 2.6.31-22-generic.

When I booted up before running makeconfig, I didn't change away from the default, nor did I do anything on the reboot. uname -r shows that kernel now.

So the new driver didn't install then, despite my thinking everything had worked.

Comment 18 Hans de Goede 2010-06-10 08:34:25 UTC
(In reply to comment #17)
> Cheese doesn't list those resolutions, but 640x480 and 320x240.
> 
> My default kernel is 2.6.31-22-generic.
> 
> When I booted up before running makeconfig, I didn't change away from the
> default, nor did I do anything on the reboot. uname -r shows that kernel now.
> 
> So the new driver didn't install then, despite my thinking everything had
> worked.    

Hmm,

Try running the following commands from the gspca directory again:
make
sudo make install

They will show that they "cd" in to a kernel source directory, check that they go into a directory which has 2.6.31-22-generic in its path name.

Regards,

Hans

Comment 19 Leslie Katz 2010-06-10 08:53:36 UTC
I ran make. Here's what happened, leaving out many errors listed re firedtv-1394.c:

make -C /home/leslie/gspca/v4l 

make[1]: Entering directory `/home/leslie/gspca/v4l'

creating symbolic links...

make -C firmware prep

make[2]: Entering directory `/home/leslie/gspca/v4l/firmware'

make[2]: Leaving directory `/home/leslie/gspca/v4l/firmware'

make -C firmware

make[2]: Entering directory `/home/leslie/gspca/v4l/firmware'

make[2]: Nothing to be done for `default'.

make[2]: Leaving directory `/home/leslie/gspca/v4l/firmware'

Kernel build directory is /lib/modules/2.6.31-22-generic/build

make -C /lib/modules/2.6.31-22-generic/build SUBDIRS=/home/leslie/gspca/v4l  modules

make[2]: Entering directory `/usr/src/linux-headers-2.6.31-22-generic'

  CC [M]  /home/leslie/gspca/v4l/firedtv-1394.o

…
make[3]: *** [/home/leslie/gspca/v4l/firedtv-1394.o] Error 1

make[2]: *** [_module_/home/leslie/gspca/v4l] Error 2

make[2]: Leaving directory `/usr/src/linux-headers-2.6.31-22-generic'

make[1]: *** [default] Error 2

make[1]: Leaving directory `/home/leslie/gspca/v4l'

make: *** [all] Error 2

Did whatever happened re firedtv-1394.c stop other things from happening? But make install SEEMED to me to be installing things.

Comment 20 Leslie Katz 2010-06-10 08:56:47 UTC
Here's everything that happened when I ran sudo make install:

make -C /home/leslie/gspca/v4l install
make[1]: Entering directory `/home/leslie/gspca/v4l'
-e 
Removing obsolete files from /lib/modules/2.6.31-22-generic/kernel/drivers/media/video:

-e 
Removing obsolete files from /lib/modules/2.6.31-22-generic/kernel/drivers/media/dvb/cinergyT2:

-e 
Removing obsolete files from /lib/modules/2.6.31-22-generic/kernel/drivers/media/common:

-e 
Removing obsolete files from /lib/modules/2.6.31-22-generic/kernel/drivers/media/dvb/frontends:

Installing kernel modules under /lib/modules/2.6.31-22-generic/kernel/drivers/media/:
/sbin/depmod -a 2.6.31-22-generic 
make -C firmware install
make[2]: Entering directory `/home/leslie/gspca/v4l/firmware'
Installing firmwares at /lib/firmware: vicam/firmware.fw dabusb/firmware.fw dabusb/bitstream.bin ttusb-budget/dspbootcode.bin cpia2/stv0672_vp4.bin av7110/bootcode.bin 
make[2]: Leaving directory `/home/leslie/gspca/v4l/firmware'
make[1]: Leaving directory `/home/leslie/gspca/v4l'

Comment 21 Hans de Goede 2010-06-10 09:10:30 UTC
Hi,

Ok I already was afraid this would happen with some somewhat older kernels for some reason the firedtv driver always fails to compile.

To fix this do:
make menuconfig
<select Multimedia support (use the arrow keys), press enter>
<go to the line which says "DVB for Linux", press 'N'>
<exit>
<exit>
<yes save changes>
make
sudo make install

I hope it works now :)

Regards,

Hans

Comment 22 Leslie Katz 2010-06-10 09:35:23 UTC
Did that.

This time, during make, there were errors with ir-raw-event. I ran sudo make install afterwards and then rebooted.

cheese still shows the same error message.

Comment 23 Hans de Goede 2010-06-10 09:44:09 UTC
Hmm,

This just is not going anywhere I'm afraid.

I'm pretty sure that the driver bug in question which you are seeing has been fixed. So in time when you get a newer ubuntu with a newer kernel the problem should fix it self. In the mean time other then the harmless error messages being printed and the small black line at the bottom you can use your webcam as is.

Thanks for all the time you've put into this.

Regards,

Hans

Comment 24 Leslie Katz 2010-06-10 09:48:04 UTC
Thank you very much for being so patient!