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-19 16:01:21 +0300
committerHe Junyan <junyan.he@intel.com>2021-09-19 17:43:11 +0300
commit9289df42912a6fad32820835b90472bde3e8f60a (patch)
treefe3cd959d329e96e12404dc94f5f77cff1fb33be
parent25dbae6e735ad68bf30780cbd1d917e7c5f0629d (diff)
test: bitwriter: Add a test for reset_and_get_data when not byte unaligned.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/886>
-rw-r--r--tests/check/libs/bitwriter.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/check/libs/bitwriter.c b/tests/check/libs/bitwriter.c
index 4628a5b918..19fb2d7683 100644
--- a/tests/check/libs/bitwriter.c
+++ b/tests/check/libs/bitwriter.c
@@ -149,6 +149,66 @@ GST_START_TEST (test_reset)
GST_END_TEST;
+GST_START_TEST (test_reset_data_unaligned)
+{
+ GstBitWriter writer;
+ static guint8 sdata[] = { 0xff, 0xf1, 0xf2, 0x80 };
+ guint8 *data, i;
+ GstBuffer *buf;
+ GstMapInfo info;
+
+ gst_bit_writer_init_with_size (&writer, 32, TRUE);
+ fail_unless_equals_int (gst_bit_writer_get_remaining (&writer), 2048);
+
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0xf, 4));
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x7, 3));
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x3, 2));
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x3, 2));
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x8, 4));
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x1, 1));
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0xf2, 8));
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x2, 2));
+
+ fail_unless_equals_int (gst_bit_writer_get_remaining (&writer), 2048 - 26);
+
+ data = gst_bit_writer_reset_and_get_data (&writer);
+ fail_unless (data != NULL);
+
+ for (i = 0; i < 4; i++)
+ fail_unless (memcmp (&sdata[i], &data[i], 1) == 0);
+
+ gst_bit_writer_init (&writer);
+
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x7, 3));
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0xf, 4));
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x1, 1));
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x1, 1));
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x3, 2));
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x8, 4));
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x1, 1));
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0xf2, 8));
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x1, 1));
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x0, 1));
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x0, 1));
+ fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x0, 3));
+
+ fail_unless_equals_int (gst_bit_writer_get_size (&writer), 30);
+
+ buf = gst_bit_writer_reset_and_get_buffer (&writer);
+ fail_unless (buf != NULL);
+ fail_unless (gst_buffer_map (buf, &info, GST_MAP_READWRITE));
+ fail_unless (info.data);
+ fail_unless_equals_int (info.size, 4);
+
+ for (i = 0; i < 4; i++)
+ fail_unless (memcmp (&sdata[i], &info.data[i], 1) == 0);
+
+ g_free (data);
+ gst_buffer_unmap (buf, &info);
+ gst_buffer_unref (buf);
+}
+
+GST_END_TEST;
static Suite *
gst_bit_writer_suite (void)
@@ -161,6 +221,7 @@ gst_bit_writer_suite (void)
tcase_add_test (tc_chain, test_initialization);
tcase_add_test (tc_chain, test_data);
tcase_add_test (tc_chain, test_reset);
+ tcase_add_test (tc_chain, test_reset_data_unaligned);
return s;
}