#include <stdlib.h> #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; }