## gstgetbits

gstgetbits — accelerated routines for getting bits from a data stream.

## Synopsis

    #include <libs/getbits/gstgetbits.h>

    struct      gst_getbits_t;
    void        (*GstGetbitsCallback)           (gst_getbits_t *gb,
                                                 void *data);
    void        gst_getbits_init                (gst_getbits_t *gb,
                                                 GstGetbitsCallback callback,
                                                 void *data);
    void        gst_getbits_newbuf              (gst_getbits_t *gb,
                                                 unsigned char *buffer,
                                                 unsigned long len);
    #define     gst_getbits_bitoffset           (gb)
    #define     gst_getbits_align_byte          (gb)
    #define     gst_getbits_bufferpos           (gb)
    #define     gst_getbits_bytesleft           (gb)
    #define     gst_getbits_bitsleft            (gb)
    #define     gst_getbyte                     (gb)
    #define     gst_getbits_fastn               (gb,n)
    #define     gst_getbitsn                    (gb,n)
    #define     gst_getbits1                    (gb)
    #define     gst_getbits2                    (gb)
    #define     gst_getbits3                    (gb)
    #define     gst_getbits4                    (gb)
    #define     gst_getbits5                    (gb)
    #define     gst_getbits6                    (gb)
    #define     gst_getbits7                    (gb)
    #define     gst_getbits8                    (gb)
    #define     gst_getbits9                    (gb)
    #define     gst_getbits10                   (gb)
    #define     gst_getbits11                   (gb)
    #define     gst_getbits12                   (gb)
    #define     gst_getbits13                   (gb)
    #define     gst_getbits14                   (gb)
    #define     gst_getbits15                   (gb)
    #define     gst_getbits16                   (gb)
    #define     gst_getbits17                   (gb)
    #define     gst_getbits18                   (gb)
    #define     gst_getbits19                   (gb)
    #define     gst_getbits20                   (gb)
    #define     gst_getbits21                   (gb)
    #define     gst_getbits22                   (gb)
    #define     gst_getbits23                   (gb)
    #define     gst_showbitsn                   (gb,n)
    #define     gst_showbits1                   (gb)
    #define     gst_showbits2                   (gb)
    #define     gst_showbits3                   (gb)
    #define     gst_showbits4                   (gb)
    #define     gst_showbits5                   (gb)
    #define     gst_showbits6                   (gb)
    #define     gst_showbits7                   (gb)
    #define     gst_showbits8                   (gb)
    #define     gst_showbits9                   (gb)
    #define     gst_showbits10                  (gb)
    #define     gst_showbits11                  (gb)
    #define     gst_showbits12                  (gb)
    #define     gst_showbits13                  (gb)
    #define     gst_showbits14                  (gb)
    #define     gst_showbits15                  (gb)
    #define     gst_showbits16                  (gb)
    #define     gst_showbits17                  (gb)
    #define     gst_showbits18                  (gb)
    #define     gst_showbits19                  (gb)
    #define     gst_showbits20                  (gb)
    #define     gst_showbits21                  (gb)
    #define     gst_showbits22                  (gb)
    #define     gst_showbits23                  (gb)
    #define     gst_showbits24                  (gb)
    #define     gst_showbits32                  (gb)
    #define     gst_flushbitsn                  (gb,n)
    #define     gst_flushbits32                 (gb)
    #define     gst_backbitsn                   (gb,n)
    #define     gst_backbits24                  (gb)

## Description

## Details

### struct gst_getbits_t

    struct gst_getbits_t {

      unsigned char *ptr;
      unsigned long *longptr;
      unsigned char *endptr;
      unsigned long length;
      long bits;
      unsigned long dword;
      unsigned long temp;

      GstGetbitsCallback callback;
      void *data;

      unsigned long (*get1bit)(gst_getbits_t *gb, unsigned long bits);
      unsigned long (*getbits)(gst_getbits_t *gb, unsigned long bits);
      unsigned long (*getbits_fast)(gst_getbits_t *gb, unsigned long bits);
      unsigned long (*getbyte)(gst_getbits_t *gb, unsigned long bits);
      unsigned long (*show1bit)(gst_getbits_t *gb, unsigned long bits);
      unsigned long (*showbits)(gst_getbits_t *gb, unsigned long bits);
      void (*flushbits)(gst_getbits_t *gb, unsigned long bits);
      void (*backbits)(gst_getbits_t *gb, unsigned long bits);
    };

### GstGetbitsCallback ()

    void        (*GstGetbitsCallback)           (gst_getbits_t *gb,
                                                 void *data);

`gb` : |
`data` : |

### gst_getbits_init ()

    void        gst_getbits_init                (gst_getbits_t *gb,
                                                 GstGetbitsCallback callback,
                                                 void *data);

`gb` : |
`callback` : |
`data` : |

### gst_getbits_newbuf ()

    void        gst_getbits_newbuf              (gst_getbits_t *gb,
                                                 unsigned char *buffer,
                                                 unsigned long len);

`gb` : |
`buffer` : |
`Param3` : |

### gst_getbits_bitoffset()

    #define     gst_getbits_bitoffset(gb)

`gb` : |

### gst_getbits_align_byte()

    #define gst_getbits_align_byte(gb)

`gb` : |

### gst_getbits_bufferpos()

    #define gst_getbits_bufferpos(gb)  ((gb)->ptr)

`gb` : |

### gst_getbits_bytesleft()

    #define gst_getbits_bytesleft(gb) ((gb)->endptr - (gb)->ptr)

`gb` : |

### gst_getbits_bitsleft()

    #define gst_getbits_bitsleft(gb) (((gb)->endptr - (gb)->ptr)*8  - ((-(gb)->bits)&0x7))

`gb` : |

### gst_getbyte()

    #define gst_getbyte(gb) (((gb)->getbyte)(gb,8))

`gb` : |

### gst_getbits_fastn()

    #define gst_getbits_fastn(gb,n) gst_getbits_fastX(gb, n)

`gb` : |
`n` : |

### gst_getbitsn()

    #define gst_getbitsn(gb,n) gst_getbitsX(gb, n)

`gb` : |
`n` : |

### gst_getbits1()

    #define gst_getbits1(gb) gst_get1bit(gb)

`gb` : |

### gst_getbits2()

    #define gst_getbits2(gb) gst_getbits_fastX(gb, 2)

`gb` : |

### gst_getbits3()

    #define gst_getbits3(gb) gst_getbits_fastX(gb, 3)

`gb` : |

### gst_getbits4()

    #define gst_getbits4(gb) gst_getbits_fastX(gb, 4)

`gb` : |

### gst_getbits5()

    #define gst_getbits5(gb) gst_getbits_fastX(gb, 5)

`gb` : |

### gst_getbits6()

    #define gst_getbits6(gb) gst_getbits_fastX(gb, 6)

`gb` : |

### gst_getbits7()

    #define gst_getbits7(gb) gst_getbits_fastX(gb, 7)

`gb` : |

### gst_getbits8()

    #define gst_getbits8(gb) gst_getbits_fastX(gb, 8)

`gb` : |

### gst_getbits9()

    #define gst_getbits9(gb) gst_getbits_fastX(gb, 9)

`gb` : |

### gst_getbits10()

    #define gst_getbits10(gb) gst_getbitsX(gb, 10)

`gb` : |

### gst_getbits11()

    #define gst_getbits11(gb) gst_getbitsX(gb, 11)

`gb` : |

### gst_getbits12()

    #define gst_getbits12(gb) gst_getbitsX(gb, 12)

`gb` : |

### gst_getbits13()

    #define gst_getbits13(gb) gst_getbitsX(gb, 13)

`gb` : |

### gst_getbits14()

    #define gst_getbits14(gb) gst_getbitsX(gb, 14)

`gb` : |

### gst_getbits15()

    #define gst_getbits15(gb) gst_getbitsX(gb, 15)

`gb` : |

### gst_getbits16()

    #define gst_getbits16(gb) gst_getbitsX(gb, 16)

`gb` : |

### gst_getbits17()

    #define gst_getbits17(gb) gst_getbitsX(gb, 17)

`gb` : |

### gst_getbits18()

    #define gst_getbits18(gb) gst_getbitsX(gb, 18)

`gb` : |

### gst_getbits19()

    #define gst_getbits19(gb) gst_getbitsX(gb, 19)

`gb` : |

### gst_getbits20()

    #define gst_getbits20(gb) gst_getbitsX(gb, 20)

`gb` : |

### gst_getbits21()

    #define gst_getbits21(gb) gst_getbitsX(gb, 21)

`gb` : |

### gst_getbits22()

    #define gst_getbits22(gb) gst_getbitsX(gb, 22)

`gb` : |

### gst_getbits23()

    #define gst_getbits23(gb) gst_getbitsX(gb, 23)

`gb` : |

### gst_showbitsn()

    #define gst_showbitsn(gb,n) gst_showbitsX(gb, n)

`gb` : |
`n` : |

### gst_showbits1()

    #define gst_showbits1(gb) gst_show1bit(gb, 1)

`gb` : |

### gst_showbits2()

    #define gst_showbits2(gb) gst_showbitsX(gb, 2)

`gb` : |

### gst_showbits3()

    #define gst_showbits3(gb) gst_showbitsX(gb, 3)

`gb` : |

### gst_showbits4()

    #define gst_showbits4(gb) gst_showbitsX(gb, 4)

`gb` : |

### gst_showbits5()

    #define gst_showbits5(gb) gst_showbitsX(gb, 5)

`gb` : |

### gst_showbits6()

    #define gst_showbits6(gb) gst_showbitsX(gb, 6)

`gb` : |

### gst_showbits7()

    #define gst_showbits7(gb) gst_showbitsX(gb, 7)

`gb` : |

### gst_showbits8()

    #define gst_showbits8(gb) gst_showbitsX(gb, 8)

`gb` : |

### gst_showbits9()

    #define gst_showbits9(gb) gst_showbitsX(gb, 9)

`gb` : |

### gst_showbits10()

    #define gst_showbits10(gb) gst_showbitsX(gb, 10)

`gb` : |

### gst_showbits11()

    #define gst_showbits11(gb) gst_showbitsX(gb, 11)

`gb` : |

### gst_showbits12()

    #define gst_showbits12(gb) gst_showbitsX(gb, 12)

`gb` : |

### gst_showbits13()

    #define gst_showbits13(gb) gst_showbitsX(gb, 13)

`gb` : |

### gst_showbits14()

    #define gst_showbits14(gb) gst_showbitsX(gb, 14)

`gb` : |

### gst_showbits15()

    #define gst_showbits15(gb) gst_showbitsX(gb, 15)

`gb` : |

### gst_showbits16()

    #define gst_showbits16(gb) gst_showbitsX(gb, 16)

`gb` : |

### gst_showbits17()

    #define gst_showbits17(gb) gst_showbitsX(gb, 17)

`gb` : |

### gst_showbits18()

    #define gst_showbits18(gb) gst_showbitsX(gb, 18)

`gb` : |

### gst_showbits19()

    #define gst_showbits19(gb) gst_showbitsX(gb, 19)

`gb` : |

### gst_showbits20()

    #define gst_showbits20(gb) gst_showbitsX(gb, 20)

`gb` : |

### gst_showbits21()

    #define gst_showbits21(gb) gst_showbitsX(gb, 21)

`gb` : |

### gst_showbits22()

    #define gst_showbits22(gb) gst_showbitsX(gb, 22)

`gb` : |

### gst_showbits23()

    #define gst_showbits23(gb) gst_showbitsX(gb, 23)

`gb` : |

### gst_showbits24()

    #define gst_showbits24(gb) gst_showbitsX(gb, 24)

`gb` : |

### gst_showbits32()

    #define gst_showbits32(gb) gst_showbitsX(gb, 32)

`gb` : |

### gst_flushbitsn()

    #define gst_flushbitsn(gb,n) gst_flushbitsX(gb, n)

`gb` : |
`n` : |

### gst_flushbits32()

    #define gst_flushbits32(gb) gst_flushbitsX(gb, 32)

`gb` : |

### gst_backbitsn()

    #define gst_backbitsn(gb,n) gst_backbitsX(gb, n)

`gb` : |
`n` : |

### gst_backbits24()

    #define gst_backbits24(gb) gst_backbitsX(gb, 24)

`gb` : |