From a7ca0b2079928014751f4ad458df33ef8ac963c6 Mon Sep 17 00:00:00 2001 From: He Junyan Date: Fri, 4 Feb 2022 17:12:15 +0800 Subject: [PATCH] av1parse: let the parse continue when MISSING_OBU_REFERENCE error. Some streams may have verbose OBUs before a valid sequence header. We should let the parse continue rather than return a error. Part-of: --- .../gst-plugins-bad/gst/videoparsers/gstav1parse.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/subprojects/gst-plugins-bad/gst/videoparsers/gstav1parse.c b/subprojects/gst-plugins-bad/gst/videoparsers/gstav1parse.c index 7ea3a9422d..1dfa5d4c80 100644 --- a/subprojects/gst-plugins-bad/gst/videoparsers/gstav1parse.c +++ b/subprojects/gst-plugins-bad/gst/videoparsers/gstav1parse.c @@ -1373,7 +1373,8 @@ gst_av1_parse_handle_obu_to_obu (GstBaseParse * parse, g_assert (consumed <= map_info.size); - if (res == GST_AV1_PARSER_BITSTREAM_ERROR) { + if (res == GST_AV1_PARSER_BITSTREAM_ERROR || + res == GST_AV1_PARSER_MISSING_OBU_REFERENCE) { if (consumed) { *skipsize = consumed; } else { @@ -1487,7 +1488,8 @@ again: break; } - if (res == GST_AV1_PARSER_BITSTREAM_ERROR) { + if (res == GST_AV1_PARSER_BITSTREAM_ERROR || + res == GST_AV1_PARSER_MISSING_OBU_REFERENCE) { /* Discard the whole frame */ *skipsize = map_info.size; GST_WARNING_OBJECT (parse, "Parse obu error, discard %d", *skipsize); @@ -1609,7 +1611,8 @@ again: goto out; } - if (res == GST_AV1_PARSER_BITSTREAM_ERROR) { + if (res == GST_AV1_PARSER_BITSTREAM_ERROR || + res == GST_AV1_PARSER_MISSING_OBU_REFERENCE) { *skipsize = map_info.size; GST_WARNING_OBJECT (parse, "Parse obu error, discard whole buffer %d.", *skipsize);