[FFmpeg-devel] [PATCH] configure: improve check for POSIX ioctl

James Almer jamrial at gmail.com
Thu Aug 29 17:44:52 EEST 2024


On 8/29/2024 10:40 AM, Ramiro Polla wrote:
> Instead of relying on system #ifdefs which may or may not be correct,
> detect the POSIX ioctl signature at configure time.
> ---
>   configure          | 2 ++
>   libavdevice/v4l2.c | 2 +-
>   2 files changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/configure b/configure
> index 63f0429b02..ebbec49993 100755
> --- a/configure
> +++ b/configure
> @@ -2524,6 +2524,7 @@ HAVE_LIST="
>       opencl_videotoolbox
>       perl
>       pod2man
> +    posix_ioctl
>       texi2html
>       xmllint
>       zlib_gzip
> @@ -7158,6 +7159,7 @@ xmllint --version  > /dev/null 2>&1 && enable xmllint   || disable xmllint
>   check_headers linux/fb.h
>   check_headers linux/videodev2.h
>   test_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete
> +test_code cc sys/ioctl.h "int ioctl(int, int, ...);" && enable posix_ioctl

Is this check going to fail for the targets where ioctl_f has request as 
an unsigned long int?

>   
>   # check V4L2 codecs available in the API
>   if enabled v4l2_m2m; then
> diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c
> index 42d4b97c8f..0ae6872338 100644
> --- a/libavdevice/v4l2.c
> +++ b/libavdevice/v4l2.c
> @@ -111,7 +111,7 @@ struct video_data {
>       int (*open_f)(const char *file, int oflag, ...);
>       int (*close_f)(int fd);
>       int (*dup_f)(int fd);
> -#if defined(__sun) || defined(__BIONIC__) || defined(__musl__) /* POSIX-like */
> +#if HAVE_POSIX_IOCTL
>       int (*ioctl_f)(int fd, int request, ...);
>   #else
>       int (*ioctl_f)(int fd, unsigned long int request, ...);



More information about the ffmpeg-devel mailing list