[FFmpeg-devel] [PATCH]lavd/v4l2: Use ioctl(..., "int request" ) on Android

Mark Thompson sw at jkqxz.net
Sun Dec 9 19:50:20 EET 2018


On 06/12/2018 22:37, Carl Eugen Hoyos wrote:
> Hi!
> 
> Attached patch fixes building with new Android toolchain, used to be a warning.
> 
> Please comment, Carl Eugen
> 
> From d366c948af086520bfb2a4048e76f8d117690776 Mon Sep 17 00:00:00 2001
> From: Carl Eugen Hoyos <ceffmpeg at gmail.com>
> Date: Thu, 6 Dec 2018 23:34:54 +0100
> Subject: [PATCH] lavd/v4l2: Use "int request" as second parameter for ioctl()
>  on Android.
> 
> Fixes build with new Android toolchain.
> ---
>  libavdevice/v4l2.c |    4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c
> index 10a0ff0..aa7c052 100644
> --- a/libavdevice/v4l2.c
> +++ b/libavdevice/v4l2.c
> @@ -95,7 +95,11 @@ struct video_data {
>      int (*open_f)(const char *file, int oflag, ...);
>      int (*close_f)(int fd);
>      int (*dup_f)(int fd);
> +#ifdef __ANDROID__
> +    int (*ioctl_f)(int fd, int request, ...);
> +#else
>      int (*ioctl_f)(int fd, unsigned long int request, ...);
> +#endif
>      ssize_t (*read_f)(int fd, void *buffer, size_t n);
>      void *(*mmap_f)(void *start, size_t length, int prot, int flags, int fd, int64_t offset);
>      int (*munmap_f)(void *_start, size_t length);
> -- 
> 1.7.10.4
> 

LGTM on its own, but should this perhaps be "#ifndef (glibc something)" for the first case?  Looking at possible V4L2-hosting libcs, only glibc has the nonstandard* "unsigned long" rather than "int" as the request argument, so I expect we're going to hit this in more cases (e.g. musl) if compilers are now complaining about it.

Thanks,

- Mark


* POSIX - <http://pubs.opengroup.org/onlinepubs/9699919799/functions/ioctl.html>.


More information about the ffmpeg-devel mailing list