[FFmpeg-devel] [PATCH 2/2] v4l2: allow to set device controls.

Giorgio Vazzana mywing81 at gmail.com
Sun Apr 7 19:57:18 CEST 2013


2013/4/1 Nicolas George <nicolas.george at normalesup.org>
>
> L'octidi 8 germinal, an CCXXI, Giorgio Vazzana a écrit :
> > >      int list_format;    /**< Set by a private option. */
> > >      int list_standard;  /**< Set by a private option. */
> > >      char *framerate;    /**< Set by a private option. */
> > > +    char *controls;
> > nit: maybe use the same comment as above? "/**< Set by a private option. */"
>
> The comment seemed a bit useless to me, but I have no strong objection.
>
> > "v4l2_ioctl" instead of "ioctl" to make libv4l2 happy :)
>
> Locally changed.
>
> > V4L2_CTRL_TYPE_BITMASK was added in linux 3.1, I get an error here on
> > 2.6.32. Maybe add something like:
> >
> > #ifdef V4L2_CTRL_TYPE_BITMASK
> >         case V4L2_CTRL_TYPE_BITMASK:
> > #endif
>
> It will not work: V4L2_CTRL_TYPE_* are enums, not macros.

Yes, sorry, I didn't think they were enums of course.

> I do not find a
> relevant VERSION macro that could be used for testing :(

>From a quick look neither did I... we could probably comment it until
we find a proper way to deal with it.

> > The rest would LGTM, except that I cannot compile it:
> >
> > holden at rye:~/src/ffmpeg$ uname -a
> > Linux rye 2.6.32-46-generic #105-Ubuntu SMP Fri Mar 1 00:04:17 UTC
> > 2013 x86_64 GNU/Linux
> >
> > holden at rye:~/src/ffmpeg$ gcc --version
> > gcc (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3
> > Copyright (C) 2009 Free Software Foundation, Inc.
> > This is free software; see the source for copying conditions.  There is NO
> > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
> >
> <snip error>
> >
> > I see we're using -std=c99, but I think anonymous unions are not
> > supported in c99?
> >
> > holden at rye:~/tmp$ cat v4l2_control.c
> > #include <stdio.h>
> > #include <linux/videodev2.h>
> >
> > int main()
> > {
> >       struct v4l2_ext_control ec;
> >
> >       ec.id      = 0;
> >       ec.size    = 0;
> >       ec.value   = 0;
> >       ec.value64 = 0;
> >       ec.string  = NULL;
> >
> >       return 0;
> > }
> >
> > holden at rye:~/tmp$ gcc -Wall -std=c99 v4l2_control.c
> > v4l2_control.c: In function ‘main’:
> > v4l2_control.c:10: error: ‘struct v4l2_ext_control’ has no member named ‘value’
> > v4l2_control.c:11: error: ‘struct v4l2_ext_control’ has no member
> > named ‘value64’
> > v4l2_control.c:12: error: ‘struct v4l2_ext_control’ has no member named ‘string’
> >
> > holden at rye:~/tmp$ gcc -Wall -std=gnu89 v4l2_control.c
>
> That works for me with -std=c99 and gcc (Debian 4.7.2-5) 4.7.2. I wonder
> which version is right, and if there is an easy way of solving the issue.

Me too. I have searched around for a solution but did not find any...
apart from using -std=gnu89 of course. Maybe Michael or someone else
has a suggestion? Thanks.

Giorgio Vazzana


More information about the ffmpeg-devel mailing list