From b7d3a219aba8df190ea359d0c2fb4c2d60a771d0 Mon Sep 17 00:00:00 2001 From: He Junyan Date: Fri, 14 Oct 2022 15:27:52 +0800 Subject: [PATCH] av1parse: Set the output buffer flags correctly. The current code forgets to clear some flags and has some typo. Part-of: --- .../gst/videoparsers/gstav1parse.c | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/subprojects/gst-plugins-bad/gst/videoparsers/gstav1parse.c b/subprojects/gst-plugins-bad/gst/videoparsers/gstav1parse.c index 2ad5e7dc8c..73c45f5b0c 100644 --- a/subprojects/gst-plugins-bad/gst/videoparsers/gstav1parse.c +++ b/subprojects/gst-plugins-bad/gst/videoparsers/gstav1parse.c @@ -961,20 +961,29 @@ gst_av1_parse_push_data (GstAV1Parse * self, GstBaseParseFrame * frame, if (self->discont) { GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DISCONT); self->discont = FALSE; + } else { + GST_BUFFER_FLAG_UNSET (buf, GST_BUFFER_FLAG_DISCONT); } + if (self->header) { GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_HEADER); self->header = FALSE; - } - if (self->keyframe) { - GST_BUFFER_FLAG_UNSET (buffer, GST_BUFFER_FLAG_DELTA_UNIT); - self->keyframe = FALSE; } else { - GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT); + GST_BUFFER_FLAG_UNSET (buf, GST_BUFFER_FLAG_HEADER); } - if (frame_finished) - GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_MARKER); + if (self->keyframe) { + GST_BUFFER_FLAG_UNSET (buf, GST_BUFFER_FLAG_DELTA_UNIT); + self->keyframe = FALSE; + } else { + GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT); + } + + if (frame_finished) { + GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_MARKER); + } else { + GST_BUFFER_FLAG_UNSET (buf, GST_BUFFER_FLAG_MARKER); + } if (self->align == GST_AV1_PARSE_ALIGN_FRAME) { if (!self->show_frame) { @@ -982,6 +991,8 @@ gst_av1_parse_push_data (GstAV1Parse * self, GstBaseParseFrame * frame, } else { GST_BUFFER_FLAG_UNSET (buf, GST_BUFFER_FLAG_DECODE_ONLY); } + } else { + GST_BUFFER_FLAG_UNSET (buf, GST_BUFFER_FLAG_DECODE_ONLY); } gst_buffer_replace (&frame->out_buffer, buf);