h265parser: Skip unused bits in an SEI.
authorJan Schmidt <jan@centricular.com>
Fri, 14 Feb 2020 17:18:07 +0000 (04:18 +1100)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Tue, 25 Feb 2020 09:33:47 +0000 (09:33 +0000)
Alternative approach to 18b54f8d347030c73d8afbeaf55df57aa5acbb96
that skips all bits in a broken SEI correctly.

gst-libs/gst/codecparsers/gsth265parser.c

index fdce277..325b367 100644 (file)
@@ -2539,7 +2539,7 @@ nal_reader_has_more_data_in_payload (NalReader * nr,
     guint32 payload_start_pos_bit, guint32 payloadSize)
 {
   if (nal_reader_is_byte_aligned (nr) &&
-      (nal_reader_get_pos (nr) == (payload_start_pos_bit + 8 * payloadSize)))
+      (nal_reader_get_pos (nr) >= (payload_start_pos_bit + 8 * payloadSize)))
     return FALSE;
 
   return TRUE;
@@ -2640,7 +2640,7 @@ gst_h265_parser_parse_sei_message (GstH265Parser * parser,
    * In theory, we can have a more optimized implementation by skipping the
    * data left in PayLoadSize without out individually checking for each bits,
    * since the totoal size will be always less than payloadSize*/
-  if (nal_reader_has_more_data_in_payload (nr, payload_start_pos_bit,
+  while (nal_reader_has_more_data_in_payload (nr, payload_start_pos_bit,
           payloadSize)) {
     /* Skip the byte alignment bits */
     if (!nal_reader_skip (nr, 1))