www.pudn.com > DS4050src.zip > streams.h


//------------------------------------------------------------------------------ 
// File: Streams.h 
// 
// Desc: DirectShow base classes - defines overall streams architecture. 
// 
// Copyright (c) 1992 - 2000, 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 
 
 
#include  
#include  
#include  
#include  
#include  
 
#ifndef NUMELMS 
   #define NUMELMS(aa) (sizeof(aa)/sizeof((aa)[0])) 
#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      // Generated IDL header file for streams interfaces 
 
#include     // Helper class for REFERENCE_TIME management 
#include     // Debug support for logging and ASSERTs 
#include     // ActiveMovie video interfaces and definitions 
//include amaudio.h explicitly if you need it.  it requires the DX SDK. 
//#include     // ActiveMovie audio interfaces and definitions 
#include      // General helper classes for threads etc 
#include     // Base COM classes to support IUnknown 
#include    // Filter registration support functions 
#include     // Performance measurement 
#include     // Light weight com function prototypes 
 
#include       // Simple cache container class 
#include      // Non MFC generic list class 
#include 	// CMsgThread 
#include       // Helper class for managing media types 
#include      // conversions between FOURCCs and GUIDs 
#include     // generated from control.odl 
#include     // control interface utility classes 
#include      // event code definitions 
#include    // Main streams architecture class hierachy 
#include    // Generic transform filter 
#include     // Generic transform-in-place filter 
#include       // declaration of type GUIDs and well-known clsids 
#include 	// Generic source filter 
#include     // Output pin queueing 
#include      // HRESULT status and error definitions 
#include     // Base class for writing ActiveX renderers 
#include     // Helps with filters that manage windows 
#include     // Implements the IVideoWindow interface 
#include    // Specifically video related classes 
#include 	// Base clock class 
#include 	// System clock 
#include     // IPersistStream helper class 
#include      // Video Transform Filter base class 
#include  
#include       // Base property page class 
#include     // IAMStreamControl support 
#include    // External device control interface defines 
#include    // audio filter device error event codes 
 
#else 
    #ifdef DEBUG 
    #pragma message("STREAMS.H included TWICE") 
    #endif 
#endif // __STREAMS__