Check this patch.
Brian Johnson wrote:
> yes the way saturation is now it does not work correctly. does anyone
> have an issue with reverting the patch that added saturation support
> in there since its right now broken?
>
> On Sat, Mar 14, 2009 at 2:43 PM, Stefan Krastanov
> <[email protected]> wrote:
>
>> The new version of libv4l is working (dmesg reports yuv420) but there is
>> another problem, this time with saturation.
>> When I change sat to any value <=254 the image goes grey. When I set it to
>> 255 it's to saturated. When I reset Brightens or Contrast it gets normal.
>> When I reset Saturation it gets grey again. Is this to be expected with my
>> chip 0C45:6270 MT9V011?
>> Screenshoots are attached.
>>
>> Regards
>> Stefan
>>
>> 2009/3/14 Stefan Krastanov <[email protected]>
>>
>>> For me jpeg is working but the quality of the picture is very low. I'm
>>> installing new libv4l now.
>>>
>>> 2009/3/14 Boris Borisov <[email protected]>
>>>
>>>> my version of libV4l is:
>>>> * В media-libs/libv4l
>>>> В В В Latest version available: 0.5.3
>>>> В В В Latest version installed: 0.5.3
>>>> with jpeg format brightest and contrast also not working
>>>> I test with ekiga
>>>>
>>>>
>>>> Brian Johnson wrote:
>>>>
>>>>> The brightness works on the older version since that comes before we
>>>>> got proper format switching working and it was using one of the hard
>>>>> coded bridge formats. anyways brightness/contrast do not work ewith
>>>>> raw bayer format because the bridge uses its color matrix to control
>>>>> those, the color matrix is what the bridge uses to convert the raw rgb
>>>>> values to yuv, and since the bridge passing through the raw bayer
>>>>> pattern as received from the sensor without converting to a yuv format
>>>>> brightness and contrast will not work with bayer format.
>>>>>
>>>>> There are two wys to get this working right first if you insmod the
>>>>> module with the jpeg=1 parameter
>>>>> (insmod ./sn9c20x.ko jpeg=1) libv4l should choose to use the jpeg
>>>>> format instead of bayer or make sure you are using version 0.5.8 or
>>>>> greater of libv4l whcih supports the bridges custom yuv format and
>>>>> will choose that over bayer
>>>>>
>>>>> 2009/3/14 Boris Borisov <[email protected]>:
>>>>>
>>>>>
>>>>>> Because I write a part of old driver, special decoder for 6270
>>>>>> cameras.
>>>>>> On new releases this is decoder is not included. In this case I use my
>>>>>> old copy of repository May 2008.
>>>>>> Because my implementations is using this functions (image processing)
>>>>>> access via sys-fs tuning picture (normalization) is very important .
>>>>>> New release is used for decoder v4l2convert but that is no very clear
>>>>>> solution for my situation because this is library some time is
>>>>>> generating core dump and stop production line (very often if is using
>>>>>> with V4L1). Also converter is get more resources CPU and memory. On my
>>>>>> visio systems based on Beagleboard the resources is very important for
>>>>>> robotic speed.
>>>>>> I post this issue because I can't solve for 20 minutes and not follow
>>>>>> from long time new commitments.
>>>>>> About git try with qgit or qgit4 graphics user interface program and
>>>>>> save the time for understanding git. Yes is possible to get old
>>>>>> revision.
>>>>>>
>>>>>> мЕЛ ДЕО
>>>>>> Bobby
>>>>>>
>>>>>> Stefan Krastanov wrote:
>>>>>>
>>>>>>
>>>>>>> Hello,
>>>>>>>
>>>>>>> On С™0C45:6270 with MT9V011 it's also not working(checked with
>>>>>>> v4l2ucp). I have reported it, but failed to give details - I was more
>>>>>>> interested in another problem.
>>>>>>>
>>>>>>> I have some time so I can check in exactly which version the support
>>>>>>> regresses but I will need at least some initial time interval in
>>>>>>> which
>>>>>>> to begin the search. And also, I'll be happy if you can tell me how
>>>>>>> to
>>>>>>> row back to old versions using git (based on date if it's possible) -
>>>>>>> if not I'll dig in the man page ;)
>>>>>>>
>>>>>>> Best Regards
>>>>>>> Stefan Krastanov
>>>>>>>
>>>>>>> 2009/3/14 Boris Borisov <[email protected] <mailto:[email protected]>>
>>>>>>>
>>>>>>>
>>>>>>> С™ С™ Hello,
>>>>>>> С™ С™ Can you check the brightness and contrast functions, because for
>>>>>>> С™ С™ me this
>>>>>>> С™ С™ functions is broken.
>>>>>>> С™ С™ Really i call sn9c20x_set_contrast with different values of
>>>>>>> brightness
>>>>>>> С™ С™ and contrast via sys-fs and V4l functions (ekiga) but brightness
>>>>>>> and
>>>>>>> С™ С™ contrast is not changed.
>>>>>>> С™ С™ On very old version (who I use) this functions is working.
>>>>>>>
>>>>>>> С™ С™ Best regards
>>>>>>> С™ С™ Bobby
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>
>>>>
>>
>
> >
>
>
--~--~---------~--~----~------------~-------~--~----~
Lets make microdia webcams plug'n play, (currently plug'n pray)
To post to this group, send email to [email protected]
Visit us online https://groups.google.com/group/microdia
-~----------~----~----~----~------~----~------~--~---
diff --git a/sn9c20x-bridge.c b/sn9c20x-bridge.c
index bb0f535..6453c48 100644
--- a/sn9c20x-bridge.c
+++ b/sn9c20x-bridge.c
@@ -504,8 +504,8 @@ int sn9c20x_set_contrast(struct usb_sn9c20x *dev)
__u8 brightness_contrast[21] = {0x16, 0x0, 0x2b, 0x0, 0x8, 0x0, 0xf6,
0x0f,
0xd2, 0x0f, 0x38, 0x0, 0x34, 0x0, 0xcf, 0x0f,
0xfd, 0x0f, 0x0, 0x0, 0x0};
- __u8 contrast_val = (dev->vsettings.contrast) * 0x25 / 0x100;
- __u8 brightness_val = dev->vsettings.brightness;
+ __u8 contrast_val = (dev->vsettings.contrast >> 8) * 0x25 / 0x100;
+ __u8 brightness_val = dev->vsettings.brightness >> 8;
brightness_val -= 0x80;
brightness_contrast[18] = brightness_val;
diff --git a/sn9c20x-bridge.h b/sn9c20x-bridge.h
index 029042c..3df1317 100644
--- a/sn9c20x-bridge.h
+++ b/sn9c20x-bridge.h
@@ -76,6 +76,9 @@ int sn9c20x_write_i2c_array(struct usb_sn9c20x *dev,
int sn9c20x_set_resolution(struct usb_sn9c20x *dev,
int width, int height);
+int sn9c20x_set_contrast(struct usb_sn9c20x *);
+int sn9c20x_set_brightness(struct usb_sn9c20x *);
+
int sn9c20x_get_closest_resolution(struct usb_sn9c20x *, int *, int *);
int sn9c20x_set_format(struct usb_sn9c20x *, __u32);
void sn9c20x_set_jpeg(struct usb_sn9c20x *);