GNOME Bugzilla – Bug 553554
[base] Add a generic bit reader
Last modified: 2008-10-06 12:41:37 UTC
Hi, the attached patch adds a generic bit reader that can ready any number of bits from a memory buffer and can update the current read position. This makes parsing bit structures much easier. The patch adds it to libgstbase, adds a unit test and documentation.
Created attachment 119290 [details] [review] bitreader.diff
This will be splitted into a bit reader and byte reader tomorrow to avoid confusion as the byte functions only work on byte boundary and cause assertions otherwise.
Created attachment 119408 [details] [review] bitreader.diff Byte and Bit reader are splitted now and the byte reader also has support for reading 32 and 64 bit floating point numbers.
2008-10-06 Sebastian Dröge <sebastian.droege@collabora.co.uk> * docs/libs/gstreamer-libs-docs.sgml: * docs/libs/gstreamer-libs-sections.txt: * libs/gst/base/Makefile.am: * libs/gst/base/gstbitreader.c: (gst_bit_reader_new), (gst_bit_reader_new_from_buffer), (gst_bit_reader_free), (gst_bit_reader_init), (gst_bit_reader_init_from_buffer), (gst_bit_reader_set_pos), (gst_bit_reader_get_pos), (gst_bit_reader_get_remaining), (gst_bit_reader_skip), (gst_bit_reader_skip_to_byte): * libs/gst/base/gstbitreader.h: * libs/gst/base/gstbytereader.c: (GDOUBLE_SWAP_LE_BE), (GFLOAT_SWAP_LE_BE), (gst_byte_reader_new), (gst_byte_reader_new_from_buffer), (gst_byte_reader_free), (gst_byte_reader_init), (gst_byte_reader_init_from_buffer), (gst_byte_reader_set_pos), (gst_byte_reader_get_pos), (gst_byte_reader_get_remaining), (gst_byte_reader_skip), (gst_byte_reader_get_uint8), (gst_byte_reader_get_int8), (gst_byte_reader_peek_uint8), (gst_byte_reader_peek_int8), (gst_byte_reader_get_uint24_le), (gst_byte_reader_get_uint24_be), (gst_byte_reader_get_int24_le), (gst_byte_reader_get_int24_be), (gst_byte_reader_peek_uint24_le), (gst_byte_reader_peek_uint24_be), (gst_byte_reader_peek_int24_le), (gst_byte_reader_peek_int24_be): * libs/gst/base/gstbytereader.h: * tests/check/Makefile.am: * tests/check/libs/bitreader.c: (GST_START_TEST), (gst_bit_reader_suite): * tests/check/libs/bytereader.c: (GST_START_TEST), (gst_byte_reader_suite): Add bit reader and byte reader classes, including documentation and an extensive unit test suite. Fixes bug #553554.