180 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			180 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								//------------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								// File: Streams.h
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Desc: DirectShow base classes - defines overall streams architecture.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Copyright (c) 1992-2001 Microsoft Corporation.  All rights reserved.
							 | 
						||
| 
								 | 
							
								//------------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef __STREAMS__
							 | 
						||
| 
								 | 
							
								#define __STREAMS__
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef	_MSC_VER
							 | 
						||
| 
								 | 
							
								// disable some level-4 warnings, use #pragma warning(enable:###) to re-enable
							 | 
						||
| 
								 | 
							
								#pragma warning(disable:4100) // warning C4100: unreferenced formal parameter
							 | 
						||
| 
								 | 
							
								#pragma warning(disable:4201) // warning C4201: nonstandard extension used : nameless struct/union
							 | 
						||
| 
								 | 
							
								#pragma warning(disable:4511) // warning C4511: copy constructor could not be generated
							 | 
						||
| 
								 | 
							
								#pragma warning(disable:4512) // warning C4512: assignment operator could not be generated
							 | 
						||
| 
								 | 
							
								#pragma warning(disable:4514) // warning C4514: "unreferenced inline function has been removed"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if _MSC_VER>=1100
							 | 
						||
| 
								 | 
							
								#define AM_NOVTABLE __declspec(novtable)
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								#define AM_NOVTABLE
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#endif	// MSC_VER
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Because of differences between Visual C++ and older Microsoft SDKs,
							 | 
						||
| 
								 | 
							
								// you may have defined _DEBUG without defining DEBUG.  This logic
							 | 
						||
| 
								 | 
							
								// ensures that both will be set if Visual C++ sets _DEBUG.
							 | 
						||
| 
								 | 
							
								#ifdef _DEBUG
							 | 
						||
| 
								 | 
							
								#ifndef DEBUG
							 | 
						||
| 
								 | 
							
								#define DEBUG
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <windows.h>
							 | 
						||
| 
								 | 
							
								#include <windowsx.h>
							 | 
						||
| 
								 | 
							
								#include <olectl.h>
							 | 
						||
| 
								 | 
							
								#include <ddraw.h>
							 | 
						||
| 
								 | 
							
								#include <mmsystem.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef NUMELMS
							 | 
						||
| 
								 | 
							
								#if _WIN32_WINNT < 0x0600
							 | 
						||
| 
								 | 
							
								   #define NUMELMS(aa) (sizeof(aa)/sizeof((aa)[0]))
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								   #define NUMELMS(aa) ARRAYSIZE(aa)
							 | 
						||
| 
								 | 
							
								#endif   
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								///////////////////////////////////////////////////////////////////////////
							 | 
						||
| 
								 | 
							
								// The following definitions come from the Platform SDK and are required if
							 | 
						||
| 
								 | 
							
								// the applicaiton is being compiled with the headers from Visual C++ 6.0.
							 | 
						||
| 
								 | 
							
								/////////////////////////////////////////////////// ////////////////////////
							 | 
						||
| 
								 | 
							
								#ifndef InterlockedExchangePointer
							 | 
						||
| 
								 | 
							
									#define InterlockedExchangePointer(Target, Value) \
							 | 
						||
| 
								 | 
							
								   (PVOID)InterlockedExchange((PLONG)(Target), (LONG)(Value))
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef _WAVEFORMATEXTENSIBLE_
							 | 
						||
| 
								 | 
							
								#define _WAVEFORMATEXTENSIBLE_
							 | 
						||
| 
								 | 
							
								typedef struct {
							 | 
						||
| 
								 | 
							
								    WAVEFORMATEX    Format;
							 | 
						||
| 
								 | 
							
								    union {
							 | 
						||
| 
								 | 
							
								        WORD wValidBitsPerSample;       /* bits of precision  */
							 | 
						||
| 
								 | 
							
								        WORD wSamplesPerBlock;          /* valid if wBitsPerSample==0 */
							 | 
						||
| 
								 | 
							
								        WORD wReserved;                 /* If neither applies, set to zero. */
							 | 
						||
| 
								 | 
							
								    } Samples;
							 | 
						||
| 
								 | 
							
								    DWORD           dwChannelMask;      /* which channels are */
							 | 
						||
| 
								 | 
							
								                                        /* present in stream  */
							 | 
						||
| 
								 | 
							
								    GUID            SubFormat;
							 | 
						||
| 
								 | 
							
								} WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
							 | 
						||
| 
								 | 
							
								#endif // !_WAVEFORMATEXTENSIBLE_
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if !defined(WAVE_FORMAT_EXTENSIBLE)
							 | 
						||
| 
								 | 
							
								#define  WAVE_FORMAT_EXTENSIBLE                 0xFFFE
							 | 
						||
| 
								 | 
							
								#endif // !defined(WAVE_FORMAT_EXTENSIBLE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef GetWindowLongPtr
							 | 
						||
| 
								 | 
							
								  #define GetWindowLongPtrA   GetWindowLongA
							 | 
						||
| 
								 | 
							
								  #define GetWindowLongPtrW   GetWindowLongW
							 | 
						||
| 
								 | 
							
								  #ifdef UNICODE
							 | 
						||
| 
								 | 
							
								    #define GetWindowLongPtr  GetWindowLongPtrW
							 | 
						||
| 
								 | 
							
								  #else
							 | 
						||
| 
								 | 
							
								    #define GetWindowLongPtr  GetWindowLongPtrA
							 | 
						||
| 
								 | 
							
								  #endif // !UNICODE
							 | 
						||
| 
								 | 
							
								#endif // !GetWindowLongPtr
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef SetWindowLongPtr
							 | 
						||
| 
								 | 
							
								  #define SetWindowLongPtrA   SetWindowLongA
							 | 
						||
| 
								 | 
							
								  #define SetWindowLongPtrW   SetWindowLongW
							 | 
						||
| 
								 | 
							
								  #ifdef UNICODE
							 | 
						||
| 
								 | 
							
								    #define SetWindowLongPtr  SetWindowLongPtrW
							 | 
						||
| 
								 | 
							
								  #else
							 | 
						||
| 
								 | 
							
								    #define SetWindowLongPtr  SetWindowLongPtrA
							 | 
						||
| 
								 | 
							
								  #endif // !UNICODE
							 | 
						||
| 
								 | 
							
								#endif // !SetWindowLongPtr
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef GWLP_WNDPROC
							 | 
						||
| 
								 | 
							
								  #define GWLP_WNDPROC        (-4)
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#ifndef GWLP_HINSTANCE
							 | 
						||
| 
								 | 
							
								  #define GWLP_HINSTANCE      (-6)
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#ifndef GWLP_HWNDPARENT
							 | 
						||
| 
								 | 
							
								  #define GWLP_HWNDPARENT     (-8)
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#ifndef GWLP_USERDATA
							 | 
						||
| 
								 | 
							
								  #define GWLP_USERDATA       (-21)
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#ifndef GWLP_ID
							 | 
						||
| 
								 | 
							
								  #define GWLP_ID             (-12)
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#ifndef DWLP_MSGRESULT
							 | 
						||
| 
								 | 
							
								  #define DWLP_MSGRESULT  0
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#ifndef DWLP_DLGPROC 
							 | 
						||
| 
								 | 
							
								  #define DWLP_DLGPROC    DWLP_MSGRESULT + sizeof(LRESULT)
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#ifndef DWLP_USER
							 | 
						||
| 
								 | 
							
								  #define DWLP_USER       DWLP_DLGPROC + sizeof(DLGPROC)
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								///////////////////////////////////////////////////////////////////////////
							 | 
						||
| 
								 | 
							
								// End Platform SDK definitions
							 | 
						||
| 
								 | 
							
								///////////////////////////////////////////////////////////////////////////
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <strmif.h>     // Generated IDL header file for streams interfaces
							 | 
						||
| 
								 | 
							
								#include <intsafe.h>    // required by amvideo.h
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <reftime.h>    // Helper class for REFERENCE_TIME management
							 | 
						||
| 
								 | 
							
								#include <wxdebug.h>    // Debug support for logging and ASSERTs
							 | 
						||
| 
								 | 
							
								#include <amvideo.h>    // ActiveMovie video interfaces and definitions
							 | 
						||
| 
								 | 
							
								//include amaudio.h explicitly if you need it.  it requires the DX SDK.
							 | 
						||
| 
								 | 
							
								//#include <amaudio.h>    // ActiveMovie audio interfaces and definitions
							 | 
						||
| 
								 | 
							
								#include <wxutil.h>     // General helper classes for threads etc
							 | 
						||
| 
								 | 
							
								#include <combase.h>    // Base COM classes to support IUnknown
							 | 
						||
| 
								 | 
							
								#include <dllsetup.h>   // Filter registration support functions
							 | 
						||
| 
								 | 
							
								#include <measure.h>    // Performance measurement
							 | 
						||
| 
								 | 
							
								#include <comlite.h>    // Light weight com function prototypes
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <cache.h>      // Simple cache container class
							 | 
						||
| 
								 | 
							
								#include <wxlist.h>     // Non MFC generic list class
							 | 
						||
| 
								 | 
							
								#include <msgthrd.h>	// CMsgThread
							 | 
						||
| 
								 | 
							
								#include <mtype.h>      // Helper class for managing media types
							 | 
						||
| 
								 | 
							
								#include <fourcc.h>     // conversions between FOURCCs and GUIDs
							 | 
						||
| 
								 | 
							
								#include <control.h>    // generated from control.odl
							 | 
						||
| 
								 | 
							
								#include <ctlutil.h>    // control interface utility classes
							 | 
						||
| 
								 | 
							
								#include <evcode.h>     // event code definitions
							 | 
						||
| 
								 | 
							
								#include <amfilter.h>   // Main streams architecture class hierachy
							 | 
						||
| 
								 | 
							
								#include <transfrm.h>   // Generic transform filter
							 | 
						||
| 
								 | 
							
								#include <transip.h>    // Generic transform-in-place filter
							 | 
						||
| 
								 | 
							
								#include <uuids.h>      // declaration of type GUIDs and well-known clsids
							 | 
						||
| 
								 | 
							
								#include <source.h>	// Generic source filter
							 | 
						||
| 
								 | 
							
								#include <outputq.h>    // Output pin queueing
							 | 
						||
| 
								 | 
							
								#include <errors.h>     // HRESULT status and error definitions
							 | 
						||
| 
								 | 
							
								#include <renbase.h>    // Base class for writing ActiveX renderers
							 | 
						||
| 
								 | 
							
								#include <winutil.h>    // Helps with filters that manage windows
							 | 
						||
| 
								 | 
							
								#include <winctrl.h>    // Implements the IVideoWindow interface
							 | 
						||
| 
								 | 
							
								#include <videoctl.h>   // Specifically video related classes
							 | 
						||
| 
								 | 
							
								#include <refclock.h>	// Base clock class
							 | 
						||
| 
								 | 
							
								#include <sysclock.h>	// System clock
							 | 
						||
| 
								 | 
							
								#include <pstream.h>    // IPersistStream helper class
							 | 
						||
| 
								 | 
							
								#include <vtrans.h>     // Video Transform Filter base class
							 | 
						||
| 
								 | 
							
								#include <amextra.h>
							 | 
						||
| 
								 | 
							
								#include <cprop.h>      // Base property page class
							 | 
						||
| 
								 | 
							
								#include <strmctl.h>    // IAMStreamControl support
							 | 
						||
| 
								 | 
							
								#include <edevdefs.h>   // External device control interface defines
							 | 
						||
| 
								 | 
							
								#include <audevcod.h>   // audio filter device error event codes
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								    #ifdef DEBUG
							 | 
						||
| 
								 | 
							
								    #pragma message("STREAMS.H included TWICE")
							 | 
						||
| 
								 | 
							
								    #endif
							 | 
						||
| 
								 | 
							
								#endif // __STREAMS__
							 | 
						||
| 
								 | 
							
								
							 |