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