159 lines
4.5 KiB
C++
159 lines
4.5 KiB
C++
|
/*
|
||
|
* Copyright (C) 2003-2006 Gabest
|
||
|
* http://www.gabest.org
|
||
|
*
|
||
|
* This Program is free software; you can redistribute it and/or modify
|
||
|
* it under the terms of the GNU General Public License as published by
|
||
|
* the Free Software Foundation; either version 2, or (at your option)
|
||
|
* any later version.
|
||
|
*
|
||
|
* This Program is distributed in the hope that it will be useful,
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
* GNU General Public License for more details.
|
||
|
*
|
||
|
* You should have received a copy of the GNU General Public License
|
||
|
* along with GNU Make; see the file COPYING. If not, write to
|
||
|
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
||
|
* http://www.gnu.org/copyleft/gpl.html
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#include "StdAfx.h"
|
||
|
#include "NullRenderers.h"
|
||
|
#include "../include/moreuuids.h"
|
||
|
|
||
|
//
|
||
|
// CNullRenderer
|
||
|
//
|
||
|
|
||
|
CNullRenderer::CNullRenderer(REFCLSID clsid, TCHAR* pName, LPUNKNOWN pUnk, HRESULT* phr)
|
||
|
: CBaseRenderer(clsid, pName, pUnk, phr)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// CNullVideoRenderer
|
||
|
//
|
||
|
|
||
|
CNullVideoRenderer::CNullVideoRenderer(LPUNKNOWN pUnk, HRESULT* phr)
|
||
|
: CNullRenderer(__uuidof(this), NAME("Null Video Renderer"), pUnk, phr)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
HRESULT CNullVideoRenderer::CheckMediaType(const CMediaType* pmt)
|
||
|
{
|
||
|
return pmt->majortype == MEDIATYPE_Video
|
||
|
|| pmt->subtype == MEDIASUBTYPE_MPEG2_VIDEO
|
||
|
? S_OK
|
||
|
: E_FAIL;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// CNullUVideoRenderer
|
||
|
//
|
||
|
|
||
|
CNullUVideoRenderer::CNullUVideoRenderer(LPUNKNOWN pUnk, HRESULT* phr)
|
||
|
: CNullRenderer(__uuidof(this), NAME("Null Video Renderer (Uncompressed)"), pUnk, phr)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
HRESULT CNullUVideoRenderer::CheckMediaType(const CMediaType* pmt)
|
||
|
{
|
||
|
return pmt->majortype == MEDIATYPE_Video
|
||
|
&& (pmt->subtype == MEDIASUBTYPE_YV12
|
||
|
|| pmt->subtype == MEDIASUBTYPE_I420
|
||
|
|| pmt->subtype == MEDIASUBTYPE_YUYV
|
||
|
|| pmt->subtype == MEDIASUBTYPE_IYUV
|
||
|
|| pmt->subtype == MEDIASUBTYPE_YVU9
|
||
|
|| pmt->subtype == MEDIASUBTYPE_Y411
|
||
|
|| pmt->subtype == MEDIASUBTYPE_Y41P
|
||
|
|| pmt->subtype == MEDIASUBTYPE_YUY2
|
||
|
|| pmt->subtype == MEDIASUBTYPE_YVYU
|
||
|
|| pmt->subtype == MEDIASUBTYPE_UYVY
|
||
|
|| pmt->subtype == MEDIASUBTYPE_Y211
|
||
|
|| pmt->subtype == MEDIASUBTYPE_RGB1
|
||
|
|| pmt->subtype == MEDIASUBTYPE_RGB4
|
||
|
|| pmt->subtype == MEDIASUBTYPE_RGB8
|
||
|
|| pmt->subtype == MEDIASUBTYPE_RGB565
|
||
|
|| pmt->subtype == MEDIASUBTYPE_RGB555
|
||
|
|| pmt->subtype == MEDIASUBTYPE_RGB24
|
||
|
|| pmt->subtype == MEDIASUBTYPE_RGB32
|
||
|
|| pmt->subtype == MEDIASUBTYPE_ARGB1555
|
||
|
|| pmt->subtype == MEDIASUBTYPE_ARGB4444
|
||
|
|| pmt->subtype == MEDIASUBTYPE_ARGB32
|
||
|
|| pmt->subtype == MEDIASUBTYPE_A2R10G10B10
|
||
|
|| pmt->subtype == MEDIASUBTYPE_A2B10G10R10)
|
||
|
? S_OK
|
||
|
: E_FAIL;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// CNullAudioRenderer
|
||
|
//
|
||
|
|
||
|
CNullAudioRenderer::CNullAudioRenderer(LPUNKNOWN pUnk, HRESULT* phr)
|
||
|
: CNullRenderer(__uuidof(this), NAME("Null Audio Renderer"), pUnk, phr)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
HRESULT CNullAudioRenderer::CheckMediaType(const CMediaType* pmt)
|
||
|
{
|
||
|
return pmt->majortype == MEDIATYPE_Audio
|
||
|
|| pmt->majortype == MEDIATYPE_Midi
|
||
|
|| pmt->subtype == MEDIASUBTYPE_MPEG2_AUDIO
|
||
|
|| pmt->subtype == MEDIASUBTYPE_DOLBY_AC3
|
||
|
|| pmt->subtype == MEDIASUBTYPE_DVD_LPCM_AUDIO
|
||
|
|| pmt->subtype == MEDIASUBTYPE_DTS
|
||
|
|| pmt->subtype == MEDIASUBTYPE_SDDS
|
||
|
|| pmt->subtype == MEDIASUBTYPE_MPEG1AudioPayload
|
||
|
|| pmt->subtype == MEDIASUBTYPE_MPEG1Audio
|
||
|
|| pmt->subtype == MEDIASUBTYPE_MPEG1Audio
|
||
|
? S_OK
|
||
|
: E_FAIL;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// CNullUAudioRenderer
|
||
|
//
|
||
|
|
||
|
CNullUAudioRenderer::CNullUAudioRenderer(LPUNKNOWN pUnk, HRESULT* phr)
|
||
|
: CNullRenderer(__uuidof(this), NAME("Null Audio Renderer (Uncompressed)"), pUnk, phr)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
HRESULT CNullUAudioRenderer::CheckMediaType(const CMediaType* pmt)
|
||
|
{
|
||
|
return pmt->majortype == MEDIATYPE_Audio
|
||
|
&& (pmt->subtype == MEDIASUBTYPE_PCM
|
||
|
|| pmt->subtype == MEDIASUBTYPE_IEEE_FLOAT
|
||
|
|| pmt->subtype == MEDIASUBTYPE_DRM_Audio
|
||
|
|| pmt->subtype == MEDIASUBTYPE_DOLBY_AC3_SPDIF
|
||
|
|| pmt->subtype == MEDIASUBTYPE_RAW_SPORT
|
||
|
|| pmt->subtype == MEDIASUBTYPE_SPDIF_TAG_241h)
|
||
|
? S_OK
|
||
|
: E_FAIL;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// CNullTextRenderer
|
||
|
//
|
||
|
|
||
|
HRESULT CNullTextRenderer::CTextInputPin::CheckMediaType(const CMediaType* pmt)
|
||
|
{
|
||
|
return pmt->majortype == MEDIATYPE_Text
|
||
|
|| pmt->majortype == MEDIATYPE_ScriptCommand
|
||
|
|| pmt->majortype == MEDIATYPE_Subtitle
|
||
|
|| pmt->subtype == MEDIASUBTYPE_DVD_SUBPICTURE
|
||
|
|| pmt->subtype == MEDIASUBTYPE_CVD_SUBPICTURE
|
||
|
|| pmt->subtype == MEDIASUBTYPE_SVCD_SUBPICTURE
|
||
|
? S_OK
|
||
|
: E_FAIL;
|
||
|
}
|
||
|
|
||
|
CNullTextRenderer::CNullTextRenderer(LPUNKNOWN pUnk, HRESULT* phr)
|
||
|
: CBaseFilter(NAME("CNullTextRenderer"), pUnk, this, __uuidof(this), phr)
|
||
|
{
|
||
|
m_pInput.Attach(new CTextInputPin(this, this, phr));
|
||
|
}
|