X64 transport [Part 5] (Update plugins.cpp)
[xy_vsfilter.git] / src / apps / mplayerc / MacrovisionKicker.cpp
blob2f3e423cb6be60194f6bd1800c5885345f34c89e
1 /*
2 * Copyright (C) 2003-2006 Gabest
3 * http://www.gabest.org
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.
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
22 #include "stdafx.h"
23 #include "MacrovisionKicker.h"
26 // CMacrovisionKicker
29 CMacrovisionKicker::CMacrovisionKicker(const TCHAR* pName, LPUNKNOWN pUnk)
30 : CUnknown(pName, pUnk)
34 CMacrovisionKicker::~CMacrovisionKicker()
38 void CMacrovisionKicker::SetInner(CComPtr<IUnknown> pUnk)
40 m_pInner = pUnk;
43 STDMETHODIMP CMacrovisionKicker::NonDelegatingQueryInterface(REFIID riid, void** ppv)
45 if(riid == __uuidof(IUnknown))
46 return __super::NonDelegatingQueryInterface(riid, ppv);
47 if(riid == __uuidof(IKsPropertySet) && CComQIPtr<IKsPropertySet>(m_pInner))
48 return GetInterface((IKsPropertySet*)this, ppv);
50 HRESULT hr = m_pInner ? m_pInner->QueryInterface(riid, ppv) : E_NOINTERFACE;
52 return SUCCEEDED(hr) ? hr : __super::NonDelegatingQueryInterface(riid, ppv);
55 // IKsPropertySet
57 STDMETHODIMP CMacrovisionKicker::Set(REFGUID PropSet, ULONG Id, LPVOID pInstanceData, ULONG InstanceLength, LPVOID pPropertyData, ULONG DataLength)
59 if(CComQIPtr<IKsPropertySet> pKsPS = m_pInner)
61 if(PropSet == AM_KSPROPSETID_CopyProt && Id == AM_PROPERTY_COPY_MACROVISION
62 /*&& DataLength == 4 && *(DWORD*)pPropertyData*/)
64 TRACE(_T("Oops, no-no-no, no macrovision please\n"));
65 return S_OK;
68 return pKsPS->Set(PropSet, Id, pInstanceData, InstanceLength, pPropertyData, DataLength);
71 return E_UNEXPECTED;
74 STDMETHODIMP CMacrovisionKicker::Get(REFGUID PropSet, ULONG Id, LPVOID pInstanceData, ULONG InstanceLength, LPVOID pPropertyData, ULONG DataLength, ULONG* pBytesReturned)
76 if(CComQIPtr<IKsPropertySet> pKsPS = m_pInner)
78 return pKsPS->Get(PropSet, Id, pInstanceData, InstanceLength, pPropertyData, DataLength, pBytesReturned);
81 return E_UNEXPECTED;
84 STDMETHODIMP CMacrovisionKicker::QuerySupported(REFGUID PropSet, ULONG Id, ULONG* pTypeSupport)
86 if(CComQIPtr<IKsPropertySet> pKsPS = m_pInner)
88 return pKsPS->QuerySupported(PropSet, Id, pTypeSupport);
91 return E_UNEXPECTED;