//------------------------------------------------------------------------------ // File: FourCC.h // // Desc: DirectShow base classes. // // Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ // FOURCCMap // // provides a mapping between old-style multimedia format DWORDs // and new-style GUIDs. // // A range of 4 billion GUIDs has been allocated to ensure that this // mapping can be done straightforwardly one-to-one in both directions. // // January 95 #ifndef __FOURCC__ #define __FOURCC__ // Multimedia format types are marked with DWORDs built from four 8-bit // chars and known as FOURCCs. New multimedia AM_MEDIA_TYPE definitions include // a subtype GUID. In order to simplify the mapping, GUIDs in the range: // XXXXXXXX-0000-0010-8000-00AA00389B71 // are reserved for FOURCCs. class FOURCCMap : public GUID { public: FOURCCMap(); FOURCCMap(DWORD Fourcc); FOURCCMap(const GUID *); DWORD GetFOURCC(void); void SetFOURCC(DWORD fourcc); void SetFOURCC(const GUID *); private: void InitGUID(); }; #define GUID_Data2 0 #define GUID_Data3 0x10 #define GUID_Data4_1 0xaa000080 #define GUID_Data4_2 0x719b3800 inline void FOURCCMap::InitGUID() { Data2 = GUID_Data2; Data3 = GUID_Data3; ((DWORD *)Data4)[0] = GUID_Data4_1; ((DWORD *)Data4)[1] = GUID_Data4_2; } inline FOURCCMap::FOURCCMap() { InitGUID(); SetFOURCC( DWORD(0)); } inline FOURCCMap::FOURCCMap(DWORD fourcc) { InitGUID(); SetFOURCC(fourcc); } inline FOURCCMap::FOURCCMap(const GUID * pGuid) { InitGUID(); SetFOURCC(pGuid); } inline void FOURCCMap::SetFOURCC(const GUID * pGuid) { FOURCCMap * p = (FOURCCMap*) pGuid; SetFOURCC(p->GetFOURCC()); } inline void FOURCCMap::SetFOURCC(DWORD fourcc) { Data1 = fourcc; } inline DWORD FOURCCMap::GetFOURCC(void) { return Data1; } #endif /* __FOURCC__ */