strmdec_wma.h
来自「AMLOGIC DPF source code」· C头文件 代码 · 共 104 行
H
104 行
//#define WITH_AB_BUFFER
#ifndef __STRMDEC_WMA_H_
#define __STRMDEC_WMA_H_
#define VALID 0
#define END_OF_FILE 1
#define ILLEGAL_PATTERN 3
#ifndef EOF
#define EOF (-1)
#endif
#define NONSUPER_WRAPAROUND 1024
#ifdef __cplusplus
extern "C" { // only need to export C interface if
// used by C++ source code
#endif
extern const UInt getMask [33];
#if defined(_DEBUG) || defined(BITRATE_REPORT)
extern Int g_cBitGet;
#endif // _DEBUG || BITRATE_REPORT
typedef WMARESULT (*PFNGETMOREDATA)(U8 **ppBuffer, U32 *pcbBuffer, U32 user_data);
typedef struct CWMAInputBitStream {
//wchen: add for streaming mode
PFNGETMOREDATA m_pfnGetMoreData;
U32 m_dwUser;
U32 m_dwOwner;
U32 m_dwHeaderBuf; // hold the packet header data
U8 *m_pBufferBegin; // begining of packet for reset
U32 m_cbBuflenBegin; // used in association of m_pBufferBegin
U8 *m_pBuffer;
Int m_cbBuflen;
UInt m_dwDot;
UInt m_dwBitsLeft;
Int m_iPrevPacketNum;
Bool m_fAllowPackets;
Bool m_fSuppressPacketLoss;
U32 wma_block_len;
U32 bytes_count;
// WMARESULT (*ibstrmpfnPeekBits) (struct CWMAInputBitStream *pibstrm, register UInt dwNumBits,
// U32 *piNumBits);
} CWMAInputBitStream;
Void ibstrmInit (CWMAInputBitStream* pibstrm, Bool fAllowPackets);
Void ibstrmAttach(CWMAInputBitStream *pibstrm, U32 dwDot, U32 dwBitsLeft, U8* pbSrc, I32 cbSrc);
Void ibstrmReset(CWMAInputBitStream *pibstrm);
static INLINE UInt ibstrmBitsLeft (const CWMAInputBitStream* pibstrm) {return pibstrm->m_dwBitsLeft;}
static INLINE U32 ibstrmDwBuf (const CWMAInputBitStream* pibstrm) {return pibstrm->m_dwDot;}
static INLINE U8* ibstrmBuf (const CWMAInputBitStream* pibstrm) {return pibstrm->m_pBuffer;}
static INLINE Int ibstrmBufLen (const CWMAInputBitStream* pibstrm) {return pibstrm->m_cbBuflen;}
static INLINE Void ibstrmSetGetMoreData(CWMAInputBitStream *pibs, PFNGETMOREDATA pfnGetMoreData)
{ pibs->m_pfnGetMoreData = pfnGetMoreData; }
static INLINE Void ibstrmSetUserData(CWMAInputBitStream *pibs, U32 dwUser)
{ pibs->m_dwUser = dwUser; }
static INLINE Void ibstrmSetOwner(CWMAInputBitStream *pibs, U32 dwOwner)
{ pibs->m_dwOwner = dwOwner; }
static INLINE U32 ibstrmGetPacketHeader(CWMAInputBitStream *pibs)
{ return pibs->m_dwHeaderBuf; }
static INLINE Void ibstrmSetPacketHeader(CWMAInputBitStream *pibs, U32 iVal)
{ pibs->m_dwHeaderBuf = iVal; }
Void ibstrmResetPacket(CWMAInputBitStream *pibstrm); // reset to the beginning of packet
WMARESULT ibstrmGetMoreData(CWMAInputBitStream *pibstrm, U32 *piBufLen);
WMARESULT ibstrmPeekBitsNonStop (CWMAInputBitStream *pibstrm, register UInt dwNumBits,
U32 *piNumBits);
WMARESULT ibstrmPeekBits (CWMAInputBitStream *pibstrm, register UInt dwNumBits,
U32 *piNumBits);
WMARESULT ibstrmLookForBits (CWMAInputBitStream *pibstrm, UInt dwNumBits);
WMARESULT ibstrmFlushBits (CWMAInputBitStream *pibstrm, register UInt dwNumBits);
static INLINE Void ibstrmFlush (CWMAInputBitStream* pibstrm)
{ pibstrm->m_dwBitsLeft -= (pibstrm->m_dwBitsLeft % 8); }
//private
WMARESULT prvFinalLoad(CWMAInputBitStream* pibstrm,
UInt dwRetval,
UInt dwBitsToAdd,
U32 *piResult);
WMARESULT ibstrmGetBits (CWMAInputBitStream* pibstrm, register UInt dwNumBits,
U32 *piResult);
unsigned char read_byte_from_aififo();
#ifdef __cplusplus
}
#endif
#endif // __STRMDEC_WMA_H_
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?