Ok this one works fine for me.

On Sun, Jan 18, 2009 at 4:01 PM, GWater <[email protected]> wrote:
> Brian Johnson schrieb:
>>
>> No i meean inside usb_sn9c20x function we check the values of all our
>> module params to make sure the are valid and if not we print a warning
>> and set them to the default value. that needs to be updated for the
>> jpeg one since right now it only allows values of 0 or 1 so will
>> overwrite the default value of 2 with 1 and auto detection will never
>> work.
>>
>> On Fri, Jan 16, 2009 at 6:11 AM, GWater <[email protected]> wrote:
>>>
>>> Brian Johnson schrieb:
>>>>
>>>> Yeah thats it. you still need to modify usb_sn9c20x_init o allow 2 as
>>>> a valid value for the jpeg parameter, bot except for that it is looks
>>>> fine to me.
>>>>
>>>> On Thu, Jan 15, 2009 at 2:49 PM, GWater <[email protected]> wrote:
>>>>>
>>>>> Brian Johnson schrieb:
>>>>>>
>>>>>> Ok i also realized ou will probably want to add a field to our device
>>>>>> structure called jpeg copy the module param value to that durring the
>>>>>> default_settings call and check it to see if it is set to auto and if
>>>>>> so update it. Then the various checks that our driver does to
>>>>>> enable/disable jeg format shoud now check this device specific value.
>>>>>> This shold make things work as expected when auto detection is turned
>>>>>> on and you have moe then one device attached.
>>>>>>
>>>>> Is this what you had in mind?
>>>>>
>>>>> GWater
>>>>>
>>>>> From a0acb2afe1d08196df6fe94ff72b12172d6e47c2 Mon Sep 17 00:00:00 2001
>>>>> From: GWater <[email protected]>
>>>>> Date: Wed, 14 Jan 2009 23:16:15 +0100
>>>>> Subject: [PATCH] Disable JPEG for high-speed USB 2.0 by default
>>>>>
>>>>> Signed-off-by: GWater <[email protected]>
>>>>> ---
>>>>>  sn9c20x-usb.c  |   12 ++++++++++--
>>>>>  sn9c20x-v4l2.c |    4 ++--
>>>>>  sn9c20x.h      |    2 ++
>>>>>  3 files changed, 14 insertions(+), 4 deletions(-)
>>>>>
>>>>> diff --git a/sn9c20x-usb.c b/sn9c20x-usb.c
>>>>> index f001016..1afa714 100644
>>>>> --- a/sn9c20x-usb.c
>>>>> +++ b/sn9c20x-usb.c
>>>>> @@ -57,7 +57,7 @@ static __u8 bulk;
>>>>>  * @var jpeg
>>>>>  *  Module parameter to enable/disable JPEG format
>>>>>  */
>>>>> -__u8 jpeg = 1;
>>>>> +__u8 jpeg = 2;
>>>>>
>>>>>  /**
>>>>>  * @var bandwidth
>>>>> @@ -728,6 +728,14 @@ static int usb_sn9c20x_default_settings(struct
>>>>> usb_sn9c20x *dev)
>>>>>      v4l2_set_control_default(dev, V4L2_CID_AUTO_WHITE_BALANCE,
>>>>> auto_whitebalance);
>>>>>      v4l2_set_control_default(dev, V4L2_CID_EXPOSURE, exposure);
>>>>>
>>>>> +       if (jpeg == 2) {
>>>>> +               if (dev->udev->speed == USB_SPEED_HIGH && bandwidth ==
>>>>> 8)
>>>>> +                       dev->jpeg = 0;
>>>>> +               else
>>>>> +                       dev->jpeg = 1;
>>>>> +       } else
>>>>> +               dev->jpeg = jpeg;
>>>>> +
>>>>>      sn9c20x_set_resolution(dev, 640, 480);
>>>>>      sn9c20x_set_format(dev, sn9c20x_fmts[0].pix_fmt);
>>>>>
>>>>> @@ -1029,7 +1037,7 @@ module_exit(usb_sn9c20x_exit);    /**< @brief
>>>>> Module
>>>>> exit */
>>>>>
>>>>>
>>>>>  MODULE_PARM_DESC(fps, "Frames per second [10-30]");            /**<
>>>>> @brief
>>>>> Description of 'fps' parameter */
>>>>> -MODULE_PARM_DESC(jpeg, "Enable JPEG support (default is enabled)");
>>>>> +MODULE_PARM_DESC(jpeg, "Enable JPEG support (default is
>>>>> auto-detect)");
>>>>>  MODULE_PARM_DESC(bulk, "Enable Bulk transfer (default is to use
>>>>> ISOC)");
>>>>>  MODULE_PARM_DESC(bandwidth, "Bandwidth Setting (only for ISOC)");
>>>>>  MODULE_PARM_DESC(hflip, "Horizontal image flip");              /**<
>>>>> @brief
>>>>> Description of 'hflip' parameter */
>>>>> diff --git a/sn9c20x-v4l2.c b/sn9c20x-v4l2.c
>>>>> index 5c7d47b..4ecec35 100644
>>>>> --- a/sn9c20x-v4l2.c
>>>>> +++ b/sn9c20x-v4l2.c
>>>>> @@ -922,7 +922,7 @@ int sn9c20x_vidioc_enum_fmt_cap(struct file *file,
>>>>> void
>>>>> *priv,
>>>>>      fmt->flags = 0;
>>>>>      fmt->pixelformat = sn9c20x_fmts[fmt->index].pix_fmt;
>>>>>
>>>>> -       if (fmt->pixelformat == V4L2_PIX_FMT_JPEG && jpeg == 0)
>>>>> +       if (fmt->pixelformat == V4L2_PIX_FMT_JPEG && dev->jpeg == 0)
>>>>>              return -EINVAL;
>>>>>
>>>>>      memcpy(fmt->description, sn9c20x_fmts[fmt->index].desc, 32);
>>>>> @@ -951,7 +951,7 @@ int sn9c20x_vidioc_try_fmt_cap(struct file *file,
>>>>> void
>>>>> *priv,
>>>>>      if(fmt->fmt.pix.field != V4L2_FIELD_NONE)
>>>>>              return -EINVAL;
>>>>>  */
>>>>> -       if (fmt->fmt.pix.pixelformat == V4L2_PIX_FMT_JPEG && jpeg == 0)
>>>>> +       if (fmt->fmt.pix.pixelformat == V4L2_PIX_FMT_JPEG && dev->jpeg
>>>>> ==
>>>>> 0)
>>>>>              return -EINVAL;
>>>>>
>>>>>      for (index = 0; index < SN9C20X_N_FMTS; index++)
>>>>> diff --git a/sn9c20x.h b/sn9c20x.h
>>>>> index d5d2473..3db941f 100644
>>>>> --- a/sn9c20x.h
>>>>> +++ b/sn9c20x.h
>>>>> @@ -429,6 +429,8 @@ struct usb_sn9c20x {
>>>>>
>>>>>      int resolution;
>>>>>
>>>>> +       __u8 jpeg;
>>>>> +
>>>>>      unsigned int frozen:1;
>>>>>      struct sn9c20x_video_queue queue;
>>>>>      struct sn9c20x_camera camera;
>>>>> --
>>>>> 1.6.0.6
>>>>>
>>>>>
>>>>>
>>> Why do you want 2 as a parameter?
>>>
>>> GWater
>>>
>>>
>>
>> >>
>
> I hope this is the final version. But please check again. ;)
>
> GWater
>
> From ec97472c0af97b1c85ea5cce6ea8120ce06708cb Mon Sep 17 00:00:00 2001
> From: GWater <[email protected]>
> Date: Wed, 14 Jan 2009 23:16:15 +0100
> Subject: [PATCH] Disable JPEG for high-speed USB 2.0 by default
>
> Signed-off-by: GWater <[email protected]>
> ---
>  sn9c20x-usb.c  |   18 +++++++++++++-----
>  sn9c20x-v4l2.c |    4 ++--
>  sn9c20x.h      |    2 ++
>  3 files changed, 17 insertions(+), 7 deletions(-)
>
> diff --git a/sn9c20x-usb.c b/sn9c20x-usb.c
> index f001016..65508f5 100644
> --- a/sn9c20x-usb.c
> +++ b/sn9c20x-usb.c
> @@ -57,7 +57,7 @@ static __u8 bulk;
>  * @var jpeg
>  *  Module parameter to enable/disable JPEG format
>  */
> -__u8 jpeg = 1;
> +__u8 jpeg = 2;
>
>  /**
>  * @var bandwidth
> @@ -728,6 +728,14 @@ static int usb_sn9c20x_default_settings(struct
> usb_sn9c20x *dev)
>        v4l2_set_control_default(dev, V4L2_CID_AUTO_WHITE_BALANCE,
> auto_whitebalance);
>        v4l2_set_control_default(dev, V4L2_CID_EXPOSURE, exposure);
>
> +       if (jpeg == 2) {
> +               if (dev->udev->speed == USB_SPEED_HIGH && bandwidth == 8)
> +                       dev->jpeg = 0;
> +               else
> +                       dev->jpeg = 1;
> +       } else
> +               dev->jpeg = jpeg;
> +
>        sn9c20x_set_resolution(dev, 640, 480);
>        sn9c20x_set_format(dev, sn9c20x_fmts[0].pix_fmt);
>
> @@ -934,9 +942,9 @@ static int __init usb_sn9c20x_init(void)
>                bulk = 0;
>        }
>
> -       if (jpeg != 0 && jpeg != 1) {
> -               UDIA_WARNING("JPEG should be 0 or 1! Defaulting to 1\n");
> -               jpeg = 1;
> +       if (jpeg > 2) {
> +               UDIA_WARNING("JPEG should be 0 or 1 or 2! Defaulting to
> 2\n");
> +               jpeg = 2;
>        }
>
>        if (vflip != 0 && vflip != 1) {
> @@ -1029,7 +1037,7 @@ module_exit(usb_sn9c20x_exit);    /**< @brief Module
> exit */
>
>
>  MODULE_PARM_DESC(fps, "Frames per second [10-30]");            /**< @brief
> Description of 'fps' parameter */
> -MODULE_PARM_DESC(jpeg, "Enable JPEG support (default is enabled)");
> +MODULE_PARM_DESC(jpeg, "Enable JPEG support (default is auto-detect)");
>  MODULE_PARM_DESC(bulk, "Enable Bulk transfer (default is to use ISOC)");
>  MODULE_PARM_DESC(bandwidth, "Bandwidth Setting (only for ISOC)");
>  MODULE_PARM_DESC(hflip, "Horizontal image flip");              /**< @brief
> Description of 'hflip' parameter */
> diff --git a/sn9c20x-v4l2.c b/sn9c20x-v4l2.c
> index 5c7d47b..4ecec35 100644
> --- a/sn9c20x-v4l2.c
> +++ b/sn9c20x-v4l2.c
> @@ -922,7 +922,7 @@ int sn9c20x_vidioc_enum_fmt_cap(struct file *file, void
> *priv,
>        fmt->flags = 0;
>        fmt->pixelformat = sn9c20x_fmts[fmt->index].pix_fmt;
>
> -       if (fmt->pixelformat == V4L2_PIX_FMT_JPEG && jpeg == 0)
> +       if (fmt->pixelformat == V4L2_PIX_FMT_JPEG && dev->jpeg == 0)
>                return -EINVAL;
>
>        memcpy(fmt->description, sn9c20x_fmts[fmt->index].desc, 32);
> @@ -951,7 +951,7 @@ int sn9c20x_vidioc_try_fmt_cap(struct file *file, void
> *priv,
>        if(fmt->fmt.pix.field != V4L2_FIELD_NONE)
>                return -EINVAL;
>  */
> -       if (fmt->fmt.pix.pixelformat == V4L2_PIX_FMT_JPEG && jpeg == 0)
> +       if (fmt->fmt.pix.pixelformat == V4L2_PIX_FMT_JPEG && dev->jpeg == 0)
>                return -EINVAL;
>
>        for (index = 0; index < SN9C20X_N_FMTS; index++)
> diff --git a/sn9c20x.h b/sn9c20x.h
> index d5d2473..3db941f 100644
> --- a/sn9c20x.h
> +++ b/sn9c20x.h
> @@ -429,6 +429,8 @@ struct usb_sn9c20x {
>
>        int resolution;
>
> +       __u8 jpeg;
> +
>        unsigned int frozen:1;
>        struct sn9c20x_video_queue queue;
>        struct sn9c20x_camera camera;
> --
> 1.6.0.6
>
>
>

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to