h264parse: properly interpret baseparse draining state
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Thu, 6 Oct 2011 10:25:26 +0000 (12:25 +0200)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Thu, 6 Oct 2011 10:26:23 +0000 (12:26 +0200)
... which means the input data has reached the end, but need not exclude
many separate frames may still need parsing.

Fixes merging NALs into AU.

gst/videoparsers/gsth264parse.c

index e45ff0c3aff67f2abd095dddca18cb57c9619ae0..a0e2a8f65e5ea91e6366d8f9ac1d51cc1c85792d 100644 (file)
@@ -613,7 +613,7 @@ gst_h264_parse_check_valid_frame (GstBaseParse * parse,
   data = GST_BUFFER_DATA (buffer);
   size = GST_BUFFER_SIZE (buffer);
 
-  drain = GST_BASE_PARSE_DRAINING (parse);
+  drain = FALSE;
   current_off = h264parse->current_off;
 
   GST_DEBUG_OBJECT (h264parse, "last parse position %u", current_off);
@@ -665,8 +665,9 @@ gst_h264_parse_check_valid_frame (GstBaseParse * parse,
         if (!h264parse->nalu.size && !h264parse->nalu.valid)
           h264parse->nalu = nalu;
 
-        if (drain) {
-          GST_DEBUG_OBJECT (h264parse, "drainning NAL %u %u %u", size,
+        if (GST_BASE_PARSE_DRAINING (parse)) {
+          drain = TRUE;
+          GST_DEBUG_OBJECT (h264parse, "draining NAL %u %u %u", size,
               h264parse->nalu.offset, h264parse->nalu.size);
           /*  Can't parse the nalu */
           if (size - h264parse->nalu.offset < 2) {