aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/http.c
diff options
context:
space:
mode:
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>2021-10-26 16:03:59 +0100
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>2021-11-17 14:32:17 +0000
commita35101aae36583450be4881a5cde2a904a489d84 (patch)
treeb85fdc3bf77cd1e54f7ead502e66b5817f65fb14 /libavformat/http.c
parent71fa14787bf1d30936421cbcc796ca1cb049aab9 (diff)
downloadffmpeg-a35101aae36583450be4881a5cde2a904a489d84.tar.gz
avformat/http: Add short_seek_size option
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>
Diffstat (limited to 'libavformat/http.c')
-rw-r--r--libavformat/http.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libavformat/http.c b/libavformat/http.c
index 476b9a8456..fdfbc69da1 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 = 0 }, 0, INT_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);
}