Commit 0a13487b authored by Peter Ross's avatar Peter Ross Committed by Michael Niedermayer

avformat/dsddec: create audio stream before processing id3

This ensures stream[0] is always the audio stream (an assumption made
in dsf_read_packet).
Signed-off-by: 's avatarPeter Ross <pross@xvid.org>
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 941b2240
...@@ -70,6 +70,11 @@ static int dsf_read_header(AVFormatContext *s) ...@@ -70,6 +70,11 @@ static int dsf_read_header(AVFormatContext *s)
if (avio_rl64(pb) != 28) if (avio_rl64(pb) != 28)
return AVERROR_INVALIDDATA; 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); avio_skip(pb, 8);
id3pos = avio_rl64(pb); id3pos = avio_rl64(pb);
if (pb->seekable) { if (pb->seekable) {
...@@ -92,10 +97,6 @@ static int dsf_read_header(AVFormatContext *s) ...@@ -92,10 +97,6 @@ static int dsf_read_header(AVFormatContext *s)
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
} }
st = avformat_new_stream(s, NULL);
if (!st)
return AVERROR(ENOMEM);
channel_type = avio_rl32(pb); channel_type = avio_rl32(pb);
if (channel_type < FF_ARRAY_ELEMS(dsf_channel_layout)) if (channel_type < FF_ARRAY_ELEMS(dsf_channel_layout))
st->codec->channel_layout = dsf_channel_layout[channel_type]; st->codec->channel_layout = dsf_channel_layout[channel_type];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment