GST_BUFFER_FLAG_SET (output_buffer, GST_BUFFER_FLAG_DISCONT);
}
+ if (GST_VIDEO_CODEC_FRAME_FLAG_IS_SET (frame,
+ GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED)) {
+ GST_DEBUG_OBJECT (decoder,
+ "marking frame %" GST_TIME_FORMAT " as corrupted",
+ GST_TIME_ARGS (frame->pts));
+ GST_BUFFER_FLAG_SET (output_buffer, GST_BUFFER_FLAG_CORRUPTED);
+ }
+
if (decoder_class->transform_meta) {
if (G_LIKELY (frame->input_buffer)) {
CopyMetaData data;
GST_VIDEO_CODEC_FRAME_SET_SYNC_POINT (priv->current_frame);
}
+ if (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_CORRUPTED)) {
+ GST_LOG_OBJECT (decoder, "Marking as corrupted");
+ GST_VIDEO_CODEC_FRAME_FLAG_SET (priv->current_frame,
+ GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED);
+ }
+
/* In reverse playback, just capture and queue frames for later processing */
if (decoder->input_segment.rate < 0.0) {
priv->parse_gather =
* @GST_VIDEO_CODEC_FRAME_FLAG_SYNC_POINT: is the frame a synchronization point (keyframe)
* @GST_VIDEO_CODEC_FRAME_FLAG_FORCE_KEYFRAME: should the output frame be made a keyframe
* @GST_VIDEO_CODEC_FRAME_FLAG_FORCE_KEYFRAME_HEADERS: should the encoder output stream headers
+ * @GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED: the buffer data is corrupted (Since: 1.20)
*
* Flags for #GstVideoCodecFrame
*/
GST_VIDEO_CODEC_FRAME_FLAG_DECODE_ONLY = (1<<0),
GST_VIDEO_CODEC_FRAME_FLAG_SYNC_POINT = (1<<1),
GST_VIDEO_CODEC_FRAME_FLAG_FORCE_KEYFRAME = (1<<2),
- GST_VIDEO_CODEC_FRAME_FLAG_FORCE_KEYFRAME_HEADERS = (1<<3)
+ GST_VIDEO_CODEC_FRAME_FLAG_FORCE_KEYFRAME_HEADERS = (1<<3),
+ /**
+ * GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED:
+ *
+ * The buffer data is corrupted.
+ *
+ * Since: 1.20
+ */
+ GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED = (1<<4),
} GstVideoCodecFrameFlags;
/**