[FFmpeg-cvslog] http: Split out the non-chunked buffer reading part from http_read
Martin Storsjö
git at videolan.org
Sat Nov 19 02:09:42 CET 2011
ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Thu Nov 10 14:52:50 2011 +0200| [bf7723a6407b6dfced80b8e90fcbc52901389274] | committer: Martin Storsjö
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 at martin.st>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=bf7723a6407b6dfced80b8e90fcbc52901389274
---
libavformat/http.c | 44 +++++++++++++++++++++++++-------------------
1 files changed, 25 insertions(+), 19 deletions(-)
diff --git a/libavformat/http.c b/libavformat/http.c
index 9cc55bd..d5bf96b 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 */
More information about the ffmpeg-cvslog
mailing list