diff --git a/libavformat/utils.c b/libavformat/utils.c index 7f6bfaa88a..bf8abeec68 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -752,6 +752,17 @@ int av_read_packet(AVFormatContext *s, AVPacket *pkt) /**********************************************************/ +static int determinable_frame_size(AVCodecContext *avctx) +{ + if (avctx->codec_id == CODEC_ID_AAC || + avctx->codec_id == CODEC_ID_MP1 || + avctx->codec_id == CODEC_ID_MP2 || + avctx->codec_id == CODEC_ID_MP3 || + avctx->codec_id == CODEC_ID_CELT) + return 1; + return 0; +} + /** * Get the number of samples of an audio frame. Return -1 on error. */ @@ -2101,12 +2112,7 @@ static int has_codec_parameters(AVCodecContext *avctx) switch (avctx->codec_type) { case AVMEDIA_TYPE_AUDIO: val = avctx->sample_rate && avctx->channels && avctx->sample_fmt != AV_SAMPLE_FMT_NONE; - if (!avctx->frame_size && - (avctx->codec_id == CODEC_ID_AAC || - avctx->codec_id == CODEC_ID_MP1 || - avctx->codec_id == CODEC_ID_MP2 || - avctx->codec_id == CODEC_ID_MP3 || - avctx->codec_id == CODEC_ID_CELT)) + if (!avctx->frame_size && determinable_frame_size(avctx)) return 0; break; case AVMEDIA_TYPE_VIDEO: