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

Carl Eugen Hoyos ceffmpeg at gmail.com
Sat Apr 6 17:39:01 EEST 2019


2018-12-09 18:50 GMT+01:00, Mark Thompson <sw at jkqxz.net>:
> 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.

OpenBSD also uses the glibc-variant of ioctl().
How should this be fixed?

Carl Eugen


More information about the ffmpeg-devel mailing list