/******************************************************************** * * * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE. * * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * * THE OggTheora SOURCE CODE IS (C) COPYRIGHT 1994-2009 * * by the Xiph.Org Foundation and contributors http://www.xiph.org/ * * * ******************************************************************** function: packing variable sized words into an octet stream last mod: $Id: bitwise.c 7675 2004-09-01 00:34:39Z xiphmont $ ********************************************************************/ #if !defined(_bitpack_H) #define _bitpack_H … # include <stddef.h> # include <limits.h> # include "internal.h" oc_pb_window; oc_pack_buf; /*Custom bitpacker implementations.*/ # if defined(OC_ARM_ASM) # include "arm/armbits.h" # endif # if !defined(oc_pack_read) #define oc_pack_read … # endif # if !defined(oc_pack_read1) #define oc_pack_read1 … # endif # if !defined(oc_huff_token_decode) #define oc_huff_token_decode … # endif #define OC_PB_WINDOW_SIZE … /*This is meant to be a large, positive constant that can still be efficiently loaded as an immediate (on platforms like ARM, for example). Even relatively modest values like 100 would work fine.*/ #define OC_LOTS_OF_BITS … struct oc_pack_buf{ … }; void oc_pack_readinit(oc_pack_buf *_b,unsigned char *_buf,long _bytes); int oc_pack_look1(oc_pack_buf *_b); void oc_pack_adv1(oc_pack_buf *_b); /*Here we assume 0<=_bits&&_bits<=32.*/ long oc_pack_read_c(oc_pack_buf *_b,int _bits); int oc_pack_read1_c(oc_pack_buf *_b); /* returns -1 for read beyond EOF, or the number of whole bytes available */ long oc_pack_bytes_left(oc_pack_buf *_b); /*These two functions are implemented locally in huffdec.c*/ /*Read in bits without advancing the bitptr. Here we assume 0<=_bits&&_bits<=32.*/ /*static int oc_pack_look(oc_pack_buf *_b,int _bits);*/ /*static void oc_pack_adv(oc_pack_buf *_b,int _bits);*/ #endif