Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/GStreamer/gstreamer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHe Junyan <junyan.he@intel.com>2021-09-18 19:19:43 +0300
committerHe Junyan <junyan.he@intel.com>2021-09-19 15:41:59 +0300
commit81cf9754e3c29148fd7a867241a87e2ac72e398b (patch)
tree6087a6d2efd2524d54d2bea1fcad002b31e498e7
parentc6acee201e69295c6e563806633002393682989f (diff)
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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/886>
-rw-r--r--libs/gst/base/gstbitwriter.c4
1 files 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