[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