From fa4b52bdca5eba11493b84a95f20c7d53aa4eddc Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Mon, 13 Feb 2006 16:01:50 +0000 Subject: [PATCH] ext/ffmpeg/gstffmpegdec.c: More fixes for keyframe detection in ffmpeg decoders... Original commit message from CVS: * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_release_buffer), (gst_ffmpegdec_frame): More fixes for keyframe detection in ffmpeg decoders... --- ChangeLog | 6 ++++++ common | 2 +- ext/ffmpeg/gstffmpegdec.c | 8 +++++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 477343107f..a28175006d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-02-13 Edward Hervey + + * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_release_buffer), + (gst_ffmpegdec_frame): + More fixes for keyframe detection in ffmpeg decoders... + 2006-02-12 Thomas Vander Stichele * ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_caps_to_pixfmt): diff --git a/common b/common index 58567e5519..c30611ac38 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 58567e5519f2d00a4592491db1a6e8302993279e +Subproject commit c30611ac38336030fed6d258c6e558cc537adbc5 diff --git a/ext/ffmpeg/gstffmpegdec.c b/ext/ffmpeg/gstffmpegdec.c index 6701827c9e..01c0552319 100644 --- a/ext/ffmpeg/gstffmpegdec.c +++ b/ext/ffmpeg/gstffmpegdec.c @@ -623,11 +623,12 @@ gst_ffmpegdec_release_buffer (AVCodecContext * context, AVFrame * picture) GstBuffer *buf; GstFFMpegDec *ffmpegdec = (GstFFMpegDec *) context->opaque; - g_return_if_fail (buf != NULL); g_return_if_fail (picture->type == FF_BUFFER_TYPE_USER); buf = GST_BUFFER (picture->opaque); + g_return_if_fail (buf != NULL); + if (buf == ffmpegdec->last_buffer) ffmpegdec->last_buffer = NULL; gst_buffer_unref (buf); @@ -821,11 +822,12 @@ gst_ffmpegdec_frame (GstFFMpegDec * ffmpegdec, ffmpegdec->picture, &have_data, data, size); is_itype = (ffmpegdec->picture->pict_type == FF_I_TYPE); is_reference = (ffmpegdec->picture->reference == 1); - iskeyframe = (is_itype || is_reference) + iskeyframe = (is_itype || is_reference || ffmpegdec->picture->key_frame) || (oclass->in_plugin->id == CODEC_ID_INDEO3) || (oclass->in_plugin->id == CODEC_ID_MSZH) || (oclass->in_plugin->id == CODEC_ID_ZLIB) - || (oclass->in_plugin->id == CODEC_ID_VP3); + || (oclass->in_plugin->id == CODEC_ID_VP3) + || (oclass->in_plugin->id == CODEC_ID_HUFFYUV); GST_LOG_OBJECT (ffmpegdec, "Decoded video: len=%d, have_data=%d, " "is_keyframe:%d, is_itype:%d, is_reference:%d",