h265parse: Don't push NALs before we have HEADERS
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Wed, 10 Oct 2018 15:27:30 +0000 (15:27 +0000)
committerNicolas Dufresne <nicolas@ndufresne.ca>
Wed, 15 Apr 2020 14:10:16 +0000 (14:10 +0000)
Otherwise we may endup pushing incomplete caps. Note that this has the side
effect that caps are no longer pushed twice in presence of VUI with valid
framerate.

gst/videoparsers/gsth265parse.c

index 4b5ec72..26be12d 100644 (file)
@@ -1308,6 +1308,13 @@ gst_h265_parse_handle_frame (GstBaseParse * parse,
       goto skip;
     }
 
+    /* Do not push immediatly if we don't have all headers. This ensure that
+     * our caps are complete, avoiding a renegotiation */
+    if (h265parse->align == GST_H265_PARSE_ALIGN_NAL &&
+        !GST_H265_PARSE_STATE_VALID (h265parse,
+            GST_H265_PARSE_STATE_VALID_PICTURE_HEADERS))
+      frame->flags |= GST_BASE_PARSE_FRAME_FLAG_QUEUE;
+
     if (nonext) {
       /* If there is a marker flag, or input is AU, we know this is complete */
       if (GST_BUFFER_FLAG_IS_SET (frame->buffer, GST_BUFFER_FLAG_MARKER) ||