bitwriter: Fix a nal conversion bug when input is not byte aligned.
authorHe Junyan <junyan.he@intel.com>
Thu, 27 Oct 2022 06:40:49 +0000 (14:40 +0800)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Thu, 27 Oct 2022 12:15:43 +0000 (12:15 +0000)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3193>

subprojects/gst-plugins-bad/gst-libs/gst/codecparsers/gsth264bitwriter.c
subprojects/gst-plugins-bad/gst-libs/gst/codecparsers/gsth265bitwriter.c

index 4079924..7233c1f 100644 (file)
@@ -1600,8 +1600,10 @@ gst_h264_bit_writer_convert_to_nal (guint nal_prefix_size, gboolean packetized,
     goto error;
 
   if (raw_size % 8) {
-    if (!nal_writer_put_bits_uint8 (&nw, *(raw_data + raw_size / 8),
-            raw_size % 8))
+    guint8 data = *(raw_data + raw_size / 8);
+
+    if (!nal_writer_put_bits_uint8 (&nw,
+            data >> (8 - raw_size % 8), raw_size % 8))
       goto error;
   }
 
index 7bd5925..5f8690b 100644 (file)
@@ -2267,8 +2267,10 @@ gst_h265_bit_writer_convert_to_nal (guint nal_prefix_size,
     goto error;
 
   if (raw_size % 8) {
-    if (!nal_writer_put_bits_uint8 (&nw, *(raw_data + raw_size / 8),
-            raw_size % 8))
+    guint8 data = *(raw_data + raw_size / 8);
+
+    if (!nal_writer_put_bits_uint8 (&nw,
+            data >> (8 - raw_size % 8), raw_size % 8))
       goto error;
   }