- /** 
-         libsmacker - A C library for decoding .smk Smacker Video files 
-         Copyright (C) 2012-2017 Greg Kennedy 
-   
-         See smacker.h for more information. 
-   
-         smk_bitstream.h 
-                 SMK bitstream structure. Presents a block of raw bytes one 
-                 bit at a time, and protects against over-read. 
- */ 
-   
- #ifndef SMK_BITSTREAM_H 
- #define SMK_BITSTREAM_H 
-   
- /** Bitstream structure, Forward declaration */ 
- struct smk_bit_t; 
-   
- /* BITSTREAM Functions */ 
- /** Initialize a bitstream */ 
- struct smk_bit_t* smk_bs_init(const unsigned char* b, unsigned long size); 
-   
- /** This macro checks return code from _smk_bs_read_1 and 
-         jumps to error label if problems occur. */ 
- #define smk_bs_read_1(t,uc) \ 
- { \ 
-         if ((char)(uc = _smk_bs_read_1(t)) < 0) \ 
-         { \ 
-                 fprintf(stderr, "libsmacker::smk_bs_read_1(" #t ", " #uc ") - ERROR (file: %s, line: %lu)\n", __FILE__, (unsigned long)__LINE__); \ 
-                 goto error; \ 
-         } \ 
- } 
- /** Read a single bit from the bitstream, and advance. 
-         Returns -1 on error. */ 
- char _smk_bs_read_1(struct smk_bit_t* bs); 
-   
- /** This macro checks return code from _smk_bs_read_8 and 
-         jumps to error label if problems occur. */ 
- #define smk_bs_read_8(t,s) \ 
- { \ 
-         if ((short)(s = _smk_bs_read_8(t)) < 0) \ 
-         { \ 
-                 fprintf(stderr, "libsmacker::smk_bs_read_8(" #t ", " #s ") - ERROR (file: %s, line: %lu)\n", __FILE__, (unsigned long)__LINE__); \ 
-                 goto error; \ 
-         } \ 
- } 
- /** Read eight bits from the bitstream (one byte), and advance. 
-         Returns -1 on error. */ 
- short _smk_bs_read_8(struct smk_bit_t* bs); 
-   
- #endif 
-