qtatoms.h

来自「symbian 下的helix player源代码」· C头文件 代码 · 共 1,154 行 · 第 1/2 页

H
1,154
字号
	return GetUL32(((Data*) m_pData)->pSubType);
    }

    UINT8* Get_Data(void)
    {
	HX_ASSERT(m_pData);
	return ((Data*) m_pData)->pData;
    }

    /*
     *	Required Virtual Methods
     */
    virtual BOOL	IsLeafType(void)    { return TRUE; }
    virtual QTAtomType	GetType(void)	    { return QT_rtp; }
};

/****************************************************************************
 *  trak Atom Class
 */
class CQT_trak_Atom : public CQTAtom
{
public:
    /*
     *	Constructor/Destructor
     */
    CQT_trak_Atom(ULONG32 ulOffset,
		  ULONG32 ulSize, 
		  CQTAtom *pParent) : CQTAtom(ulOffset,
					      ulSize,
					      pParent) {;}

    /*
     *	Required Virtual Methods
     */
    virtual BOOL	IsLeafType(void)    { return FALSE; }
    virtual QTAtomType	GetType(void)	    { return QT_trak; }
};

/****************************************************************************
 *  tkhd Atom Class
 */
class CQT_tkhd_Atom : public CQTAtom
{
public:
    /*
     *	Leaf Data Format
     */
    struct Data
    {
	UINT8 pVersion[1]; 
	UINT8 pFlags[3];
	UINT8 pCreatTime[4]; 
	UINT8 pModifTime[4]; 
	UINT8 pTrackID[4];
	UINT8 pReserved1[4];
	UINT8 pDuration[4];
	UINT8 pReserved2[8];
	UINT8 pLayer[2];
	UINT8 pAltGroup[2];
	UINT8 pVolume[2];
	UINT8 pReserved3[2];
	UINT8 Matrix[36];
	UINT8 pTrackWidth[4];
	UINT8 pTrackHeight[4];
    } PACKING;

    /*
     *	Constructor/Destructor
     */
    CQT_tkhd_Atom(ULONG32 ulOffset,
		  ULONG32 ulSize, 
		  CQTAtom *pParent) : CQTAtom(ulOffset,
					      ulSize,
					      pParent) {;}

    /*
     *	Required Virtual Methods
     */
    virtual BOOL	IsLeafType(void)    { return TRUE; }
    virtual QTAtomType	GetType(void)	    { return QT_tkhd; }

    /*
     *	Data Access Methods
     */
    ULONG32 Get_TrackID(void)
    {
	HX_ASSERT(m_pData);
	return GetUL32(((Data*) m_pData)->pTrackID);
    }

    ULONG32 Get_Duration(void)
    {
	HX_ASSERT(m_pData);
	return GetUL32(((Data*) m_pData)->pDuration);
    }

    double Get_TrackWidth(void)
    {
	HX_ASSERT(m_pData);
	return GetFixed32(((Data*) m_pData)->pTrackWidth);
    }

    double Get_TrackHeight(void)
    {
	HX_ASSERT(m_pData);
	return GetFixed32(((Data*) m_pData)->pTrackHeight);
    }

    double Get_TrackMatrixTx(void)
    {
	HX_ASSERT(m_pData);
	return GetFixed32((UINT8*)(((Data*) m_pData)->Matrix) +
		TKHD_MATRIX_TX_LOCATION);
    }

    double Get_TrackMatrixTy(void)
    {
	HX_ASSERT(m_pData);
	return GetFixed32((UINT8*)(((Data*) m_pData)->Matrix) +
		TKHD_MATRIX_TY_LOCATION);
    }
};

/****************************************************************************
 *  mdia Atom Class
 */
class CQT_mdia_Atom : public CQTAtom
{
public:
    /*
     *	Constructor/Destructor
     */
    CQT_mdia_Atom(ULONG32 ulOffset,
		  ULONG32 ulSize, 
		  CQTAtom *pParent) : CQTAtom(ulOffset,
					      ulSize,
					      pParent) {;}

    /*
     *	Required Virtual Methods
     */
    virtual BOOL	IsLeafType(void)    { return FALSE; }
    virtual QTAtomType	GetType(void)	    { return QT_mdia; }
};

/****************************************************************************
 *  mdhd Atom Class
 */
class CQT_mdhd_Atom : public CQTAtom
{
public:
    /*
     *	Leaf Data Format
     */
    struct Data
    {
	UINT8 pVersion[1]; 
	UINT8 pFlags[3];
	UINT8 pCreatTime[4]; 
	UINT8 pModifTime[4]; 
	UINT8 pTimeScale[4];
	UINT8 pDuration[4];
	UINT8 pLangCode[2];
	UINT8 pQuality[2];
    } PACKING;

    /*
     *	Constructor/Destructor
     */
    CQT_mdhd_Atom(ULONG32 ulOffset,
		  ULONG32 ulSize, 
		  CQTAtom *pParent) : CQTAtom(ulOffset,
					      ulSize,
					      pParent) {;}

    /*
     *	Required Virtual Methods
     */
    virtual BOOL	IsLeafType(void)    { return TRUE; }
    virtual QTAtomType	GetType(void)	    { return QT_mdhd; }

    /*
     *	Data Access Methods
     */
    ULONG32 Get_TimeScale(void)
    {
	HX_ASSERT(m_pData);
	return GetUL32(((Data*) m_pData)->pTimeScale);
    }
};

/****************************************************************************
 *  hdlr Atom Class
 */
class CQT_hdlr_Atom : public CQTAtom
{
public:
    /*
     *	Leaf Data Format
     */
    struct Data
    {
	UINT8 pVersion[1]; 
	UINT8 pFlags[3];
	UINT8 pCompType[4]; 
	UINT8 pCompSubtype[4]; 
	UINT8 pCompManufacturer[4];
	UINT8 pCompFlags[4];
	UINT8 pCompFlagsMask[4];
	UINT8 pName[1];	    // Pascal String
    } PACKING;

    /*
     *	Constructor/Destructor
     */
    CQT_hdlr_Atom(ULONG32 ulOffset,
		  ULONG32 ulSize, 
		  CQTAtom *pParent) : CQTAtom(ulOffset,
					      ulSize,
					      pParent) {;}

    /*
     *	Required Virtual Methods
     */
    virtual BOOL	IsLeafType(void)    { return TRUE; }
    virtual QTAtomType	GetType(void)	    { return QT_hdlr; }

    /*
     *	Data Access Methods
     */
    ULONG32 Get_CompType(void)
    {
	HX_ASSERT(m_pData);
	return GetUL32(((Data*) m_pData)->pCompType);
    }

    ULONG32 Get_CompSubtype(void)
    {
	HX_ASSERT(m_pData);
	return GetUL32(((Data*) m_pData)->pCompSubtype);
    }
};

/****************************************************************************
 *  minf Atom Class
 */
class CQT_minf_Atom : public CQTAtom
{
public:
    /*
     *	Constructor/Destructor
     */
    CQT_minf_Atom(ULONG32 ulOffset,
		  ULONG32 ulSize, 
		  CQTAtom *pParent) : CQTAtom(ulOffset,
					      ulSize,
					      pParent) {;}

    /*
     *	Required Virtual Methods
     */
    virtual BOOL	IsLeafType(void)    { return FALSE; }
    virtual QTAtomType	GetType(void)	    { return QT_minf; }

};

/****************************************************************************
 *  dinf Atom Class
 */
class CQT_dinf_Atom : public CQTAtom
{
public:
    /*
     *	Constructor/Destructor
     */
    CQT_dinf_Atom(ULONG32 ulOffset,
		  ULONG32 ulSize, 
		  CQTAtom *pParent) : CQTAtom(ulOffset,
					      ulSize,
					      pParent) {;}

    /*
     *	Required Virtual Methods
     */
    virtual BOOL	IsLeafType(void)    { return FALSE; }
    virtual QTAtomType	GetType(void)	    { return QT_dinf; }
};

/****************************************************************************
 *  dref Atom Class
 */
#define QT_SELFREF_FLAG 0x00000001
#define QT_ALIS_END	    -1	/* Last Marker */
#define QT_ALIS_ABSPATH	    2	/* Absolute path name marker */
#define QT_ALIS_MAXCOUNT    10	/* Maximum number of Markers */

class CQT_dref_Atom : public CQTAtom
{
public:
    /*
     *	Leaf Data Format
     */
    struct ItemEntry
    {
	UINT8 pType[2];   // type of information
	UINT8 pSize[2];   // size of variable data
	UINT8 pData[1];   // actual data
    } varInfo;
    
    struct DataRef
    {
	UINT8 pReserved1[130];
	UINT8 pNLvlFrom[2];	// # of levels from fromFile/toFile until
	UINT8 pNLvlTo[2];	// a common ancestor directory is found
	UINT8 pReserved2[16];
	UINT8 pArray[1];	// variable length info
    } PACKING;

    struct ArrayEntry
    {
	UINT8 pSize[4];
	UINT8 pType[4];
	UINT8 pVersion[1];
	UINT8 pFlags[3];
	UINT8 pDataRef[1];
    } PACKING;

    struct Data
    {
	UINT8 pVersion[1]; 
	UINT8 pFlags[3]; 
	UINT8 pNumEntries[4]; 
	UINT8 pArray[1];
    } PACKING;

    /*
     *	Constructor/Destructor
     */
    CQT_dref_Atom(ULONG32 ulOffset,
		  ULONG32 ulSize, 
		  CQTAtom *pParent) : CQTAtom(ulOffset,
					      ulSize,
					      pParent) {;}

    /*
     *	Required Virtual Methods
     */
    virtual BOOL	IsLeafType(void)    { return TRUE; }
    virtual QTAtomType	GetType(void)	    { return QT_dref; }

    /*
     *	Data Access Methods
     */
    ULONG32 Get_NumEntries(void)
    {
	HX_ASSERT(m_pData);
	return GetUL32(((Data*) m_pData)->pNumEntries);
    }

    CQT_dref_Atom::ArrayEntry* GetRefEntry(ULONG32 ulArrayIdx)
    {
	HX_ASSERT(m_pData);
	HX_ASSERT(ulArrayIdx < Get_NumEntries());
	return (ArrayEntry*) FindArrayEntry(((Data*) m_pData)->pArray,
					    ulArrayIdx);
    }

    ULONG32 Get_RefType(ULONG32 ulArrayIdx)
    {
	HX_ASSERT(m_pData);
	HX_ASSERT(ulArrayIdx < Get_NumEntries());
	return GetUL32(((ArrayEntry*) FindArrayEntry(
					((Data*) m_pData)->pArray,
					ulArrayIdx))->pType);
    }

    ULONG32 Get_RefFlags(ULONG32 ulArrayIdx)
    {
	HX_ASSERT(m_pData);
	HX_ASSERT(ulArrayIdx < Get_NumEntries());
	return GetFlags(((ArrayEntry*) FindArrayEntry(
					((Data*) m_pData)->pArray,
					ulArrayIdx))->pFlags);
    }

    ULONG32 Get_RefType(CQT_dref_Atom::ArrayEntry* pRefEntry)
    {
	HX_ASSERT(pRefEntry);
	return GetUL32(pRefEntry->pType);
    }

    ULONG32 Get_RefFlags(CQT_dref_Atom::ArrayEntry* pRefEntry)
    {
	HX_ASSERT(pRefEntry);
	return GetFlags(pRefEntry->pFlags);
    }

    CQT_dref_Atom::DataRef* Get_RefData
    (
	CQT_dref_Atom::ArrayEntry* pRefEntry
    )
    {
	HX_ASSERT(pRefEntry);
	return (CQT_dref_Atom::DataRef*) pRefEntry->pDataRef;
    }

    ULONG32 Get_RefDataLen(CQT_dref_Atom::ArrayEntry* pRefEntry)
    {
	HX_ASSERT(pRefEntry);
	return (GetUL32(pRefEntry->pSize) - sizeof(ArrayEntry) + 1);
    }
};

/****************************************************************************
 *  stbl Atom Class
 */
class CQT_stbl_Atom : public CQTAtom
{
public:
    /*
     *	Constructor/Destructor
     */
    CQT_stbl_Atom(ULONG32 ulOffset,
		  ULONG32 ulSize, 
		  CQTAtom *pParent) : CQTAtom(ulOffset,
					      ulSize,
					      pParent) {;}

    /*
     *	Required Virtual Methods
     */
    virtual BOOL	IsLeafType(void)    { return FALSE; }
    virtual QTAtomType	GetType(void)	    { return QT_stbl; }
};

/****************************************************************************
 *  stsd Atom Class
 */
class CQT_stsd_Atom : public CQTAtom
{
public:
    /*
     *	Leaf Data Format
     */
    struct TaggedEntry
    {
	UINT8 pSize[4];
	UINT8 pTag[4];
	UINT8 pData[1];
    } PACKING;

    class ArrayEntry
    {
    public:
	UINT8 pSize[4];
	UINT8 pDataFormat[4];
	UINT8 pReserved[6];
	UINT8 pDataRefIdx[2];
    } PACKING;

    class HintArrayEntry : public ArrayEntry
    {
    public:
	UINT8 pHintTrakVersion[2];
	UINT8 pLastCompHintTrakVersion[2];
	UINT8 pMaxPacketSize[4];
	UINT8 pTaggedArray[1];
    } PACKING;

    class AudioArrayEntry : public ArrayEntry	// just a space holder in MP4
    {
    public:
	UINT8 pVersion[2];
	UINT8 pRevLevel[2];
	UINT8 pVendor[4];
	UINT8 pNumChannels[2];
	UINT8 pSampleSize[2];
	UINT8 pCompressionID[2];
	UINT8 pPacketSize[2];
	UINT8 pSampleRate[4];
    } PACKING;

    class VideoArrayEntry : public ArrayEntry
    {
    public:
	UINT8 pVersion[2];
	UINT8 pRevision[2];
	UINT8 pVendor[4];
	UINT8 pTemporalQuality[4];
	UINT8 pSpatialQuality[4];
	UINT8 pWidth[2];
	UINT8 pHeight[2];
	UINT8 pHRes[4];
	UINT8 pVRes[4];
	UINT8 pDataSize[4];
	UINT8 pFrameCount[2];
	UINT8 pName[32];
	UINT8 pDepth[2];
	UINT8 pClutID[2];
    } PACKING;

    class AudioMP4ArrayEntry : public AudioArrayEntry
    {
    public:
	UINT8 pSize[4];
	UINT8 pType[4];
	UINT8 pVersion[1];
	UINT8 pFlags[3];
	UINT8 pESDescriptor[1];
    } PACKING;

    class VideoMP4ArrayEntry : public VideoArrayEntry
    {
    public:
	UINT8 pSize[4];
	UINT8 pType[4];
	UINT8 pVersion[1];
	UINT8 pFlags[3];
	UINT8 pESDescriptor[1];
    } PACKING;

    class AudioSAMRArrayEntry : public AudioArrayEntry
    {
    public:
	UINT8 pDecoderSpecificInfo[1];
    } PACKING;

    class AudioSAWBArrayEntry : public AudioArrayEntry
    {
    public:
	UINT8 pDecoderSpecificInfo[1];
    } PACKING;

    class VideoS263ArrayEntry : public VideoArrayEntry
    {
    public:
	UINT8 pDecoderSpecificInfo[1];
    } PACKING;

    class AudioALACArrayEntry : public AudioArrayEntry
    {
    public:
	UINT8 pDecoderSpecificInfo[1];
    } PACKING;

    ////////////////////////////////
    // /  3GPP Timed Text structs: 
    ///
    class BoxRecord
    {
    public:
	INT16 top;
	INT16 left;
	INT16 bottom;
	INT16 right;
    } PACKING;

    class StyleRecord
    {
    public:
	UINT16 startChar;
	UINT16 endChar;
	UINT16 fontID;
	UINT8  faceStyleFlags;
	UINT8  fontSize;
	UINT8  textColorRGBA[4];
    } PACKING;

    class FontRecord
    {
    public:
	UINT16 fontID;
	UINT8  fontNameLength;
	UINT8* pFont; // /There are [fontNameLength] bytes in the string;
    } PACKING;

    class FontTableBox // / 慺tab

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?