diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2014-01-16 13:44:56 +0100 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2014-01-16 13:46:26 +0100 |
commit | b278ca55bec70bafbd5c1d2ba9a8a1d4fa24ec7f (patch) | |
tree | 76845740dc0cbe1b0c89f4b0539ee415c3d597d9 | |
parent | ca1b5d85765be8df27d0a87a45426c7925ce1f29 (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.c | 6 |
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) |