h264/h265parse: Fix initial skip
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Thu, 7 May 2020 15:06:45 +0000 (11:06 -0400)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Thu, 7 May 2020 16:08:36 +0000 (12:08 -0400)
Account for start codes possibly be 4 bytes. For HEVC, also take into
account that we might be missing only one of the two identification
bytes.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1251>

gst/videoparsers/gsth264parse.c
gst/videoparsers/gsth265parse.c

index 8f12151..83c9853 100644 (file)
@@ -1384,7 +1384,8 @@ gst_h264_parse_handle_frame (GstBaseParse * parse,
         }
         break;
       case GST_H264_PARSER_NO_NAL:
-        *skipsize = size - 3;
+        /* Start code may have up to 4 bytes */
+        *skipsize = size - 4;
         goto skip;
         break;
       default:
index 0c4ca17..849e743 100644 (file)
@@ -1208,7 +1208,10 @@ gst_h265_parse_handle_frame (GstBaseParse * parse,
         }
         break;
       case GST_H265_PARSER_NO_NAL:
-        *skipsize = size - 3;
+        /* start code may have up to 4 bytes, and we may also get that return
+         * value if only one of the two header bytes are present, make sure
+         * not to skip too much */
+        *skipsize = size - 5;
         goto skip;
       default:
         /* should not really occur either */