]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/aviobuf.c
Merge commit 'e199a8099411d0992c3ed278287a81f1d791199c'
[ffmpeg] / libavformat / aviobuf.c
index ef6a0d4e9ba3d17a4fe554bbeb7f9d3b2f519c51..0a7c39eacdb76b7e436945d2d507dfdb1844bf38 100644 (file)
@@ -120,6 +120,7 @@ int ffio_init_context(AVIOContext *s,
     s->current_type          = AVIO_DATA_MARKER_UNKNOWN;
     s->last_time             = AV_NOPTS_VALUE;
     s->short_seek_get        = NULL;
+    s->written               = 0;
 
     return 0;
 }
@@ -154,6 +155,9 @@ static void writeout(AVIOContext *s, const uint8_t *data, int len)
             ret = s->write_packet(s->opaque, (uint8_t *)data, len);
         if (ret < 0) {
             s->error = ret;
+        } else {
+            if (s->pos + len > s->written)
+                s->written = s->pos + len;
         }
     }
     if (s->current_type == AVIO_DATA_MARKER_SYNC_POINT ||
@@ -323,6 +327,9 @@ int64_t avio_size(AVIOContext *s)
     if (!s)
         return AVERROR(EINVAL);
 
+    if (s->written)
+        return s->written;
+
     if (!s->seek)
         return AVERROR(ENOSYS);
     size = s->seek(s->opaque, 0, AVSEEK_SIZE);