//------------------------------------------------------------------------------ // 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 #pragma warning(push) #pragma warning(disable: 4312 4244) // _GetWindowLongPtr // Templated version of GetWindowLongPtr, to suppress spurious compiler warning. template <class T> T _GetWindowLongPtr(HWND hwnd, int nIndex) { return (T)GetWindowLongPtr(hwnd, nIndex); } // _SetWindowLongPtr // Templated version of SetWindowLongPtr, to suppress spurious compiler warning. template <class T> LONG_PTR _SetWindowLongPtr(HWND hwnd, int nIndex, T p) { return SetWindowLongPtr(hwnd, nIndex, (LONG_PTR)p); } #pragma warning(pop) /////////////////////////////////////////////////////////////////////////// // 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__