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