lavf: Cleanup try_decode_frame() logic.

This fixes AAC playback in ffplay.
pull/2/head
Alex Converse 14 years ago
parent 71a1d1116f
commit a58858d60d
  1. 3
      libavcodec/aacdec.c
  2. 9
      libavformat/utils.c

@ -568,9 +568,6 @@ static av_cold int aac_decode_init(AVCodecContext *avctx)
ac->m4ac.sample_rate = avctx->sample_rate; ac->m4ac.sample_rate = avctx->sample_rate;
if (avctx->extradata_size > 0) { if (avctx->extradata_size > 0) {
avctx->channels = 0;
avctx->frame_size = 0;
avctx->sample_rate = 0;
if (decode_audio_specific_config(ac, ac->avctx, &ac->m4ac, if (decode_audio_specific_config(ac, ac->avctx, &ac->m4ac,
avctx->extradata, avctx->extradata,
avctx->extradata_size) < 0) avctx->extradata_size) < 0)

@ -2090,7 +2090,8 @@ static int try_decode_frame(AVStream *st, AVPacket *avpkt, AVDictionary **option
return ret; return ret;
} }
if(!has_codec_parameters(st->codec) || !has_decode_delay_been_guessed(st)){ if(!has_codec_parameters(st->codec) || !has_decode_delay_been_guessed(st) ||
(!st->codec_info_nb_frames && st->codec->codec->capabilities & CODEC_CAP_CHANNEL_CONF)) {
switch(st->codec->codec_type) { switch(st->codec->codec_type) {
case AVMEDIA_TYPE_VIDEO: case AVMEDIA_TYPE_VIDEO:
avcodec_get_frame_defaults(&picture); avcodec_get_frame_defaults(&picture);
@ -2387,11 +2388,7 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
least one frame of codec data, this makes sure the codec initializes least one frame of codec data, this makes sure the codec initializes
the channel configuration and does not only trust the values from the container. the channel configuration and does not only trust the values from the container.
*/ */
if (!has_codec_parameters(st->codec) || try_decode_frame(st, pkt, (options && i <= orig_nb_streams )? &options[i] : NULL);
!has_decode_delay_been_guessed(st) ||
(st->codec->codec &&
st->codec->codec->capabilities & CODEC_CAP_CHANNEL_CONF))
try_decode_frame(st, pkt, (options && i <= orig_nb_streams )? &options[i] : NULL);
st->codec_info_nb_frames++; st->codec_info_nb_frames++;
count++; count++;

Loading…
Cancel
Save