From a275e1e029e9b5d88be26b8304c9a162e4567346 Mon Sep 17 00:00:00 2001 From: Benjamin Gaignard Date: Mon, 16 May 2022 15:27:40 +0200 Subject: [PATCH] videoparsers: h265: Be less restrictive between PPS and SPS parsing order Allow to parse PPS to be parser even if SPS hasn't been parsered before. This help to parse VPSSPSPPS_A_MainConcept_1 conformance test Part-of: --- .../gst-plugins-bad/gst/videoparsers/gsth265parse.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/subprojects/gst-plugins-bad/gst/videoparsers/gsth265parse.c b/subprojects/gst-plugins-bad/gst/videoparsers/gsth265parse.c index e60e839..54aa77e 100644 --- a/subprojects/gst-plugins-bad/gst/videoparsers/gsth265parse.c +++ b/subprojects/gst-plugins-bad/gst/videoparsers/gsth265parse.c @@ -797,14 +797,8 @@ gst_h265_parse_process_nal (GstH265Parse * h265parse, GstH265NalUnit * nalu) h265parse->state |= GST_H265_PARSE_STATE_GOT_SPS; break; case GST_H265_NAL_PPS: - /* expected state: got-sps */ - h265parse->state &= GST_H265_PARSE_STATE_GOT_SPS; - if (!GST_H265_PARSE_STATE_VALID (h265parse, GST_H265_PARSE_STATE_GOT_SPS)) - return FALSE; - pres = gst_h265_parser_parse_pps (nalparser, nalu, &pps); - /* arranged for a fallback pps.id, so use that one and only warn */ if (pres != GST_H265_PARSER_OK) { GST_WARNING_OBJECT (h265parse, "failed to parse PPS:"); @@ -960,16 +954,8 @@ gst_h265_parse_process_nal (GstH265Parse * h265parse, GstH265NalUnit * nalu) break; } case GST_H265_NAL_AUD: - /* Just accumulate AU Delimiter, whether it's before SPS or not */ - pres = gst_h265_parser_parse_nal (nalparser, nalu); - if (pres != GST_H265_PARSER_OK) - return FALSE; - break; default: - /* drop anything before the initial SPS */ - if (!GST_H265_PARSE_STATE_VALID (h265parse, GST_H265_PARSE_STATE_GOT_SPS)) - return FALSE; - + /* Just accumulate AU Delimiter, whether it's before SPS or not */ pres = gst_h265_parser_parse_nal (nalparser, nalu); if (pres != GST_H265_PARSER_OK) return FALSE; -- 2.7.4