diff --git a/libavformat/amr.c b/libavformat/amr.c index 9992f09959..f271750fdf 100644 --- a/libavformat/amr.c +++ b/libavformat/amr.c @@ -91,6 +91,11 @@ static int amr_read_header(AVFormatContext *s, get_buffer(pb, header, 6); + st = av_new_stream(s, 0); + if (!st) + { + return AVERROR_NOMEM; + } if(memcmp(header,AMR_header,6)!=0) { get_buffer(pb, header+6, 3); @@ -98,11 +103,6 @@ static int amr_read_header(AVFormatContext *s, { return -1; } - st = av_new_stream(s, 0); - if (!st) - { - return AVERROR_NOMEM; - } st->codec->codec_tag = MKTAG('s', 'a', 'w', 'b'); st->codec->codec_id = CODEC_ID_AMR_WB; @@ -110,12 +110,6 @@ static int amr_read_header(AVFormatContext *s, } else { - st = av_new_stream(s, 0); - if (!st) - { - return AVERROR_NOMEM; - } - st->codec->codec_tag = MKTAG('s', 'a', 'm', 'r'); st->codec->codec_id = CODEC_ID_AMR_NB; st->codec->sample_rate = 8000; @@ -140,6 +134,7 @@ static int amr_read_packet(AVFormatContext *s, return AVERROR_IO; } +//FIXME this is wrong, this should rather be in a AVParset toc=get_byte(&s->pb); mode = (toc >> 3) & 0x0F;