Message ID | 20211026151414.1455391-1-derek.buitenhuis@gmail.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,RFC] avformat/http: Add short_seek_size option | expand |
Context | Check | Description |
---|---|---|
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
andriy/make_ppc | success | Make finished |
andriy/make_fate_ppc | success | Make fate finished |
On 10/26/2021 4:14 PM, Derek Buitenhuis wrote: > Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com> > --- > libavformat/http.c | 4 ++++ > 1 file changed, 4 insertions(+) As a further note, I'm unclear if it belongs in HTTP specifically, or should be added back as public to AVIO in general. What I do know is that myself and several others such as Jan ran into this, since the functionality is quite useful. Cheers, - Derek
On 10/26/2021 4:14 PM, Derek Buitenhuis wrote: > Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com> > --- > libavformat/http.c | 4 ++++ > 1 file changed, 4 insertions(+) Ping. - Derek
On 10/26/2021 4:14 PM, Derek Buitenhuis wrote: > In 45bfe8b838275235412777dd430206d9a24eb3ee, short_seek_threshold was removed > from the public AVIO struct. Although this option was private and not intended > to be used by public API users, it was nonetheless, because it provided functionality > that could otherwise not be gained via public API. > > This was especially important for networked I/O like HTTP, where the internal > size for lavf could be way to small depending on the specifics of a user's > usecase, such as reading interlavd media files from cloud storage. > > Add an AVOption to make this functionality accessible to the HTTP client. > > Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com> > --- > libavformat/http.c | 4 ++++ > 1 file changed, 4 insertions(+) Ping. We discussed this a bit on IRC and people are open to adding this, but the question is whether we should re-add the old option during this ABI unstability period, or whether AVOptions on specific protocols makes more sense. My gut says re-adding to AVIO, since AVOptions on specific protos seems kinda weirdly specific/restrictive, but my opinion is not a stong one. Any comments or opinion? If not, I'll send a v2 which adds it to AVIO. - Derek
diff --git a/libavformat/http.c b/libavformat/http.c index 476b9a8456..0dc1ce0f43 100644 --- a/libavformat/http.c +++ b/libavformat/http.c @@ -126,6 +126,7 @@ typedef struct HTTPContext { int is_multi_client; HandshakeState handshake_step; int is_connected_server; + int short_seek_size; } HTTPContext; #define OFFSET(x) offsetof(HTTPContext, x) @@ -167,6 +168,7 @@ static const AVOption options[] = { { "listen", "listen on HTTP", OFFSET(listen), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 2, D | E }, { "resource", "The resource requested by a client", OFFSET(resource), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, E }, { "reply_code", "The http status code to return to a client", OFFSET(reply_code), AV_OPT_TYPE_INT, { .i64 = 200}, INT_MIN, 599, E}, + { "short_seek_size", "Threshold to favor readahead over seek.", OFFSET(short_seek_size), AV_OPT_TYPE_INT, { .i64 = -1 }, 1, INT64_MAX, D }, { NULL } }; @@ -1842,6 +1844,8 @@ static int http_get_file_handle(URLContext *h) static int http_get_short_seek(URLContext *h) { HTTPContext *s = h->priv_data; + if (s->short_seek_size >= 1) + return s->short_seek_size; return ffurl_get_short_seek(s->hd); }
In 45bfe8b838275235412777dd430206d9a24eb3ee, short_seek_threshold was removed from the public AVIO struct. Although this option was private and not intended to be used by public API users, it was nonetheless, because it provided functionality that could otherwise not be gained via public API. This was especially important for networked I/O like HTTP, where the internal size for lavf could be way to small depending on the specifics of a user's usecase, such as reading interlavd media files from cloud storage. Add an AVOption to make this functionality accessible to the HTTP client. Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com> --- libavformat/http.c | 4 ++++ 1 file changed, 4 insertions(+)