[FFmpeg-devel] [PATCH] avformat: stop exporting ffurl_read_complete, ffurl_seek and ffurl_size

Andreas Cadhalpun andreas.cadhalpun at googlemail.com
Sun Dec 27 20:07:22 CET 2015

On 27.12.2015 19:32, Jan Ehrhardt wrote:
> Andreas Cadhalpun in gmane.comp.video.ffmpeg.devel (Tue, 27 Oct 2015
> 22:52:27 +0100):
>>> On Tue, Oct 27, 2015 at 9:58 PM, Andreas Cadhalpun
>>>> diff --git a/libavformat/libavformat.v b/libavformat/libavformat.v
>>>> index e90aef7..a00a309 100644
>>>> --- a/libavformat/libavformat.v
>>>> +++ b/libavformat/libavformat.v
>>>> @@ -10,9 +10,6 @@ LIBAVFORMAT_$MAJOR {
>>>> -                ffurl_read_complete;
>>>> -                ffurl_seek;
>>>> -                ffurl_size;
>> OK. I'll wait a bit to see if someone else wants to comment on this patch.
> There is a PHP extension that uses ffurl_seek and ffurl_read_complete:
> https://github.com/chung-leong/av/blob/master/faststart.c#L76

This extension is apparently not developed anymore: the last commit was about
two years ago.

> These functions are also documented at
> http://www.ffmpeg.org/doxygen/trunk/avio_8c.html

This documentation contains every (public or private) function of ffmpeg.

> How should an external developer know what functions are publically
> available?

Publicly available functions are declared in installed headers, which
ffurl_seek and ffurl_read have never been.
Whoever wrote this extension must have been aware of the fact that these
are private functions as they are explicitly declared in the code [1]:
// from libavformat/url.h

typedef struct URLContext URLContext;
int ffurl_read_complete(URLContext *h, unsigned char *buf, int size);
int ffurl_write(URLContext *h, const unsigned char *buf, int size);
int64_t ffurl_seek(URLContext *h, int64_t pos, int whence);

This shouldn't have been done in the first place...

Best regards,

1: https://github.com/chung-leong/av/blob/master/faststart.c#L51

More information about the ffmpeg-devel mailing list