avformat/dsddec: create audio stream before processing id3
authorPeter Ross <pross@xvid.org>
Fri, 18 Apr 2014 05:56:28 +0000 (15:56 +1000)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 18 Apr 2014 12:33:57 +0000 (14:33 +0200)
This ensures stream[0] is always the audio stream (an assumption made
in dsf_read_packet).

Signed-off-by: Peter Ross <pross@xvid.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/dsfdec.c

index 74fd7aa..fee551d 100644 (file)
@@ -70,6 +70,11 @@ static int dsf_read_header(AVFormatContext *s)
     if (avio_rl64(pb) != 28)
         return AVERROR_INVALIDDATA;
 
+    /* create primary stream before any id3 coverart streams */
+    st = avformat_new_stream(s, NULL);
+    if (!st)
+        return AVERROR(ENOMEM);
+
     avio_skip(pb, 8);
     id3pos = avio_rl64(pb);
     if (pb->seekable) {
@@ -92,10 +97,6 @@ static int dsf_read_header(AVFormatContext *s)
         return AVERROR_INVALIDDATA;
     }
 
-    st = avformat_new_stream(s, NULL);
-    if (!st)
-        return AVERROR(ENOMEM);
-
     channel_type = avio_rl32(pb);
     if (channel_type < FF_ARRAY_ELEMS(dsf_channel_layout))
         st->codec->channel_layout = dsf_channel_layout[channel_type];