[Deinterlace-checkins] CVS: DScaler5/DScalerFilter EnumPins.cpp,NONE,1.1 EnumPins.h,NONE,1.1 DScaler
Brought to you by:
adcockj,
dschmelzer
From: John A. <ad...@us...> - 2003-12-09 11:46:02
|
Update of /cvsroot/deinterlace/DScaler5/DScalerFilter In directory sc8-pr-cvs1:/tmp/cvs-serv8635/DScalerFilter Modified Files: DScaler.cpp DScaler.h DScalerFilter.dsp EnumMediaTypes.cpp EnumMediaTypes.h InputPin.cpp InputPin.h OutputPin.cpp OutputPin.h Added Files: EnumPins.cpp EnumPins.h Removed Files: EnumTwoPins.cpp EnumTwoPins.h Log Message: Improved implementation of EnumPins ***** Error reading new file: [Errno 2] No such file or directory: 'EnumPins.cpp' ***** Error reading new file: [Errno 2] No such file or directory: 'EnumPins.h' Index: DScaler.cpp =================================================================== RCS file: /cvsroot/deinterlace/DScaler5/DScalerFilter/DScaler.cpp,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -r1.14 -r1.15 *** DScaler.cpp 31 Oct 2003 17:19:37 -0000 1.14 --- DScaler.cpp 9 Dec 2003 11:45:51 -0000 1.15 *************** *** 22,25 **** --- 22,28 ---- // // $Log$ + // Revision 1.15 2003/12/09 11:45:51 adcockj + // Improved implementation of EnumPins + // // Revision 1.14 2003/10/31 17:19:37 adcockj // Added support for manual pulldown selection (works with Elecard Filters) *************** *** 68,72 **** #include "stdafx.h" #include "DScaler.h" ! #include "EnumTwoPins.h" #include "InputPin.h" #include "OutputPin.h" --- 71,75 ---- #include "stdafx.h" #include "DScaler.h" ! #include "EnumPins.h" #include "InputPin.h" #include "OutputPin.h" *************** *** 133,137 **** return E_POINTER; } ! CComObject<CEnumTwoPins>* NewEnum = new CComObject<CEnumTwoPins>; if(NewEnum == NULL) { --- 136,140 ---- return E_POINTER; } ! CComObject<CEnumPins>* NewEnum = new CComObject<CEnumPins>; if(NewEnum == NULL) { *************** *** 139,143 **** } ! NewEnum->SetPins(m_InputPin, m_OutputPin); NewEnum->AddRef(); *ppEnum = NewEnum; --- 142,146 ---- } ! NewEnum->SetFilter(this); NewEnum->AddRef(); *ppEnum = NewEnum; *************** *** 145,148 **** --- 148,172 ---- return S_OK; } + + HRESULT CDScaler::GetPin(ULONG PinNum, IPin** pPin) + { + if(PinNum == 0) + { + *pPin = m_InputPin; + (*pPin)->AddRef(); + return S_OK; + } + else if(PinNum == 1) + { + *pPin = m_OutputPin; + (*pPin)->AddRef(); + return S_OK; + } + else + { + return S_FALSE; + } + } + STDMETHODIMP CDScaler::FindPin(LPCWSTR Id, IPin **ppPin) Index: DScaler.h =================================================================== RCS file: /cvsroot/deinterlace/DScaler5/DScalerFilter/DScaler.h,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -r1.11 -r1.12 *** DScaler.h 31 Oct 2003 17:19:37 -0000 1.11 --- DScaler.h 9 Dec 2003 11:45:53 -0000 1.12 *************** *** 26,29 **** --- 26,32 ---- #include "InputPin.h" #include "OutputPin.h" + #include "EnumPins.h" + + class ATL_NO_VTABLE DECLSPEC_UUID("0D71870A-7563-11D7-B84A-0002A5623377") CDScaler : *************** *** 35,39 **** public IMediaParamInfo, public IMediaParams, ! public IAmFreeSoftwareLicensed { public: --- 38,43 ---- public IMediaParamInfo, public IMediaParams, ! public IAmFreeSoftwareLicensed, ! public IHavePins { public: *************** *** 123,126 **** --- 127,133 ---- STDMETHOD(get_License)(eFreeLicense* License); STDMETHOD(get_Authors)(BSTR* Authors); + + public: + HRESULT GetPin(ULONG PinNum, IPin** pPin); public: Index: DScalerFilter.dsp =================================================================== RCS file: /cvsroot/deinterlace/DScaler5/DScalerFilter/DScalerFilter.dsp,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -r1.14 -r1.15 *** DScalerFilter.dsp 31 Oct 2003 17:19:37 -0000 1.14 --- DScalerFilter.dsp 9 Dec 2003 11:45:55 -0000 1.15 *************** *** 131,135 **** # Begin Source File ! SOURCE=.\EnumTwoPins.cpp # End Source File # Begin Source File --- 131,135 ---- # Begin Source File ! SOURCE=.\EnumPins.cpp # End Source File # Begin Source File *************** *** 189,193 **** # Begin Source File ! SOURCE=.\EnumTwoPins.h # End Source File # Begin Source File --- 189,193 ---- # Begin Source File ! SOURCE=.\EnumPins.h # End Source File # Begin Source File Index: EnumMediaTypes.cpp =================================================================== RCS file: /cvsroot/deinterlace/DScaler5/DScalerFilter/EnumMediaTypes.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -r1.6 -r1.7 *** EnumMediaTypes.cpp 8 May 2003 15:58:38 -0000 1.6 --- EnumMediaTypes.cpp 9 Dec 2003 11:45:55 -0000 1.7 *************** *** 22,25 **** --- 22,28 ---- // // $Log$ + // Revision 1.7 2003/12/09 11:45:55 adcockj + // Improved implementation of EnumPins + // // Revision 1.6 2003/05/08 15:58:38 adcockj // Better error handling, threading and format support *************** *** 48,55 **** { m_Count = 0; - m_NumTypes = 0; m_Version = 0; - InitMediaType(&m_Types[0]); - InitMediaType(&m_Types[1]); } --- 51,55 ---- *************** *** 57,62 **** { m_Count = 0; - ClearMediaType(&m_Types[0]); - ClearMediaType(&m_Types[1]); } --- 57,60 ---- *************** *** 73,77 **** return VFW_E_ENUM_OUT_OF_SYNC; } ! while(m_Count < m_NumTypes && cTypes) { // it's our job to allocate the MediaType Structures --- 71,75 ---- return VFW_E_ENUM_OUT_OF_SYNC; } ! while(m_Count != -1 && cTypes) { // it's our job to allocate the MediaType Structures *************** *** 82,94 **** } InitMediaType(*ppTypes); ! HRESULT hr = CopyMediaType(*ppTypes, &m_Types[m_Count]); CHECK(hr); ! if(pcFetched != NULL) { ! ++(*pcFetched); } - ++ppTypes; - ++m_Count; - --cTypes; } if(cTypes == 0) --- 80,100 ---- } InitMediaType(*ppTypes); ! HRESULT hr = m_Update->GetType(m_Count, *ppTypes); ! CHECK(hr); ! if(hr == S_FALSE) ! { ! m_Count = -1; ! } ! else { ! if(pcFetched != NULL) ! { ! ++(*pcFetched); ! } ! ++ppTypes; ! ++m_Count; ! --cTypes; } } if(cTypes == 0) *************** *** 118,123 **** { m_Count = 0; - HRESULT hr = m_Update->SetTypes(m_NumTypes, m_Types); - CHECK(hr); m_Version = m_Update->FormatVersion(); return S_OK; --- 124,127 ---- *************** *** 137,147 **** NewEnum->m_Count = m_Count; - NewEnum->m_NumTypes = m_NumTypes; NewEnum->m_Version = m_Version; - for(ULONG i(0); i < m_NumTypes; ++i) - { - HRESULT hr = CopyMediaType(&NewEnum->m_Types[i], &m_Types[i]); - CHECK(hr); - } NewEnum->AddRef(); --- 141,145 ---- Index: EnumMediaTypes.h =================================================================== RCS file: /cvsroot/deinterlace/DScaler5/DScalerFilter/EnumMediaTypes.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** EnumMediaTypes.h 19 May 2003 07:02:24 -0000 1.4 --- EnumMediaTypes.h 9 Dec 2003 11:45:55 -0000 1.5 *************** *** 27,31 **** public: virtual ULONG FormatVersion() = 0; ! virtual HRESULT SetTypes(ULONG& NumTypes, AM_MEDIA_TYPE* Types) = 0; }; --- 27,31 ---- public: virtual ULONG FormatVersion() = 0; ! virtual HRESULT GetType(ULONG TypeNum, AM_MEDIA_TYPE* Type) = 0; }; *************** *** 53,59 **** protected: CComPtr<IUpdateMediaTypes> m_Update; ! AM_MEDIA_TYPE m_Types[2]; ! ULONG m_NumTypes; ! ULONG m_Count; ULONG m_Version; }; --- 53,57 ---- protected: CComPtr<IUpdateMediaTypes> m_Update; ! LONG m_Count; ULONG m_Version; }; Index: InputPin.cpp =================================================================== RCS file: /cvsroot/deinterlace/DScaler5/DScalerFilter/InputPin.cpp,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -r1.29 -r1.30 *** InputPin.cpp 13 Nov 2003 21:39:50 -0000 1.29 --- InputPin.cpp 9 Dec 2003 11:45:57 -0000 1.30 *************** *** 22,25 **** --- 22,28 ---- // // $Log$ + // Revision 1.30 2003/12/09 11:45:57 adcockj + // Improved implementation of EnumPins + // // Revision 1.29 2003/11/13 21:39:50 adcockj // fix for diag to work properly *************** *** 909,929 **** } ! HRESULT CInputPin::SetTypes(ULONG& NumTypes, AM_MEDIA_TYPE* Types) { HRESULT hr = S_OK; if(m_ConnectedPin != NULL) { ! NumTypes = 1; ! hr = CopyMediaType(Types, &m_InputMediaType); ! CHECK(hr); ! ++Types; ! ClearMediaType(Types); } else { ! NumTypes = 0; ! ClearMediaType(Types); ! ++Types; ! ClearMediaType(Types); } return hr; --- 912,933 ---- } ! HRESULT CInputPin::GetType(ULONG TypeNum, AM_MEDIA_TYPE* Type) { HRESULT hr = S_OK; if(m_ConnectedPin != NULL) { ! if(TypeNum == 0) ! { ! hr = CopyMediaType(Type, &m_InputMediaType); ! CHECK(hr); ! } ! else ! { ! hr = S_FALSE; ! } } else { ! hr = S_FALSE; } return hr; Index: InputPin.h =================================================================== RCS file: /cvsroot/deinterlace/DScaler5/DScalerFilter/InputPin.h,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -r1.13 -r1.14 *** InputPin.h 13 Nov 2003 21:39:50 -0000 1.13 --- InputPin.h 9 Dec 2003 11:45:57 -0000 1.14 *************** *** 93,97 **** public: ULONG FormatVersion(); ! HRESULT SetTypes(ULONG& NumTypes, AM_MEDIA_TYPE* Types); HRESULT FinishProcessing(); HRESULT SetInputType(const AM_MEDIA_TYPE *pmt); --- 93,97 ---- public: ULONG FormatVersion(); ! HRESULT GetType(ULONG TypeNum, AM_MEDIA_TYPE* Type); HRESULT FinishProcessing(); HRESULT SetInputType(const AM_MEDIA_TYPE *pmt); Index: OutputPin.cpp =================================================================== RCS file: /cvsroot/deinterlace/DScaler5/DScalerFilter/OutputPin.cpp,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -r1.22 -r1.23 *** OutputPin.cpp 31 Oct 2003 17:19:37 -0000 1.22 --- OutputPin.cpp 9 Dec 2003 11:45:57 -0000 1.23 *************** *** 22,25 **** --- 22,28 ---- // // $Log$ + // Revision 1.23 2003/12/09 11:45:57 adcockj + // Improved implementation of EnumPins + // // Revision 1.22 2003/10/31 17:19:37 adcockj // Added support for manual pulldown selection (works with Elecard Filters) *************** *** 593,606 **** } ! HRESULT COutputPin::SetTypes(ULONG& NumTypes, AM_MEDIA_TYPE* Types) { HRESULT hr = S_OK; if(m_CurrentMediaType.majortype != GUID_NULL) { ! NumTypes = 1; ! hr = CopyMediaType(Types, &m_CurrentMediaType); ! CHECK(hr); ! ++Types; ! ClearMediaType(Types); } else --- 596,613 ---- } ! HRESULT COutputPin::GetType(ULONG TypeNum, AM_MEDIA_TYPE* Type) { HRESULT hr = S_OK; if(m_CurrentMediaType.majortype != GUID_NULL) { ! if(TypeNum == 0) ! { ! hr = CopyMediaType(Type, &m_CurrentMediaType); ! CHECK(hr); ! } ! else ! { ! hr = S_FALSE; ! } } else *************** *** 608,623 **** if(m_InputPin->m_ConnectedPin != NULL) { ! NumTypes = 1; ! hr = CreateOutputMediaType(&m_InputPin->m_InputMediaType, Types); ! CHECK(hr); ! ++Types; ! ClearMediaType(Types); } else { ! NumTypes = 0; ! ClearMediaType(Types); ! ++Types; ! ClearMediaType(Types); } } --- 615,631 ---- if(m_InputPin->m_ConnectedPin != NULL) { ! if(TypeNum == 0) ! { ! hr = CreateOutputMediaType(&m_InputPin->m_InputMediaType, Type); ! CHECK(hr); ! } ! else ! { ! hr = S_FALSE; ! } } else { ! hr = S_FALSE; } } Index: OutputPin.h =================================================================== RCS file: /cvsroot/deinterlace/DScaler5/DScalerFilter/OutputPin.h,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -r1.9 -r1.10 *** OutputPin.h 30 Sep 2003 16:59:26 -0000 1.9 --- OutputPin.h 9 Dec 2003 11:45:57 -0000 1.10 *************** *** 109,113 **** public: ULONG FormatVersion(); ! HRESULT SetTypes(ULONG& NumTypes, AM_MEDIA_TYPE* Types); BITMAPINFOHEADER* GetBitmapInfo(); HRESULT ChangeOutputFormat(const AM_MEDIA_TYPE* InputType); --- 109,113 ---- public: ULONG FormatVersion(); ! HRESULT GetType(ULONG TypeNum, AM_MEDIA_TYPE* Type); BITMAPINFOHEADER* GetBitmapInfo(); HRESULT ChangeOutputFormat(const AM_MEDIA_TYPE* InputType); --- EnumTwoPins.cpp DELETED --- --- EnumTwoPins.h DELETED --- |