00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #pragma once
00033 #include "abstractaudiodllstuff.h"
00034 #include "BasicSeekable.h"
00035 class AbstractAudioDecodeFilter;
00036
00037 class ABS_AUDIO_DEC_API AbstractAudioDecodeOutputPin
00038 : public CBaseOutputPin
00039 , public BasicSeekable
00040 {
00041 public:
00042 DECLARE_IUNKNOWN
00043 STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
00044
00045 AbstractAudioDecodeOutputPin(AbstractAudioDecodeFilter* inParentFilter, CCritSec* inFilterLock, CHAR* inObjectName, LPCWSTR inPinDisplayName);
00046 virtual ~AbstractAudioDecodeOutputPin(void);
00047
00048 virtual HRESULT DecideBufferSize(IMemAllocator* inAllocator, ALLOCATOR_PROPERTIES *inReqAllocProps);
00049 virtual HRESULT CheckMediaType(const CMediaType *inMediaType);
00050
00051
00052 virtual bool FillWaveFormatExBuffer(WAVEFORMATEX* inFormatBuffer) = 0;
00053
00054 virtual HRESULT GetMediaType(int inPosition, CMediaType *outMediaType);
00055
00056
00057
00058 virtual HRESULT BreakConnect(void);
00059 virtual HRESULT CompleteConnect (IPin *inReceivePin);
00060 virtual HRESULT DeliverNewSegment(REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate);
00061 virtual HRESULT DeliverEndOfStream(void);
00062 virtual HRESULT DeliverEndFlush(void);
00063 virtual HRESULT DeliverBeginFlush(void);
00064
00065 COutputQueue* mDataQueue;
00066 protected:
00067 HRESULT mHR;
00068 AbstractAudioDecodeFilter* mParentFilter;
00069 void FillMediaType(CMediaType* inMediaType);
00070
00071
00072
00073 static const int BUFF_SIZE = 65536;
00074 static const int BUFF_COUNT = 5;
00075
00076 };
00077