TheoraDecodeOutputPin.cpp

Go to the documentation of this file.
00001 //===========================================================================
00002 //Copyright (C) 2003, 2004 Zentaro Kavanagh
00003 //
00004 //Redistribution and use in source and binary forms, with or without
00005 //modification, are permitted provided that the following conditions
00006 //are met:
00007 //
00008 //- Redistributions of source code must retain the above copyright
00009 //  notice, this list of conditions and the following disclaimer.
00010 //
00011 //- Redistributions in binary form must reproduce the above copyright
00012 //  notice, this list of conditions and the following disclaimer in the
00013 //  documentation and/or other materials provided with the distribution.
00014 //
00015 //- Neither the name of Zentaro Kavanagh nor the names of contributors 
00016 //  may be used to endorse or promote products derived from this software 
00017 //  without specific prior written permission.
00018 //
00019 //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00020 //``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00021 //LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
00022 //PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE ORGANISATION OR
00023 //CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00024 //EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00025 //PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00026 //PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00027 //LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00028 //NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00029 //SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00030 //===========================================================================
00031 
00032 #include "stdafx.h"
00033 #include "theoradecodeoutputpin.h"
00034 
00035 
00036 
00037 TheoraDecodeOutputPin::TheoraDecodeOutputPin(CTransformFilter* inParentFilter, HRESULT* outHR) 
00038         :       CTransformOutputPin(NAME("Theora Output Pin"), inParentFilter, outHR, L"YV12 Out")
00039 {
00040         //debugLog.open("G:\\logs\\theooutput.log", ios_base::out);
00041 }
00042 TheoraDecodeOutputPin::~TheoraDecodeOutputPin() {
00043         //debugLog.close();
00044 }
00045 
00046 STDMETHODIMP TheoraDecodeOutputPin::NonDelegatingQueryInterface(REFIID riid, void **ppv) {
00047         //debugLog<<"Querying interface"<<endl;
00048         if (riid == IID_IMediaSeeking) {
00049                 //debugLog<<"Got seekeer"<<endl;
00050                 *ppv = (IMediaSeeking*)this;
00051                 ((IUnknown*)*ppv)->AddRef();
00052                 
00053                 return NOERROR;
00054         } else if (riid == IID_IMediaPosition) {
00055                 //debugLog<<"Asking for OLD SEEKER"<<endl;
00056         }
00057         //debugLog<<"Trying base output pin"<<endl;
00058         return CBaseOutputPin::NonDelegatingQueryInterface(riid, ppv); 
00059 }
00060 
00061 HRESULT TheoraDecodeOutputPin::BreakConnect() {
00062         CAutoLock locLock(m_pLock);
00063         //Need a lock ??
00064         ReleaseDelegate();
00065         //debugLog<<"Break connect"<<endl;
00066         return CTransformOutputPin::BreakConnect();
00067 }
00068 HRESULT TheoraDecodeOutputPin::CompleteConnect (IPin *inReceivePin) {
00069         CAutoLock locLock(m_pLock);
00070         //debugLog<<"Complete connect"<<endl;
00071         IMediaSeeking* locSeeker = NULL;
00072 
00073         m_pFilter->GetPin(0)->QueryInterface(IID_IMediaSeeking, (void**)&locSeeker);
00074 
00075         if (locSeeker == NULL) {
00076                 //debugLog<<"Seeker was NULL"<<endl;
00077         }
00078         SetDelegate(locSeeker);
00079         return CTransformOutputPin::CompleteConnect(inReceivePin);
00080 }
00081 
00082 STDMETHODIMP TheoraDecodeOutputPin::Notify(IBaseFilter* inMessageSource, Quality inQuality) {
00083         return E_NOTIMPL;
00084 }

Generated on Thu Feb 16 23:48:09 2006 for oggdsf by  doxygen 1.3.9