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

多媒体编程

开发平台:

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. #include "StdAfx.h"
  22. #include "uuids.h"
  23. #include "NullRenderers.h"
  24. #include "....includemoreuuids.h"
  25. #include "....includematroskamatroska.h"
  26. //
  27. // CNullVideoRenderer
  28. //
  29. HRESULT CNullVideoRenderer::CheckMediaType(const CMediaType* pmt)
  30. {
  31. return pmt->majortype == MEDIATYPE_Video
  32. || pmt->subtype == MEDIASUBTYPE_MPEG2_VIDEO
  33. ? S_OK
  34. : E_FAIL;
  35. }
  36. //
  37. // CNullUVideoRenderer
  38. //
  39. HRESULT CNullUVideoRenderer::CheckMediaType(const CMediaType* pmt)
  40. {
  41. return pmt->majortype == MEDIATYPE_Video
  42. && (pmt->subtype == MEDIASUBTYPE_YV12
  43. || pmt->subtype == MEDIASUBTYPE_I420
  44. || pmt->subtype == MEDIASUBTYPE_YUYV
  45. || pmt->subtype == MEDIASUBTYPE_IYUV
  46. || pmt->subtype == MEDIASUBTYPE_YVU9
  47. || pmt->subtype == MEDIASUBTYPE_Y411
  48. || pmt->subtype == MEDIASUBTYPE_Y41P
  49. || pmt->subtype == MEDIASUBTYPE_YUY2
  50. || pmt->subtype == MEDIASUBTYPE_YVYU
  51. || pmt->subtype == MEDIASUBTYPE_UYVY
  52. || pmt->subtype == MEDIASUBTYPE_Y211
  53. || pmt->subtype == MEDIASUBTYPE_RGB1
  54. || pmt->subtype == MEDIASUBTYPE_RGB4
  55. || pmt->subtype == MEDIASUBTYPE_RGB8
  56. || pmt->subtype == MEDIASUBTYPE_RGB565
  57. || pmt->subtype == MEDIASUBTYPE_RGB555
  58. || pmt->subtype == MEDIASUBTYPE_RGB24
  59. || pmt->subtype == MEDIASUBTYPE_RGB32
  60. || pmt->subtype == MEDIASUBTYPE_ARGB1555
  61. || pmt->subtype == MEDIASUBTYPE_ARGB4444
  62. || pmt->subtype == MEDIASUBTYPE_ARGB32
  63. || pmt->subtype == MEDIASUBTYPE_A2R10G10B10
  64. || pmt->subtype == MEDIASUBTYPE_A2B10G10R10)
  65. ? S_OK
  66. : E_FAIL;
  67. }
  68. //
  69. // CNullAudioRenderer
  70. //
  71. HRESULT CNullAudioRenderer::CheckMediaType(const CMediaType* pmt)
  72. {
  73. return pmt->majortype == MEDIATYPE_Audio
  74. || pmt->majortype == MEDIATYPE_Midi
  75. || pmt->subtype == MEDIASUBTYPE_MPEG2_AUDIO
  76. || pmt->subtype == MEDIASUBTYPE_DOLBY_AC3
  77. || pmt->subtype == MEDIASUBTYPE_DVD_LPCM_AUDIO
  78. || pmt->subtype == MEDIASUBTYPE_DTS
  79. || pmt->subtype == MEDIASUBTYPE_SDDS
  80. || pmt->subtype == MEDIASUBTYPE_MPEG1AudioPayload
  81. || pmt->subtype == MEDIASUBTYPE_MPEG1Audio
  82. || pmt->subtype == MEDIASUBTYPE_MPEG1Audio
  83. ? S_OK
  84. : E_FAIL;
  85. }
  86. //
  87. // CNullUAudioRenderer
  88. //
  89. HRESULT CNullUAudioRenderer::CheckMediaType(const CMediaType* pmt)
  90. {
  91. return pmt->majortype == MEDIATYPE_Audio
  92. && (pmt->subtype == MEDIASUBTYPE_PCM
  93. || pmt->subtype == MEDIASUBTYPE_IEEE_FLOAT
  94. || pmt->subtype == MEDIASUBTYPE_DRM_Audio
  95. || pmt->subtype == MEDIASUBTYPE_DOLBY_AC3_SPDIF
  96. || pmt->subtype == MEDIASUBTYPE_RAW_SPORT
  97. || pmt->subtype == MEDIASUBTYPE_SPDIF_TAG_241h)
  98. ? S_OK
  99. : E_FAIL;
  100. }
  101. //
  102. // CNullTextRenderer
  103. //
  104. HRESULT CNullTextRenderer::CTextInputPin::CheckMediaType(const CMediaType* pmt)
  105. {
  106. return pmt->majortype == MEDIATYPE_Text
  107. || pmt->majortype == MEDIATYPE_ScriptCommand
  108. || pmt->majortype == MEDIATYPE_Subtitle 
  109. || pmt->subtype == MEDIASUBTYPE_DVD_SUBPICTURE 
  110. || pmt->subtype == MEDIASUBTYPE_CVD_SUBPICTURE 
  111. || pmt->subtype == MEDIASUBTYPE_SVCD_SUBPICTURE 
  112. ? S_OK 
  113. : E_FAIL;
  114. }
  115. CNullTextRenderer::CNullTextRenderer(LPUNKNOWN pUnk, HRESULT* phr)
  116. : CBaseFilter(NAME("CNullTextRenderer"), pUnk, this, __uuidof(this), phr) 
  117. {
  118. m_pInput.Attach(new CTextInputPin(this, this, phr));
  119. }