[FFmpeg-devel] [PATCH] lavf/file: prefer lseek64 to lseek

James Almer jamrial at gmail.com
Thu Oct 9 04:06:46 CEST 2014


On 08/10/14 10:59 PM, Yu Xiaolei wrote:
> This fixes 2GB seek limit on Android, because NDK does not handle _FILE_OFFSET_BITS (https://code.google.com/p/android/issues/detail?id=64613).
> 
> ---
>  configure          | 2 ++
>  libavformat/file.c | 4 ++++
>  2 files changed, 6 insertions(+)
> 
> diff --git a/configure b/configure
> index 2a20d03..e8dc71d 100755
> --- a/configure
> +++ b/configure
> @@ -1719,6 +1719,7 @@ SYSTEM_FUNCS="
>      jack_port_get_latency_range
>      kbhit
>      localtime_r
> +    lseek64
>      lzo1x_999_compress
>      mach_absolute_time
>      MapViewOfFile
> @@ -4704,6 +4705,7 @@ check_func  strerror_r
>  check_func  sysconf
>  check_func  sysctl
>  check_func  usleep
> +check_func  lseek64
>  
>  check_func_headers conio.h kbhit
>  check_func_headers io.h setmode
> diff --git a/libavformat/file.c b/libavformat/file.c
> index 6511328..b30cde2 100644
> --- a/libavformat/file.c
> +++ b/libavformat/file.c
> @@ -178,7 +178,11 @@ static int64_t file_seek(URLContext *h, int64_t pos, int whence)
>          return ret < 0 ? AVERROR(errno) : (S_ISFIFO(st.st_mode) ? 0 : st.st_size);
>      }
>  
> +#if HAVE_LSEEK64
> +    ret = lseek64(c->fd, pos, whence);
> +#else
>      ret = lseek(c->fd, pos, whence);
> +#endif
>  
>      return ret < 0 ? AVERROR(errno) : ret;
>  }
> 

This should probably be handled in os_support.h


More information about the ffmpeg-devel mailing list