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 <atlbase.h>
00025
00026 class CWavDestOutputPin : public CTransformOutputPin
00027 {
00028 public:
00029 CWavDestOutputPin(CTransformFilter* pFilter, HRESULT* phr);
00030
00031 STDMETHODIMP EnumMediaTypes(IEnumMediaTypes** ppEnum);
00032 HRESULT CheckMediaType(const CMediaType* pmt);
00033 };
00034
00035 [uuid("8685214E-4D32-4058-BE04-D01104F00B0C")]
00036 class CWavDestFilter : public CTransformFilter
00037 {
00038 public:
00039 CWavDestFilter(LPUNKNOWN pUnk, HRESULT* pHr);
00040 ~CWavDestFilter();
00041
00042 DECLARE_IUNKNOWN;
00043
00044 HRESULT Transform(IMediaSample* pIn, IMediaSample* pOut);
00045 HRESULT Receive(IMediaSample* pSample);
00046
00047 HRESULT CheckInputType(const CMediaType* mtIn);
00048 HRESULT CheckTransform(const CMediaType*mtIn, const CMediaType* mtOut);
00049 HRESULT GetMediaType(int iPosition, CMediaType* pMediaType);
00050
00051 HRESULT DecideBufferSize(IMemAllocator* pAlloc, ALLOCATOR_PROPERTIES* pProperties);
00052
00053 HRESULT StartStreaming();
00054 HRESULT StopStreaming();
00055
00056 private:
00057
00058 HRESULT Copy(IMediaSample* pSource, IMediaSample* pDest) const;
00059 HRESULT Transform(IMediaSample* pMediaSample);
00060 HRESULT Transform(AM_MEDIA_TYPE* pType, const signed char ContrastLevel) const;
00061
00062 ULONG m_cbWavData;
00063 ULONG m_cbHeader;
00064 };