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 + -
显示快捷键?