]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/flvdec.c
avformat/libopenmpt: Query duration and metadata after selecting subsong
[ffmpeg] / libavformat / flvdec.c
index 94c9e283343821aa48d38073d831893be0198682..2d89bef15f25b3d29722bdf5885a3af1d0a2004c 100644 (file)
@@ -754,6 +754,7 @@ static int flv_get_extradata(AVFormatContext *s, AVStream *st, int size)
     av_freep(&st->codecpar->extradata);
     if (ff_get_extradata(s, st->codecpar, s->pb, size) < 0)
         return AVERROR(ENOMEM);
+    st->internal->need_context_update = 1;
     return 0;
 }
 
@@ -1014,7 +1015,13 @@ retry:
                    "Skipping flv packet: type %d, size %d, flags %d.\n",
                    type, size, flags);
 skip:
-            avio_seek(s->pb, next, SEEK_SET);
+            if (avio_seek(s->pb, next, SEEK_SET) != next) {
+                 // This can happen if flv_read_metabody above read past
+                 // next, on a non-seekable input, and the preceding data has
+                 // been flushed out from the IO buffer.
+                 av_log(s, AV_LOG_ERROR, "Unable to seek to the next packet\n");
+                 return AVERROR_INVALIDDATA;
+            }
             ret = FFERROR_REDO;
             goto leave;
         }