/***************************************************************************\ * * (C) copyright Fraunhofer - IIS (1998) * All Rights Reserved * * filename: bitbuffer_c.h * project : MPEG-4 Audio Decoder * author : Stefan Gewinner gew@iis.fhg.de * contents/description: memory input class with transport format * * This software and/or program is protected by copyright law and * international treaties. Any reproduction or distribution of this * software and/or program, or any portion of it, may result in severe * civil and criminal penalties, and will be prosecuted to the maximum * extent possible under law. * * $Header: /cvs/root/winamp/aacdec/incs/bitbuffer_c.h,v 1.3 2012/05/08 20:16:49 audiodsp Exp $ * \***************************************************************************/ #ifndef __BITBUFFER_C_H__ #define __BITBUFFER_C_H__ #include "mp4dec_helpers/machine.h" #include "mp4dec_helpers/bitstream_c.h" struct CSStreamInfo; enum { CSBitBuffer_BufferSize = 8192, CSBitBuffer_BufferBits = CSBitBuffer_BufferSize*8, /* CBitBuffer_InvalidCrcValue = 0xFFFFFFFF, */ CBitBuffer_MaximumMarkers = 25*4 /* , CAverageNumber_MaximumSize = 16 */ }; typedef struct { CSBitStream_MarkerPosition what ; UINT32 m_elementBits ; UINT32 m_ValidBits; UINT32 m_BitCnt; UINT32 m_BitNdx; } CMarker, *CMarkerPtr ; typedef struct CSBitBuffer { CSBitStream base ; UINT32 m_ValidBits; UINT32 m_ReadOffset; UINT32 m_BitCnt; UINT32 m_BitNdx; UINT32 m_FramesLeftInPacket ; UINT32 m_FrameCrcValue ; INT32 m_isEOF ; UINT8 m_Buffer [CSBitBuffer_BufferSize] ; /* CAverageNumber m_ActualBitrate ; */ UINT32 m_LastBufferFullness ; UINT32 m_LastFrameLength ; CMarker m_MarkerList [CBitBuffer_MaximumMarkers] ; UINT32 m_Markers ; } CSBitBuffer, *CSBitBufferPtr ; #ifdef __cplusplus extern "C" { #endif void CSBitBuffer_Initialize(CSBitBufferPtr self); void CSBitBuffer_Feed(CSBitBufferPtr self, const UINT8 pBuf[], const UINT32 cbSize, UINT32 *cbValid); INT32 CSBitBuffer_IsDecodableFrame(CSBitBufferPtr self, struct CSStreamInfo *info); INT32 CSBitBuffer_IsCrcConsistent(CSBitBufferPtr self) ; void CSBitBuffer_SetEOF(CSBitBufferPtr self) ; #ifdef __cplusplus } #endif #endif