DiracEncodeFilter.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 "Diracencodefilter.h"
00034 
00035 
00036 //COM Factory Template
00037 CFactoryTemplate g_Templates[] = 
00038 {
00039     { 
00040                 L"Dirac Encode Filter",                                         // Name
00041             &CLSID_DiracEncodeFilter,            // CLSID
00042             DiracEncodeFilter::CreateInstance,  // Method to create an instance of MyComponent
00043         NULL,                                                                   // Initialization function
00044         NULL                                                                    // Set-up information (for filters)
00045     }
00046 
00047 
00048 };
00049 
00050 // Generic way of determining the number of items in the template
00051 int g_cTemplates = sizeof(g_Templates) / sizeof(g_Templates[0]); 
00052 
00053 CUnknown* WINAPI DiracEncodeFilter::CreateInstance(LPUNKNOWN pUnk, HRESULT *pHr) 
00054 {
00055         //This routine is the COM implementation to create a new Filter
00056         DiracEncodeFilter *pNewObject = new DiracEncodeFilter();
00057     if (pNewObject == NULL) {
00058         *pHr = E_OUTOFMEMORY;
00059     }
00060         return pNewObject;
00061 } 
00062 STDMETHODIMP DiracEncodeFilter::NonDelegatingQueryInterface(REFIID riid, void **ppv) {
00063 
00064 
00065 
00066         return AbstractVideoEncodeFilter::NonDelegatingQueryInterface(riid, ppv);
00067 }
00068 
00069 DiracEncodeFilter::DiracEncodeFilter(void)
00070         :       AbstractVideoEncodeFilter(NAME("Dirac Encoder"), CLSID_DiracEncodeFilter, AbstractVideoEncodeFilter::DIRAC)
00071 {
00072         bool locWasConstructed = ConstructPins();
00073 }
00074 
00075 DiracEncodeFilter::~DiracEncodeFilter(void)
00076 {
00077 }
00078 
00079 bool DiracEncodeFilter::ConstructPins() 
00080 {
00081 
00082         CMediaType* locOutputMediaType = new CMediaType(&MEDIATYPE_Video);
00083         locOutputMediaType->subtype = MEDIASUBTYPE_Dirac;
00084         locOutputMediaType->formattype = FORMAT_Dirac;
00085         //Output pin must be done first because it's passed to the input pin.
00086         mOutputPin = new DiracEncodeOutputPin(this, m_pLock, locOutputMediaType);
00087 
00088         
00089         mInputPin = new DiracEncodeInputPin(this, m_pLock, mOutputPin);
00090         return true;
00091 }
00092 

Generated on Tue Feb 15 14:54:15 2005 for oggdsf by  doxygen 1.3.9