diff options
author | He Junyan <junyan.he@intel.com> | 2021-09-18 19:19:43 +0300 |
---|---|---|
committer | GStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2021-10-29 17:26:18 +0300 |
commit | 68f67302211a5fa2152a108154d37fef8cf682af (patch) | |
tree | a50b8db96b4e0c91609d408ad06a4add079cdc61 | |
parent | 7cec3538f57b76e12cd425634e41793b6190b676 (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/1272>
-rw-r--r-- | libs/gst/base/gstbitwriter.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libs/gst/base/gstbitwriter.c b/libs/gst/base/gstbitwriter.c index 2f7f56ba4f..baadd715b5 100644 --- a/libs/gst/base/gstbitwriter.c +++ b/libs/gst/base/gstbitwriter.c @@ -200,7 +200,7 @@ gst_bit_writer_reset_and_get_data (GstBitWriter * bitwriter) data = bitwriter->data; if (bitwriter->owned) - data = g_memdup (data, bitwriter->bit_size >> 3); + data = g_memdup (data, GST_ROUND_UP_8 (bitwriter->bit_size) >> 3); gst_bit_writer_reset (bitwriter); return data; @@ -226,7 +226,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 |