summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Nauwelaerts <mnauw@users.sourceforge.net>2013-11-11 13:15:54 +0100
committerSebastian Dröge <sebastian@centricular.com>2013-11-26 12:47:38 +0100
commit61dd410528f656415bb057ab375e6892f96e7a21 (patch)
treefa26070d691f78c167e827a6bcb5ec4cc4fec25c
parent6ce93813a8891438088e705d35881a13e088c635 (diff)
mpeg2dec: graceful degradation for badly parsed input
-rw-r--r--ext/mpeg2dec/gstmpeg2dec.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/ext/mpeg2dec/gstmpeg2dec.c b/ext/mpeg2dec/gstmpeg2dec.c
index 03c8b4e3..811e0525 100644
--- a/ext/mpeg2dec/gstmpeg2dec.c
+++ b/ext/mpeg2dec/gstmpeg2dec.c
@@ -406,6 +406,13 @@ gst_mpeg2dec_alloc_sized_buf (GstMpeg2dec * mpeg2dec, guint size,
state = gst_video_decoder_get_output_state (GST_VIDEO_DECODER (mpeg2dec));
if (!mpeg2dec->need_cropping || mpeg2dec->has_cropping) {
+ /* need parsed input, but that might be slightly bogus,
+ * so avoid giving up altogether and mark it as error */
+ if (frame->output_buffer) {
+ gst_buffer_replace (&frame->output_buffer, NULL);
+ GST_VIDEO_DECODER_ERROR (mpeg2dec, 1, STREAM, DECODE,
+ ("decoding error"), ("Input not correctly parsed"), ret);
+ }
ret =
gst_video_decoder_allocate_output_frame (GST_VIDEO_DECODER (mpeg2dec),
frame);