//------------------------------------------------------------------------------ | |
// 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__ */ | |