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