Commit ae447836 authored by Baptiste Coudurier's avatar Baptiste Coudurier

In av_find_stream_info, decode at least 4 h.264 frames to be able to guess delay.

Originally committed as revision 24014 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent b06855f1
...@@ -2019,6 +2019,12 @@ static int has_codec_parameters(AVCodecContext *enc) ...@@ -2019,6 +2019,12 @@ static int has_codec_parameters(AVCodecContext *enc)
return enc->codec_id != CODEC_ID_NONE && val != 0; return enc->codec_id != CODEC_ID_NONE && val != 0;
} }
static int has_decode_delay_been_guessed(AVStream *st)
{
return st->codec->codec_id != CODEC_ID_H264 ||
st->codec_info_nb_frames >= 4 + st->codec->has_b_frames;
}
static int try_decode_frame(AVStream *st, AVPacket *avpkt) static int try_decode_frame(AVStream *st, AVPacket *avpkt)
{ {
int16_t *samples; int16_t *samples;
...@@ -2035,7 +2041,7 @@ static int try_decode_frame(AVStream *st, AVPacket *avpkt) ...@@ -2035,7 +2041,7 @@ static int try_decode_frame(AVStream *st, AVPacket *avpkt)
return ret; return ret;
} }
if(!has_codec_parameters(st->codec)){ if(!has_codec_parameters(st->codec) || !has_decode_delay_been_guessed(st)){
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);
...@@ -2317,7 +2323,7 @@ int av_find_stream_info(AVFormatContext *ic) ...@@ -2317,7 +2323,7 @@ int av_find_stream_info(AVFormatContext *ic)
decompress the frame. We try to avoid that in most cases as decompress the frame. We try to avoid that in most cases as
it takes longer and uses more memory. For MPEG-4, we need to it takes longer and uses more memory. For MPEG-4, we need to
decompress for QuickTime. */ decompress for QuickTime. */
if (!has_codec_parameters(st->codec)) if (!has_codec_parameters(st->codec) || !has_decode_delay_been_guessed(st))
try_decode_frame(st, pkt); try_decode_frame(st, pkt);
count++; count++;
......
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