From 81cf9754e3c29148fd7a867241a87e2ac72e398b Mon Sep 17 00:00:00 2001 From: He Junyan Date: Sun, 19 Sep 2021 00:19:43 +0800 Subject: bitwriter: Fix the trailing bits lost when getting its data. In reset_and_get_data and reset_and_get_buffer, it fails to include the trailing bits less than 8. So, when the bit_size is not byte aligned, the trailing bits are lost in the return buffer. Part-of: --- libs/gst/base/gstbitwriter.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/gst/base/gstbitwriter.c b/libs/gst/base/gstbitwriter.c index 0947a680df..887480a76c 100644 --- a/libs/gst/base/gstbitwriter.c +++ b/libs/gst/base/gstbitwriter.c @@ -202,7 +202,7 @@ gst_bit_writer_reset_and_get_data (GstBitWriter * bitwriter) data = bitwriter->data; if (bitwriter->owned) - data = g_memdup2 (data, bitwriter->bit_size >> 3); + data = g_memdup2 (data, GST_ROUND_UP_8 (bitwriter->bit_size) >> 3); gst_bit_writer_reset (bitwriter); return data; @@ -228,7 +228,7 @@ gst_bit_writer_reset_and_get_buffer (GstBitWriter * bitwriter) g_return_val_if_fail (bitwriter != NULL, NULL); - size = bitwriter->bit_size >> 3; + size = GST_ROUND_UP_8 (bitwriter->bit_size) >> 3; data = gst_bit_writer_reset_and_get_data (bitwriter); /* we cannot rely on buffers allocated externally, thus let's dup -- cgit v1.2.3