static inline define hack for GCC where it really helps the mdct
[platform/upstream/libvorbis.git] / lib / bitbuffer.h
1 /********************************************************************
2  *                                                                  *
3  * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
4  * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
5  * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH    *
6  * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.        *
7  *                                                                  *
8  * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2000             *
9  * by Monty <monty@xiph.org> and the XIPHOPHORUS Company            *
10  * http://www.xiph.org/                                             *
11  *                                                                  *
12  ********************************************************************
13
14  function: flexible, delayed bitpacking abstraction
15  last mod: $Id: bitbuffer.h,v 1.1 2000/11/17 11:57:49 xiphmont Exp $
16
17  ********************************************************************/
18
19 #ifndef _V_BITBUF_
20 #define _V_BITBUF_
21
22 #include "codebook.h"
23
24 #define _VBB_ALLOCSIZE 128
25 typedef struct vorbis_bitbuffer_chain{
26   ogg_uint32_t             words[_VBB_ALLOCSIZE];
27   int                      bits[_VBB_ALLOCSIZE];
28   struct vorbis_bitbuffer_chain *next;
29 } vorbis_bitbuffer_chain;
30
31 typedef struct vorbis_bitbuffer{
32   long                    ptr;
33   vorbis_bitbuffer_chain *first;
34   vorbis_bitbuffer_chain *last;
35   vorbis_block           *vb;
36 } vorbis_bitbuffer;
37
38 void bitbuf_init(vorbis_bitbuffer *vbb,vorbis_block *vb);
39 extern void bitbuf_write(vorbis_bitbuffer *vbb,unsigned long word,int length);
40 extern void bitbuf_pack(oggpack_buffer *dest,vorbis_bitbuffer *source);
41
42
43 extern int vorbis_book_bufencode(codebook *book, int a, vorbis_bitbuffer *b);
44
45 #endif