qtatmmgs.h
来自「symbian 下的helix player源代码」· C头文件 代码 · 共 688 行 · 第 1/2 页
H
688 行
* Sample Description Manager
*/
class CQT_SampleDescription_Manager
{
public:
/*
* Constructor/Destructor
*/
CQT_SampleDescription_Manager(void);
~CQT_SampleDescription_Manager();
/*
* Main Interface
*/
HX_RESULT Init(CQTAtom* pAtom);
BOOL EstablishByIdx(ULONG32 ulSampleDescIdx)
{
if (ulSampleDescIdx == m_ulSampleDescIdx)
{
return TRUE;
}
if (ulSampleDescIdx < m_ulNumEntries)
{
m_ulSampleDescIdx = ulSampleDescIdx;
return ParseSampleDescription();
}
return FALSE;
}
ULONG32 GetDataRefIdx(void) { return m_ulDataRefIdx; }
ULONG32 GetDataFormat(void) { return m_ulDataFormat; }
ULONG32 GetNumEntries(void) { return m_ulNumEntries; }
ULONG32 GetRTPTimeScale(void) { return m_ulRTPTimeScale; }
LONG32 GetTimeStampOffset(void) { return m_lTimeStampOffset; }
LONG32 GetSequenceNumOffset(void) { return m_lSequenceNumOffset; }
CQT_stsd_Atom::ArrayEntry* GetSampleDescEntry(void) { return m_pSampleDesc; }
ULONG32 GetSampleDescBufferOffset(void)
{
HX_ASSERT(m_pSampleDescriptionAtom);
return (ULONG32) (((UINT8*) m_pSampleDesc) -
m_pSampleDescriptionAtom->GetData());
}
IHXBuffer* GetSampleDescBuffer(void)
{
HX_ASSERT(m_pSampleDescriptionAtom);
return m_pSampleDescriptionAtom->GetBuffer();
}
CQT_stsd_Atom* GetSampleDescriptionAtom() { return m_pSampleDescriptionAtom; }
private:
BOOL ParseSampleDescription(void);
CQT_stsd_Atom* m_pSampleDescriptionAtom;
ULONG32 m_ulSampleDescIdx;
CQT_stsd_Atom::ArrayEntry* m_pSampleDesc;
ULONG32 m_ulDataRefIdx;
ULONG32 m_ulDataFormat;
ULONG32 m_ulRTPTimeScale;
LONG32 m_lTimeStampOffset;
LONG32 m_lSequenceNumOffset;
ULONG32 m_ulNumEntries;
ULONG32 m_ulDataRefIdxOffset;
};
/****************************************************************************
* Data Reference Manager
*/
class CQT_DataReference_Manager
{
public:
/*
* Constructor/Destructor
*/
CQT_DataReference_Manager(void);
~CQT_DataReference_Manager();
/*
* Main Interface
*/
HX_RESULT Init(CQTAtom* pAtom, IHXCommonClassFactory* pClassFactory);
BOOL EstablishByIdx(ULONG32 ulDataRefIdx)
{
if (ulDataRefIdx == m_ulDataRefIdx)
{
return TRUE;
}
if (ulDataRefIdx < m_ulNumEntries)
{
m_ulDataRefIdx = ulDataRefIdx;
return ParseDataReference();
}
return FALSE;
}
IHXBuffer* GetDataRefName(void) { return m_pDataRefName; }
private:
BOOL ParseDataReference(void);
BOOL FindRelPath(UINT8* pData,
ULONG32 ulDataLength,
UINT8* &pRelPath,
ULONG32 &ulPathLength);
CQT_dref_Atom* m_pDataReferenceAtom;
ULONG32 m_ulDataRefIdx;
IHXBuffer* m_pDataRefName;
IHXCommonClassFactory* m_pClassFactory;
ULONG32 m_ulNumEntries;
};
/****************************************************************************
* Hint Reference Manager
*/
class CQT_HintReference_Manager
{
public:
/*
* Constructor/Destructor
*/
CQT_HintReference_Manager(void);
~CQT_HintReference_Manager();
/*
* Main Interface
*/
HX_RESULT Init(CQTAtom* pAtom);
BOOL EstablishByIdx(ULONG32 ulTrackRefIdx)
{
if (ulTrackRefIdx == m_ulTrackRefIdx)
{
return TRUE;
}
if (ulTrackRefIdx < m_ulNumEntries)
{
m_ulTrackRefIdx = ulTrackRefIdx;
return ParseTrackReference();
}
return FALSE;
}
ULONG32 GetTrackID(void) { return m_ulTrackID; }
private:
BOOL ParseTrackReference(void)
{
m_ulTrackID = m_pHintAtom->Get_TrackID(m_ulTrackRefIdx);
return TRUE;
}
CQT_hint_Atom* m_pHintAtom;
ULONG32 m_ulTrackRefIdx;
ULONG32 m_ulTrackID;
ULONG32 m_ulNumEntries;
};
/****************************************************************************
* Track Info Manager
*/
class CQT_TrackInfo_Manager
{
public:
/*
* Constructor/Destructor
*/
CQT_TrackInfo_Manager(void);
~CQT_TrackInfo_Manager();
/*
* Main Interface
*/
HX_RESULT Init(IUnknown* pContext,
CQTAtom* pAtom,
CQT_SampleDescription_Manager* pSampleDescManager,
CQTTrackManager* pTrackManager,
CQT_MovieInfo_Manager* pMovieInfo = NULL);
HX_RESULT CheckForcePacketization(CQT_sdp_Atom* pSDPAtom, IUnknown* pContext);
QTAtomType GetTrackType(void) { return m_TrackType; }
ULONG32 GetMediaTimeScale(void) { return m_ulMediaTimeScale; }
// Track duration is given in movie units
ULONG32 GetTrackDuration(void) { return m_ulTrackDuration; }
ULONG32 GetNameLength(void);
const UINT8* GetName(void);
ULONG32 GetSDPLength(void);
const UINT8* GetSDP(void);
ULONG32 GetOpaqueDataLength(void);
const UINT8* GetOpaqueData(void);
const UINT32 GetNumSamplesInOpaqueData(void);
const char* GetMimeType(void) { return m_pMimeType; }
ULONG32 GetTrackSize(void) { return m_ulTrackSize; }
ULONG32 GetAvgBitrate(void) { return m_ulAvgBitrate; }
ULONG32 GetMaxBitrate(void) { return m_ulMaxBitrate; }
ULONG32 GetPreroll(void) { return m_ulPreroll; }
ULONG32 GetPredata(void) { return m_ulPredata; }
ULONG32 GetRefTrackId(void) { return m_ulRefTrackID; }
ULONG32 GetTrackWidth(void) { return m_ulTrackWidth; }
ULONG32 GetTrackHeight(void) { return m_ulTrackHeight; }
ULONG32 GetFrameWidth(void) { return m_ulFrameWidth; }
ULONG32 GetFrameHeight(void) { return m_ulFrameHeight; }
ULONG32 GetNumChannels(void) { return m_ulChannels; }
UINT32 GetTrackTransformX(void) { return m_ulTrackMatrixTransformX; }
UINT32 GetTrackTransformY(void) { return m_ulTrackMatrixTransformY; }
ULONG32 GetPayloadType(void);
ULONG32 GetPayloadNameLength(void);
UINT8* GetPayloadName(void);
HX_RESULT GetHeader(IHXValues* &pHeader);
void SetHeader(IHXValues* pHeader);
private:
void Clear(void);
HX_RESULT InitHinted(CQTAtom* pAtom,
CQT_SampleDescription_Manager* pSampleDescManager,
CQTTrackManager* pTrackManager,
CQT_MovieInfo_Manager* pMovieInfo);
HX_RESULT InitNonHinted(CQTAtom* pAtom,
CQT_SampleDescription_Manager* pSampleDescManager,
CQTTrackManager* pTrackManager,
CQT_MovieInfo_Manager* pMovieInfo);
ULONG32 m_ulMediaTimeScale;
ULONG32 m_ulPayloadType;
ULONG32 m_ulTrackDuration;
ULONG32 m_ulTrackSize;
ULONG32 m_ulAvgBitrate;
ULONG32 m_ulMaxBitrate;
ULONG32 m_ulPreroll;
ULONG32 m_ulPredata;
ULONG32 m_ulRefTrackID;
ULONG32 m_ulTrackWidth;
ULONG32 m_ulTrackHeight;
ULONG32 m_ulFrameWidth;
ULONG32 m_ulFrameHeight;
ULONG32 m_ulChannels;
QTAtomType m_TrackType;
UINT32 m_ulTrackMatrixTransformX;
UINT32 m_ulTrackMatrixTransformY;
char* m_pName;
char* m_pSDP;
char* m_pMimeType;
UINT8* m_pOpaqueData;
ULONG32 m_ulOpaqueDataSize;
BOOL m_bOpaqueDataShouldBeDeleted;
UINT32 m_ulNumSamplesInOpaqueData;
IHXValues* m_pHeader;
CQT_name_Atom* m_pNameAtom;
CQT_sdp_Atom* m_pSDPAtom;
CQT_payt_Atom* m_pPayloadTypeAtom;
};
/****************************************************************************
* Movie Info Manager
*/
class CQT_MovieInfo_Manager
{
public:
/*
* Constructor/Destructor
*/
CQT_MovieInfo_Manager(void);
~CQT_MovieInfo_Manager();
/*
* Main Interface
*/
HX_RESULT Init(CQTAtom* pAtom,
CQTTrackManager* pTrackManager);
void Clear(void);
ULONG32 GetMovieTimeScale(void) { return m_ulMovieTimeScale; }
ULONG32 GetMovieDuration(void) { return m_ulMovieDuration; }
ULONG32 GetNameLength(void)
{
ULONG32 ulSize = 0;
if (m_pNameAtom)
{
ulSize = m_pNameAtom->GetDataSize();
}
return ulSize;
}
UINT8* GetName(void)
{
return m_pNameAtom ? m_pNameAtom->GetData() : NULL;
}
ULONG32 GetSDPLength(void);
UINT8* GetSDP(void);
private:
HX_RESULT ParseMovieHintInfo(CQTAtom* pAtom);
ULONG32 m_ulMovieTimeScale;
ULONG32 m_ulMovieDuration;
CQT_name_Atom* m_pNameAtom;
CQT_rtp_Atom* m_pRTPSDPAtom;
};
#ifdef QTCONFIG_SPEED_OVER_SIZE
#include "qtatmmgs_inline.h"
#endif // QTCONFIG_SPEED_OVER_SIZE
#endif // _QTATMMGS_H_
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?