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