summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2014-01-16 13:44:56 +0100
committerSebastian Dröge <sebastian@centricular.com>2014-01-16 13:46:26 +0100
commitb278ca55bec70bafbd5c1d2ba9a8a1d4fa24ec7f (patch)
tree76845740dc0cbe1b0c89f4b0539ee415c3d597d9
parentca1b5d85765be8df27d0a87a45426c7925ce1f29 (diff)
avviddec: Mark frames as corrupted if libav tells us they are
This is currently only implemented by the h264 codec. https://bugzilla.gnome.org/show_bug.cgi?id=722290
-rw-r--r--ext/libav/gstavviddec.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c
index d968ebf..fbb2876 100644
--- a/ext/libav/gstavviddec.c
+++ b/ext/libav/gstavviddec.c
@@ -1291,6 +1291,8 @@ gst_ffmpegviddec_video_frame (GstFFMpegVidDec * ffmpegdec,
ffmpegdec->picture->repeat_pict);
GST_DEBUG_OBJECT (ffmpegdec, "interlaced_frame:%d (current:%d)",
ffmpegdec->picture->interlaced_frame, ffmpegdec->ctx_interlaced);
+ GST_DEBUG_OBJECT (ffmpegdec, "corrupted frame: %d",
+ ! !(ffmpegdec->picture->flags & AV_FRAME_FLAG_CORRUPT));
if (G_UNLIKELY (ffmpegdec->picture->interlaced_frame !=
ffmpegdec->ctx_interlaced)) {
@@ -1307,6 +1309,10 @@ gst_ffmpegviddec_video_frame (GstFFMpegVidDec * ffmpegdec,
if (G_UNLIKELY (*ret != GST_FLOW_OK))
goto no_output;
+ /* Mark corrupted frames as corrupted */
+ if (ffmpegdec->picture->flags & AV_FRAME_FLAG_CORRUPT)
+ GST_BUFFER_FLAG_SET (out_frame->output_buffer, GST_BUFFER_FLAG_CORRUPTED);
+
if (ffmpegdec->ctx_interlaced) {
/* set interlaced flags */
if (ffmpegdec->picture->repeat_pict)