|
|
|
@@ -2167,6 +2167,7 @@ int av_find_stream_info(AVFormatContext *ic) |
|
|
|
} info[MAX_STREAMS] = {{0}}; |
|
|
|
|
|
|
|
for(i=0;i<ic->nb_streams;i++) { |
|
|
|
AVCodec *codec; |
|
|
|
st = ic->streams[i]; |
|
|
|
if (st->codec->codec_id == CODEC_ID_AAC) { |
|
|
|
st->codec->sample_rate = 0; |
|
|
|
@@ -2187,9 +2188,17 @@ int av_find_stream_info(AVFormatContext *ic) |
|
|
|
} |
|
|
|
} |
|
|
|
assert(!st->codec->codec); |
|
|
|
codec = avcodec_find_decoder(st->codec->codec_id); |
|
|
|
|
|
|
|
/* Force decoding of at least one frame of codec data |
|
|
|
* this makes sure the codec initializes the channel configuration |
|
|
|
* and does not trust the values from the container. |
|
|
|
*/ |
|
|
|
if (codec && codec->capabilities & CODEC_CAP_CHANNEL_CONF) |
|
|
|
st->codec->channels = 0; |
|
|
|
|
|
|
|
//try to just open decoders, in case this is enough to get parameters |
|
|
|
if(!has_codec_parameters(st->codec)){ |
|
|
|
AVCodec *codec = avcodec_find_decoder(st->codec->codec_id); |
|
|
|
if (codec) |
|
|
|
avcodec_open(st->codec, codec); |
|
|
|
} |
|
|
|
|