1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
/***************************************************************************
*
* (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
|