#include #include "gstgetbits.h" char * print_bits (unsigned long bits, int size) { char *ret = (char *) malloc (size + 1); int i; ret[size] = 0; for (i = 0; i < size; i++) { if (bits & (1 << i)) ret[(size - 1) - i] = '1'; else ret[(size - 1) - i] = '0'; } return ret; } static unsigned char testbuffer[] = { 0x11, 0x22, 0x44, 0x88, 0xCC, 0xEE, 0xFF, 0x11 }; void empty (gst_getbits_t * gb, void *data) { printf ("buffer empty\n"); gst_getbits_newbuf (gb, (unsigned char *) testbuffer, 7); } int main (int argc, char *argv[]) { gst_getbits_t gb; int i, j; int bits; gst_getbits_init (&gb, NULL, NULL); gst_getbits_newbuf (&gb, (unsigned char *) testbuffer, 7); for (i = 0; i < 7; i++) { for (j = 0; j < 8; j++) { printf ("%lu", gst_getbits2 (&gb)); gst_backbitsn (&gb, 1); } printf (" = %01x\n", testbuffer[i]); } gst_getbits_newbuf (&gb, (unsigned char *) testbuffer, 7); bits = gst_getbits8 (&gb); printf ("%08x <-> 00000011 %lu\n", bits, gb.bits); bits = gst_getbits8 (&gb); printf ("%08x <-> 00000022 %lu\n", bits, gb.bits); bits = gst_getbits8 (&gb); printf ("%08x <-> 00000044 %lu\n", bits, gb.bits); bits = gst_getbits8 (&gb); printf ("%08x <-> 00000088 %lu\n", bits, gb.bits); bits = gst_getbits6 (&gb); printf ("%08x <-> 00000033 %lu\n", bits, gb.bits); gst_backbitsn (&gb, 16); bits = gst_getbits10 (&gb); printf ("%08x <-> 00000088 \n", bits); gst_getbits_newbuf (&gb, (unsigned char *) testbuffer, 7); bits = gst_getbits8 (&gb); printf ("%08x <-> 00000011 \n", bits); bits = gst_getbits8 (&gb); printf ("%08x <-> 00000022 \n", bits); bits = gst_getbits8 (&gb); printf ("%08x <-> 00000044 \n", bits); bits = gst_getbits6 (&gb); printf ("%08x <-> 00000022 \n", bits); gst_backbitsn (&gb, 19); bits = gst_getbits19 (&gb); printf ("%08x <-> 00009122 \n", bits); bits = gst_getbits10 (&gb); printf ("%08x <-> 000000cc \n", bits); gst_backbitsn (&gb, 8); gst_backbitsn (&gb, 19); gst_backbitsn (&gb, 8); bits = gst_getbits19 (&gb); printf ("%08x <-> 00012244 \n", bits); bits = gst_getbits8 (&gb); printf ("%08x <-> 00000088 \n", bits); return 0; }