ffmpeg: for h264 we need has_b_frames from the decoder
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 14 Jun 2014 21:23:42 +0000 (23:23 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 14 Jun 2014 21:32:08 +0000 (23:32 +0200)
Other solutions welcome

Fixes Ticket3711

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
ffmpeg.c

index 6338a68..f2aef21 100644 (file)
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -1886,11 +1886,16 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output)
 
     // The following line may be required in some cases where there is no parser
     // or the parser does not has_b_frames correctly
-//     ist->st->codec->has_b_frames = ist->dec_ctx->has_b_frames;
     if (ist->st->codec->has_b_frames < ist->dec_ctx->has_b_frames) {
-        av_log_ask_for_sample(ist->dec_ctx, "has_b_frames is larger in decoder than demuxer %d > %d ",
-            ist->dec_ctx->has_b_frames, ist->st->codec->has_b_frames
-        );
+        if (ist->dec_ctx->codec_id == AV_CODEC_ID_H264) {
+            ist->st->codec->has_b_frames = ist->dec_ctx->has_b_frames;
+        } else
+            av_log_ask_for_sample(
+                ist->dec_ctx,
+                "has_b_frames is larger in decoder than demuxer %d > %d ",
+                ist->dec_ctx->has_b_frames,
+                ist->st->codec->has_b_frames
+            );
     }
 
     if (*got_output || ret<0 || pkt->size)