[FFmpeg-devel] [PATCH 2/2] lavf/file: Add support for file syncing.

Nicolas George george at nsup.org
Mon Dec 3 14:46:24 EET 2018


Andrey Semashev (2018-12-03):
> This commit adds support for IO synchronization API to the file backend.
> ---
>  libavformat/file.c       | 10 ++++++++++
>  libavformat/os_support.h |  2 ++
>  2 files changed, 12 insertions(+)
> 
> diff --git a/libavformat/file.c b/libavformat/file.c
> index 1d321c4205..9765fd76c7 100644
> --- a/libavformat/file.c
> +++ b/libavformat/file.c
> @@ -254,6 +254,15 @@ static int64_t file_seek(URLContext *h, int64_t pos, int whence)
>      return ret < 0 ? AVERROR(errno) : ret;
>  }
>  
> +static int file_sync(URLContext *h)
> +{
> +    if (h->flags & AVIO_FLAG_WRITE) {
> +        FileContext *c = h->priv_data;

> +        return fsync(c->fd);

In case of error, it needs to convert errno to an AVERROR code.

> +    }
> +    return 0;
> +}
> +
>  static int file_close(URLContext *h)
>  {
>      FileContext *c = h->priv_data;
> @@ -353,6 +362,7 @@ const URLProtocol ff_file_protocol = {
>      .url_close           = file_close,
>      .url_get_file_handle = file_get_handle,
>      .url_check           = file_check,
> +    .url_sync            = file_sync,
>      .url_delete          = file_delete,
>      .url_move            = file_move,
>      .priv_data_size      = sizeof(FileContext),
> diff --git a/libavformat/os_support.h b/libavformat/os_support.h
> index 7a56dc9a7c..fcbdc884ba 100644
> --- a/libavformat/os_support.h
> +++ b/libavformat/os_support.h
> @@ -93,6 +93,8 @@ static inline int is_dos_path(const char *path)
>  #ifndef S_IWUSR
>  #define S_IWUSR S_IWRITE
>  #endif
> +

> +#define fsync _commit

Defining with the arguments would be more robust. A few occasions in the
same file do not do that, they should.

>  #endif
>  
>  #if CONFIG_NETWORK

Regards,

-- 
  Nicolas George
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20181203/e3212117/attachment.sig>


More information about the ffmpeg-devel mailing list