winamp/Src/aacdec/incs/mp4dec_helpers/bitstream_c.h
2024-09-24 14:54:57 +02:00

84 lines
2.7 KiB
C

/***************************************************************************\
*
* (C) copyright Fraunhofer - IIS (2000)
* All Rights Reserved
*
* $Header: /cvs/root/winamp/aacdec/incs/mp4dec_helpers/bitstream_c.h,v 1.3 2012/05/08 20:16:50 audiodsp Exp $
* project : MPEG-4 Audio Decoder
* contents/description: bitstream module interface
*
* 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.
*
\***************************************************************************/
#ifndef __BITSTREAMC_H__
#define __BITSTREAMC_H__
#include "mp4dec_helpers/machine.h"
/* CRC Markers for SetPositionMarker(). */
#ifdef __cplusplus
extern "C" {
#endif
typedef enum CSBitStream_MarkerPosition
{
CSBitStream_ChannelElementStart,
CSBitStream_ChannelElementStop,
CSBitStream_AncillaryElementStart,
CSBitStream_AncillaryElementStop,
CSBitStream_SecondIndividualChannelStart,
CSBitStream_CurrentPosition
} CSBitStream_MarkerPosition;
typedef enum {
NO_EPCONF = -1,
EPCONF0 = 0,
EPCONF1 = 1,
EPCONF2 = 2,
EPCONF3 = 3
} __epconf_types;
typedef struct CSBitStream
{
void (*ByteAlign) (struct CSBitStream *self);
void (*PushBack) (struct CSBitStream *self, INT32 n);
INT32 (*Get) (struct CSBitStream *self, INT32 elemID, INT32 n);
void (*SetPositionMarker) (struct CSBitStream *self, INT32 id);
void (*SetCRCPositionMarker) (struct CSBitStream *self, CSBitStream_MarkerPosition position) ;
INT32 (*GetBitCount) (struct CSBitStream *self);
INT32 (*GetValidBits) (struct CSBitStream *self);
INT32 (*GetValidBitsEp1) (struct CSBitStream *self, INT32 err_sens_class);
UINT8* (*GetDataPointer) (struct CSBitStream *self);
UINT32 m_BitsInCache;
UINT32 m_CacheWord;
INT32 m_erFlag;
} CSBitStream, *CSBitStreamPtr;
INT32 __getBits (CSBitStreamPtr self, INT32 elemID, INT32 nBits);
void __pushBack (CSBitStreamPtr self, INT32 nBits);
void __byteAlign (CSBitStreamPtr self);
void __setPositionMarker (CSBitStreamPtr self, INT32 id);
void __setCRCPositionMarker (CSBitStreamPtr self, CSBitStream_MarkerPosition position) ;
INT32 __getBitCount (CSBitStreamPtr self);
INT32 __getValidBits (CSBitStreamPtr self);
INT32 __getValidBits_ep1 (CSBitStreamPtr self, INT32 err_sens_class);
UINT8* __getDataPointer (CSBitStreamPtr self);
#ifdef __cplusplus
}
#endif
#endif