1 /********************************************************************
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. *
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/ *
12 ********************************************************************
14 function: flexible, delayed bitpacking abstraction
15 last mod: $Id: bitbuffer.h,v 1.1 2000/11/17 11:57:49 xiphmont Exp $
17 ********************************************************************/
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;
31 typedef struct vorbis_bitbuffer{
33 vorbis_bitbuffer_chain *first;
34 vorbis_bitbuffer_chain *last;
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);
43 extern int vorbis_book_bufencode(codebook *book, int a, vorbis_bitbuffer *b);