diff --git a/libavformat/dsfdec.c b/libavformat/dsfdec.c index 74fd7aa7d7..fee551df35 100644 --- a/libavformat/dsfdec.c +++ b/libavformat/dsfdec.c @@ -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];