102 lines
2.0 KiB
C++
102 lines
2.0 KiB
C++
//------------------------------------------------------------------------------
|
|
// 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__ */
|
|
|