]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/utils.c
Merge remote-tracking branch 'tjoppen/proper_mxf_track_linking'
[ffmpeg] / libavformat / utils.c
index 10cd6f30661f48e307dccbe67bc4d31843c6597f..76c4bf7e788094013622418612a6996c4a19f4ae 100644 (file)
@@ -269,10 +269,19 @@ int av_get_packet(AVIOContext *s, AVPacket *pkt, int size)
 {
     int ret;
 
-    if(s->maxsize>0){
+    if(s->maxsize>=0){
         int64_t remaining= s->maxsize - avio_tell(s);
-        if(remaining>=0)
-            size= FFMIN(size, remaining);
+        if(remaining < size){
+            int64_t newsize= avio_size(s);
+            if(!s->maxsize || s->maxsize<newsize)
+                s->maxsize= newsize;
+            remaining= s->maxsize - avio_tell(s);
+        }
+
+        if(s->maxsize>=0 && remaining>=0 && remaining+1 < size){
+            av_log(0, AV_LOG_ERROR, "Truncating packet of size %d to %"PRId64"\n", size, remaining+1);
+            size= remaining+1;
+        }
     }
 
     ret= av_new_packet(pkt, size);