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 bool CanDecompress(QT::OSType fourcc, bool& fYUY2, bool& fUYVY);
00020 QT::ImageDescriptionHandle MakeImageDescription();
00021 QT::GWorldPtr MakeGWorld();
00022 void FreeImageDescription(QT::ImageDescriptionHandle& hImageDescription);
00023 void FreeGWorld(QT::GWorldPtr& pImageGWorld);
00024
00025 QT::ImageDescriptionHandle m_hImageDescription;
00026 QT::GWorldPtr m_pImageGWorld;
00027 QT::ImageSequence m_outSeqID;
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 StartStreaming();
00041 HRESULT StopStreaming();
00042
00043 HRESULT Transform(IMediaSample* pIn, IMediaSample* pOut);
00044 HRESULT CheckInputType(const CMediaType* mtIn);
00045 HRESULT CheckTransform(const CMediaType* mtIn, const CMediaType* mtOut);
00046 HRESULT DecideBufferSize(IMemAllocator* pAllocator, ALLOCATOR_PROPERTIES* pProperties);
00047 HRESULT GetMediaType(int iPosition, CMediaType* pMediaType);
00048 };