streams.h
上传用户:liguizhu
上传日期:2015-11-01
资源大小:2422k
文件大小:7k
源码类别:

P2P编程

开发平台:

Visual C++

  1. //------------------------------------------------------------------------------
  2. // File: Streams.h
  3. //
  4. // Desc: DirectShow base classes - defines overall streams architecture.
  5. //
  6. // Copyright (c) Microsoft Corporation.  All rights reserved.
  7. //------------------------------------------------------------------------------
  8. #ifndef __STREAMS__
  9. #define __STREAMS__
  10. #ifdef _MSC_VER
  11. // disable some level-4 warnings, use #pragma warning(enable:###) to re-enable
  12. #pragma warning(disable:4100) // warning C4100: unreferenced formal parameter
  13. #pragma warning(disable:4127) // warning C4127: conditional expression is constant
  14. #pragma warning(disable:4189) // warning C4189: local variable is initialized but not referenced
  15. #pragma warning(disable:4201) // warning C4201: nonstandard extension used : nameless struct/union
  16. #pragma warning(disable:4511) // warning C4511: copy constructor could not be generated
  17. #pragma warning(disable:4512) // warning C4512: assignment operator could not be generated
  18. #pragma warning(disable:4514) // warning C4514: unreferenced inline function has been removed
  19. #pragma warning(disable:4710) // warning C4710: 'function' not inlined
  20. #if _MSC_VER>=1100
  21. #define AM_NOVTABLE __declspec(novtable)
  22. #else
  23. #define AM_NOVTABLE
  24. #endif
  25. #endif // MSC_VER
  26. // Because of differences between Visual C++ and older Microsoft SDKs,
  27. // you may have defined _DEBUG without defining DEBUG.  This logic
  28. // ensures that both will be set if Visual C++ sets _DEBUG.
  29. #ifdef _DEBUG
  30. #ifndef DEBUG
  31. #define DEBUG
  32. #endif
  33. #endif
  34. #include <windows.h>
  35. #include <windowsx.h>
  36. #include <olectl.h>
  37. #include <ddraw.h>
  38. // Disable warning message for C4201 - use of nameless struct/union
  39. // Otherwise, strmif.h will generate warnings for Win32 debug builds
  40. #pragma warning( disable : 4201 )
  41. #include <mmsystem.h>
  42. #ifndef NUMELMS
  43.    #define NUMELMS(aa) (sizeof(aa)/sizeof((aa)[0]))
  44. #endif
  45. ///////////////////////////////////////////////////////////////////////////
  46. // The following definitions come from the Platform SDK and are required if
  47. // the applicaiton is being compiled with the headers from Visual C++ 6.0.
  48. ///////////////////////////////////////////////////////////////////////////
  49. #ifndef InterlockedExchangePointer
  50. #define InterlockedExchangePointer(Target, Value) 
  51.    (PVOID)InterlockedExchange((PLONG)(Target), (LONG)(Value))
  52. #endif
  53. #ifndef _WAVEFORMATEXTENSIBLE_
  54. #define _WAVEFORMATEXTENSIBLE_
  55. typedef struct {
  56.     WAVEFORMATEX    Format;
  57.     union {
  58.         WORD wValidBitsPerSample;       /* bits of precision  */
  59.         WORD wSamplesPerBlock;          /* valid if wBitsPerSample==0 */
  60.         WORD wReserved;                 /* If neither applies, set to zero. */
  61.     } Samples;
  62.     DWORD           dwChannelMask;      /* which channels are */
  63.                                         /* present in stream  */
  64.     GUID            SubFormat;
  65. } WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
  66. #endif // !_WAVEFORMATEXTENSIBLE_
  67. #if !defined(WAVE_FORMAT_EXTENSIBLE)
  68. #define  WAVE_FORMAT_EXTENSIBLE                 0xFFFE
  69. #endif // !defined(WAVE_FORMAT_EXTENSIBLE)
  70. #ifndef GetWindowLongPtr
  71.   #define GetWindowLongPtrA   GetWindowLongA
  72.   #define GetWindowLongPtrW   GetWindowLongW
  73.   #ifdef UNICODE
  74.     #define GetWindowLongPtr  GetWindowLongPtrW
  75.   #else
  76.     #define GetWindowLongPtr  GetWindowLongPtrA
  77.   #endif // !UNICODE
  78. #endif // !GetWindowLongPtr
  79. #ifndef SetWindowLongPtr
  80.   #define SetWindowLongPtrA   SetWindowLongA
  81.   #define SetWindowLongPtrW   SetWindowLongW
  82.   #ifdef UNICODE
  83.     #define SetWindowLongPtr  SetWindowLongPtrW
  84.   #else
  85.     #define SetWindowLongPtr  SetWindowLongPtrA
  86.   #endif // !UNICODE
  87. #endif // !SetWindowLongPtr
  88. #ifndef GWLP_WNDPROC
  89.   #define GWLP_WNDPROC        (-4)
  90. #endif
  91. #ifndef GWLP_HINSTANCE
  92.   #define GWLP_HINSTANCE      (-6)
  93. #endif
  94. #ifndef GWLP_HWNDPARENT
  95.   #define GWLP_HWNDPARENT     (-8)
  96. #endif
  97. #ifndef GWLP_USERDATA
  98.   #define GWLP_USERDATA       (-21)
  99. #endif
  100. #ifndef GWLP_ID
  101.   #define GWLP_ID             (-12)
  102. #endif
  103. #ifndef DWLP_MSGRESULT
  104.   #define DWLP_MSGRESULT  0
  105. #endif
  106. #ifndef DWLP_DLGPROC
  107.   #define DWLP_DLGPROC    DWLP_MSGRESULT + sizeof(LRESULT)
  108. #endif
  109. #ifndef DWLP_USER
  110.   #define DWLP_USER       DWLP_DLGPROC + sizeof(DLGPROC)
  111. #endif
  112. ///////////////////////////////////////////////////////////////////////////
  113. // End Platform SDK definitions
  114. ///////////////////////////////////////////////////////////////////////////
  115. #pragma warning(disable:4201) // warning C4201: nonstandard extension used : nameless struct/union
  116. #include <strmif.h>     // Generated IDL header file for streams interfaces
  117. #include <reftime.h>    // Helper class for REFERENCE_TIME management
  118. #include <wxdebug.h>    // Debug support for logging and ASSERTs
  119. #include <amvideo.h>    // ActiveMovie video interfaces and definitions
  120. //include amaudio.h explicitly if you need it.  it requires the DirectX SDK.
  121. //#include <amaudio.h>    // ActiveMovie audio interfaces and definitions
  122. #include <wxutil.h>     // General helper classes for threads etc
  123. #include <combase.h>    // Base COM classes to support IUnknown
  124. #include <dllsetup.h>   // Filter registration support functions
  125. #include <measure.h>    // Performance measurement
  126. #include <comlite.h>    // Light weight com function prototypes
  127. #include <cache.h>      // Simple cache container class
  128. #include <wxlist.h>     // Non MFC generic list class
  129. #include <msgthrd.h> // CMsgThread
  130. #include <mtype.h>      // Helper class for managing media types
  131. #include <fourcc.h>     // conversions between FOURCCs and GUIDs
  132. #include <control.h>    // generated from control.odl
  133. #include <ctlutil.h>    // control interface utility classes
  134. #include <evcode.h>     // event code definitions
  135. #include <amfilter.h>   // Main streams architecture class hierachy
  136. #include <transfrm.h>   // Generic transform filter
  137. #include <transip.h>    // Generic transform-in-place filter
  138. #include <uuids.h>      // declaration of type GUIDs and well-known clsids
  139. #include <source.h> // Generic source filter
  140. #include <outputq.h>    // Output pin queueing
  141. #include <errors.h>     // HRESULT status and error definitions
  142. #include <renbase.h>    // Base class for writing ActiveX renderers
  143. #include <winutil.h>    // Helps with filters that manage windows
  144. #include <winctrl.h>    // Implements the IVideoWindow interface
  145. #include <videoctl.h>   // Specifically video related classes
  146. #include <refclock.h> // Base clock class
  147. #include <sysclock.h> // System clock
  148. #include <pstream.h>    // IPersistStream helper class
  149. #include <vtrans.h>     // Video Transform Filter base class
  150. #include <amextra.h>
  151. #include <cprop.h>      // Base property page class
  152. #include <strmctl.h>    // IAMStreamControl support
  153. #include <edevdefs.h>   // External device control interface defines
  154. #include <audevcod.h>   // audio filter device error event codes
  155. #include <tchar.h>
  156. #define NO_SHLWAPI_STRFCNS
  157. #include <atlbase.h>
  158. #include <strsafe.h>
  159. #ifndef NUMELMS
  160.    #define NUMELMS(aa) (sizeof(aa)/sizeof((aa)[0]))
  161. #endif
  162. #else
  163.     #ifdef DEBUG
  164.     #pragma message("STREAMS.H included TWICE")
  165.     #endif
  166. #endif // __STREAMS__