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