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