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
00034 #include "abstractaudioencodedllstuff.h"
00035
00036
00037
00038
00039
00040 #include "BasicSeekable.h"
00041
00042 class AbstractAudioEncodeOutputPin;
00043 class AbstractAudioEncodeFilter;
00044
00045 class ABS_AUDIO_ENC_API AbstractAudioEncodeInputPin
00046 : public CBaseInputPin
00047 , public BasicSeekable
00048 {
00049 public:
00050
00051 friend class AbstractAudioEncodeOutputPin;
00052 AbstractAudioEncodeInputPin(AbstractAudioEncodeFilter* inParentFilter, CCritSec* inFilterLock, AbstractAudioEncodeOutputPin* inOutputPin, CHAR* inObjectName, LPCWSTR inPinDisplayName);
00053 virtual ~AbstractAudioEncodeInputPin(void);
00054 static const short SIZE_16_BITS = 2;
00055 static const unsigned long HUNDRED_NANOS = 10000000;
00056 static const signed short SINT_MAX = 32767;
00057 static const signed short SINT_MIN = -32768;
00058
00059
00060 DECLARE_IUNKNOWN
00061 STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
00062
00063
00064
00065 virtual long encodeData(unsigned char* inBuf, long inNumBytes) = 0;
00066 virtual bool ConstructCodec() = 0;
00067 virtual void DestroyCodec() = 0;
00068
00069
00070 virtual HRESULT CompleteConnect (IPin *inReceivePin);
00071 STDMETHODIMP Receive(IMediaSample *pSample);
00072 virtual HRESULT CheckMediaType(const CMediaType *inMediaType);
00073 virtual HRESULT GetMediaType(int inPosition, CMediaType *outMediaType);
00074 virtual HRESULT SetMediaType(const CMediaType* inMediaType);
00075
00076 virtual void ResetFrameCount();
00077
00078 virtual STDMETHODIMP EndOfStream(void);
00079 virtual STDMETHODIMP BeginFlush();
00080 virtual STDMETHODIMP EndFlush();
00081 virtual STDMETHODIMP NewSegment(REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate);
00082
00083 protected:
00084
00085 virtual bool SetSampleParams(IMediaSample* outMediaSample, unsigned long inDataSize, REFERENCE_TIME* inStartTime, REFERENCE_TIME* inEndTime);
00086
00087
00088 HRESULT mHR;
00089 bool mBegun;
00090 AbstractAudioEncodeOutputPin* mOutputPin;
00091 __int64 mUptoFrame;
00092 AbstractAudioEncodeFilter* mParentFilter;
00093 CMediaType* mAcceptableMediaType;
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103 WAVEFORMATEX* mWaveFormat;
00104
00105 };