00001 #pragma once
00002
00003 #include <afxtempl.h>
00004 #include "..\..\..\..\include\qt\qt.h"
00005
00006
00007
00008
00009
00010
00011 DEFINE_GUID(CLSID_QTDec,
00012 0x2d261619, 0x3822, 0x4856, 0xa4, 0x22, 0xdc, 0x77, 0xbf, 0xf, 0xb9, 0x47);
00013
00014 class CQTDec : public CTransformFilter
00015 {
00016 bool m_fQtInitialized;
00017 CArray<CMediaType> m_mts;
00018
00019 QT::GWorldPtr m_pImageGWorld;
00020 QT::GWorldPtr MakeGWorld();
00021 void FreeGWorld(QT::GWorldPtr& pImageGWorld);
00022
00023 QT::ComponentInstance m_cinst;
00024 QT::CodecCapabilities m_ccap;
00025 QT::CodecDecompressParams m_cdpar;
00026 QT::ImageDescriptionHandle m_hImageDesc;
00027 bool InitComponent();
00028
00029 public:
00030 CQTDec(LPUNKNOWN lpunk, HRESULT* phr);
00031 virtual ~CQTDec();
00032
00033 #ifdef REGISTER_FILTER
00034 static CUnknown* WINAPI CreateInstance(LPUNKNOWN lpunk, HRESULT* phr);
00035 #endif
00036
00037 HRESULT BreakConnect(PIN_DIRECTION dir);
00038 HRESULT CompleteConnect(PIN_DIRECTION dir, IPin* pReceivePin);
00039
00040 HRESULT Transform(IMediaSample* pIn, IMediaSample* pOut);
00041 HRESULT CheckInputType(const CMediaType* mtIn);
00042 HRESULT CheckTransform(const CMediaType* mtIn, const CMediaType* mtOut);
00043 HRESULT DecideBufferSize(IMemAllocator* pAllocator, ALLOCATOR_PROPERTIES* pProperties);
00044 HRESULT GetMediaType(int iPosition, CMediaType* pMediaType);
00045 };