NullRenderers.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:3k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /* 
  2.  * Copyright (C) 2003-2005 Gabest
  3.  * http://www.gabest.org
  4.  *
  5.  *  This Program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2, or (at your option)
  8.  *  any later version.
  9.  *   
  10.  *  This Program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13.  *  GNU General Public License for more details.
  14.  *   
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with GNU Make; see the file COPYING.  If not, write to
  17.  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
  18.  *  http://www.gnu.org/copyleft/gpl.html
  19.  *
  20.  */
  21. #pragma once
  22. #include <atlcoll.h>
  23. class CNullRenderer : public CBaseRenderer
  24. {
  25. protected:
  26. HRESULT DoRenderSample(IMediaSample* pSample) {return S_OK;}
  27. public:
  28. CNullRenderer(REFCLSID clsid, TCHAR* pName)
  29. : CBaseRenderer(clsid, pName, NULL, NULL) {}
  30. };
  31. [uuid("579883A0-4E2D-481F-9436-467AAFAB7DE8")]
  32. class CNullVideoRenderer : public CNullRenderer
  33. {
  34. protected:
  35. HRESULT CheckMediaType(const CMediaType* pmt);
  36. public:
  37. CNullVideoRenderer()
  38. : CNullRenderer(__uuidof(this), NAME("Null Video Renderer")) {}
  39. };
  40. [uuid("DD9ED57D-6ABF-42E8-89A2-11D04798DC58")]
  41. class CNullUVideoRenderer : public CNullRenderer
  42. {
  43. protected:
  44. HRESULT CheckMediaType(const CMediaType* pmt);
  45. public:
  46. CNullUVideoRenderer()
  47. : CNullRenderer(__uuidof(this), NAME("Null Video Renderer (Uncompressed)")) {}
  48. };
  49. [uuid("0C38BDFD-8C17-4E00-A344-F89397D3E22A")]
  50. class CNullAudioRenderer : public CNullRenderer
  51. {
  52. protected:
  53. HRESULT CheckMediaType(const CMediaType* pmt);
  54. public:
  55. CNullAudioRenderer()
  56. : CNullRenderer(__uuidof(this), NAME("Null Audio Renderer")) {}
  57. };
  58. [uuid("64A45125-7343-4772-9DA4-179FAC9D462C")]
  59. class CNullUAudioRenderer : public CNullRenderer
  60. {
  61. protected:
  62. HRESULT CheckMediaType(const CMediaType* pmt);
  63. public:
  64. CNullUAudioRenderer()
  65. : CNullRenderer(__uuidof(this), NAME("Null Audio Renderer (Uncompressed)")) {}
  66. };
  67. [uuid("655D7613-C26C-4A25-BBBD-3C9C516122CC")]
  68. class CNullTextRenderer : public CBaseFilter, public CCritSec
  69. {
  70. class CTextInputPin : public CBaseInputPin
  71. {
  72. public:
  73. CTextInputPin(CBaseFilter* pFilter, CCritSec* pLock, HRESULT* phr) 
  74. : CBaseInputPin(NAME("CTextInputPin"), pFilter, pLock, phr, L"In") {}
  75.     HRESULT CheckMediaType(const CMediaType* pmt);
  76. };
  77. CAutoPtr<CTextInputPin> m_pInput;
  78. public:
  79. CNullTextRenderer(LPUNKNOWN pUnk, HRESULT* phr);
  80. int GetPinCount() {return (int)!!m_pInput;}
  81. CBasePin* GetPin(int n) {return n == 0 ? (CBasePin*)m_pInput : NULL;}
  82. };