diff options
author | Martin Storsjö <martin@martin.st> | 2011-11-10 14:52:50 +0200 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2011-11-18 10:59:16 +0200 |
commit | bf7723a6407b6dfced80b8e90fcbc52901389274 (patch) | |
tree | b896d9611f84435fa7001417ac326fa0487d171e /libavformat | |
parent | ddf9b510e772fb723ba8cb487ca000dd91b3d1f7 (diff) | |
download | ffmpeg-bf7723a6407b6dfced80b8e90fcbc52901389274.tar.gz |
http: Split out the non-chunked buffer reading part from http_read
This is in preparation for a later commit, where this function
is reused.
Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/http.c | 44 |
1 files changed, 25 insertions, 19 deletions
diff --git a/libavformat/http.c b/libavformat/http.c index 9cc55bd3fc..d5bf96bf7a 100644 --- a/libavformat/http.c +++ b/libavformat/http.c @@ -413,10 +413,33 @@ static int http_connect(URLContext *h, const char *path, const char *local_path, } -static int http_read(URLContext *h, uint8_t *buf, int size) +static int http_buf_read(URLContext *h, uint8_t *buf, int size) { HTTPContext *s = h->priv_data; int len; + /* read bytes from input buffer first */ + len = s->buf_end - s->buf_ptr; + if (len > 0) { + if (len > size) + len = size; + memcpy(buf, s->buf_ptr, len); + s->buf_ptr += len; + } else { + if (!s->willclose && s->filesize >= 0 && s->off >= s->filesize) + return AVERROR_EOF; + len = ffurl_read(s->hd, buf, size); + } + if (len > 0) { + s->off += len; + if (s->chunksize > 0) + s->chunksize -= len; + } + return len; +} + +static int http_read(URLContext *h, uint8_t *buf, int size) +{ + HTTPContext *s = h->priv_data; if (s->chunksize >= 0) { if (!s->chunksize) { @@ -439,24 +462,7 @@ static int http_read(URLContext *h, uint8_t *buf, int size) } size = FFMIN(size, s->chunksize); } - /* read bytes from input buffer first */ - len = s->buf_end - s->buf_ptr; - if (len > 0) { - if (len > size) - len = size; - memcpy(buf, s->buf_ptr, len); - s->buf_ptr += len; - } else { - if (!s->willclose && s->filesize >= 0 && s->off >= s->filesize) - return AVERROR_EOF; - len = ffurl_read(s->hd, buf, size); - } - if (len > 0) { - s->off += len; - if (s->chunksize > 0) - s->chunksize -= len; - } - return len; + return http_buf_read(h, buf, size); } /* used only when posting data */ |