Hi Yannick,

On Saturday 26 April 2008, yannick wrote:
> I did more testing:
> $ modinfo uvcvideo
> filename:      
> /lib/modules/2.6.24-16-generic/ubuntu/media/usbvideo/uvcvideo.ko version:  
>      SVN r205
>
> $ uvcdynctrl -V
> uvcdynctrl 0.2 (SVN Revision : 21)
>
> $ uvcdynctrl -cv
> Listing available controls for device video0:
>   Focus, Auto
>     ID      : 0x00000013,
>     Type    : Boolean,
>     Flags   : { CAN_READ, CAN_WRITE },
>     Values  : [ 70 .. 2875, step size: 187 ],
>     Default : 1
>   Focus (absolute)
>     ID      : 0x00000014,
>     Type    : Dword,
>     Flags   : { CAN_READ, CAN_WRITE },
>     Values  : [ 70 .. 2875, step size: 187 ],
>     Default : 70
>   Exposure (Absolute)
>     ID      : 0x00000011,
>     Type    : Dword,
>     Flags   : { CAN_READ, CAN_WRITE },
>     Values  : [ 100 .. 2400, step size: 100 ],
>     Default : 300
>   Exposure, Auto
>     ID      : 0x0000000f,
>     Type    : Choice,
>     Flags   : { CAN_READ, CAN_WRITE },
>     Values  : { 'Manual Mode'[0], 'Auto Mode'[1], 'Shutter Priority
> Mode'[2], 'Aperture Priority Mode'[3] },
>     Default : 3
>   Backlight Compensation
>     ID      : 0x0000000c,
>     Type    : Dword,
>     Flags   : { CAN_READ, CAN_WRITE },
>     Values  : [ 0 .. 1, step size: 1 ],
>     Default : 0
>   Sharpness
>     ID      : 0x00000007,
>     Type    : Dword,
>     Flags   : { CAN_READ, CAN_WRITE },
>     Values  : [ 0 .. 9, step size: 1 ],
>     Default : 0
>   White Balance Temperature
>     ID      : 0x00000008,
>     Type    : Dword,
>     Flags   : { CAN_READ, CAN_WRITE },
>     Values  : [ 2800 .. 6500, step size: 1850 ],
>     Default : 6500
>   Power Line Frequency
>     ID      : 0x0000000d,
>     Type    : Choice,
>     Flags   : { CAN_READ, CAN_WRITE },
>     Values  : { 'Disabled'[0], '50 Hz'[1], '60 Hz'[2] },
>     Default : 2
>   Gamma
>     ID      : 0x00000006,
>     Type    : Dword,
>     Flags   : { CAN_READ, CAN_WRITE },
>     Values  : [ 25 .. 125, step size: 25 ],
>     Default : 50
>   White Balance Temperature, Auto
>     ID      : 0x00000009,
>     Type    : Boolean,
>     Flags   : { CAN_READ, CAN_WRITE },
>     Values  : [ -30 .. 30, step size: 1 ],
>     Default : 1
>   Hue
>     ID      : 0x00000005,
>     Type    : Dword,
>     Flags   : { CAN_READ, CAN_WRITE },
>     Values  : [ -30 .. 30, step size: 1 ],
>     Default : 0
>   Saturation
>     ID      : 0x00000004,
>     Type    : Dword,
>     Flags   : { CAN_READ, CAN_WRITE },
>     Values  : [ 0 .. 19, step size: 1 ],
>     Default : 5
>   Contrast
>     ID      : 0x00000002,
>     Type    : Dword,
>     Flags   : { CAN_READ, CAN_WRITE },
>     Values  : [ 0 .. 3, step size: 1 ],
>     Default : 1
>   Brightness
>     ID      : 0x00000001,
>     Type    : Dword,
>     Flags   : { CAN_READ, CAN_WRITE },
>     Values  : [ 0 .. 31, step size: 1 ],
>     Default : 0
>
> $ uvcdynctrl -g 'Exposure, Auto'
> 3
>
> $ uvcdynctrl -s 'Exposure, Auto' -- 0
>
> $ uvcdynctrl -g 'Exposure, Auto'
> 0
>
> $ uvcdynctrl -g 'Exposure (Absolute)'
> 1500
>
> /usr/local/bin/luvcview -i 30 -f yuv
> There I get 10~15fps
>
>
> The weird thing is I *must* follow this order to be able to set
> 'Exposure (Absolute)' and 'Focus (absolute)':
> 1- get the Auto value,
> 2- set the auto value,
> 3- get the absolute value
> 4- set the absolute value
>
> or I get this error:
> $ uvcdynctrl -s 'Exposure (Absolute)' 2400
> ERROR: Unable to set new control value: A Video4Linux2 API call returned
> an unexpected error 5. (Code: 12)

Does it work when you skip steps 1 and 3 ? The UVC specification makes it 
mandatory to disable auto-exposure before setting the absolute exposure 
value. If you don't the device ignores the absolute exposure request.

> This works:
> $ uvcdynctrl -g 'Exposure, Auto'
> 0
> $ uvcdynctrl -s 'Exposure, Auto' -- 0
> $ uvcdynctrl -g 'Exposure (Absolute)'
> 300
> $ uvcdynctrl -s 'Exposure (Absolute)' 100
> $ uvcdynctrl -g 'Exposure (Absolute)'
> 100
>
> This works too:
> $ uvcdynctrl -g 'Focus, Auto'
> 0
> $ uvcdynctrl -s 'Focus, Auto' 0
> $ uvcdynctrl -g 'Focus (absolute)'
> 1566
> $ uvcdynctrl -s 'Focus (absolute)' 70
> $ uvcdynctrl -g 'Focus (absolute)'
> 70

The focus control shouldn't have any influence on the frame rate.

> But what ever I tried, I'm not able to have 30fps :(
>
> It seems if there is more light in the room, the fps increase a bit.

I played a bit with my Creative Live! Cam Optia (non AF version, as I don't 
own an AF one). With auto exposure on, the frame rate decreases with ambient 
light. After disabling auto exposure off, the frame rate stays around 30fps 
even if I obscure the lens.

Now, if I change the absolute exposure time after disabling auto-exposure, the 
image will become completely saturated, no matter what absolute exposure time 
value I set.

I tried the same operations on a Logitech Quickcam Pro for Notebooks. The 
absolute exposure time can be changed when auto-exposure is off, and the 
effect on the image is immediately visible (although the image gets darker 
when I increase the exposure time, I would have expected the opposite).

This seems to mean that the absolute exposure time issue I encountered is not 
caused by the driver but by the Creative Live! Cam Optia.

Have you seen a similar issue ? Does the image change when you modify the 
absolute exposure time control after disabling auto-exposure ? You can use 
uvcdynctrl to modify the controls while luvcview is running.

Best regards,

Laurent Pinchart
_______________________________________________
Linux-uvc-devel mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/linux-uvc-devel

Reply via email to