[FFmpeg-devel] [PATCH 1/2] lavf: Add general API for IO buffer synchtonization.

Andrey Semashev andrey.semashev at gmail.com
Mon Dec 3 15:52:40 EET 2018


On 12/3/18 3:43 PM, Nicolas George wrote:
> Andrey Semashev (2018-12-03):
>> This commit adds a new set of functions to avio and url subsystems, which
>> allow users to invoke IO buffer synchronization with the underlying media.
>> The most obvious target for this extension if the filesystem streams. Invoking
>> IO synchronization allows user applications to ensure that all written content
>> has reached the filesystem on the media and can be observed by other processes.
>>
>> The public API for this is avio_sync() function, which can be called on
>> AVIOContext. The internal, lower layer API is ffurl_sync(), which works
>> directly on the underlying URLContext. URLContext backends can add support for
>> this new API by setting the sync handler to the new url_sync member of
>> URLProtocol. When no handler is set then the sync operation is a no-op.
>> ---
>>   libavformat/avio.c    |  7 +++++++
>>   libavformat/avio.h    | 16 ++++++++++++++++
>>   libavformat/aviobuf.c | 17 +++++++++++++++++
>>   libavformat/url.h     | 12 ++++++++++++
>>   4 files changed, 52 insertions(+)
>>
>> diff --git a/libavformat/avio.c b/libavformat/avio.c
>> index 663789ec02..19413ac586 100644
>> --- a/libavformat/avio.c
>> +++ b/libavformat/avio.c
>> @@ -623,6 +623,13 @@ int64_t ffurl_size(URLContext *h)
>>       return size;
>>   }
>>   
>> +int ffurl_sync(URLContext *h)
>> +{
>> +    if (h->prot->url_sync)
>> +        return h->prot->url_sync(h);
> 
>> +    return 0;
> 
> I think it should be an error, probably ENOSUP. Otherwise, the
> application will assume it was done.

I don't think this would be useful to users. I mean, the application can 
already check whether the operations is supported or not by inspecting 
url_sync. When the application doesn't care (which, I think, will be the 
majority of cases), they will treat ENOTSUP the same way as a success, 
so it only adds more burden to test for this error code.

I could use some separate "success" code for the "not supported" result, 
if there is one. Is there?


More information about the ffmpeg-devel mailing list