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
00035 #include "AbstractTransformInputPin.h"
00036 #include "OggRawAudioInserterInputPin.h"
00037
00038 #include "OggRawAudioInserterFilter.h"
00039
00040 #include <libilliCore/iBE_Math.h>
00041 #include <libilliCore/iLE_Math.h>
00042
00043
00044
00045
00046
00047 class OggRawAudioInserterInputPin
00048 : public AbstractTransformInputPin
00049 {
00050 public:
00051 OggRawAudioInserterInputPin(AbstractTransformFilter* inFilter, CCritSec* inFilterLock, AbstractTransformOutputPin* inOutputPin, vector<CMediaType*> inAcceptableMediaTypes);
00052 virtual ~OggRawAudioInserterInputPin(void);
00053
00054
00055 virtual HRESULT SetMediaType(const CMediaType* inMediaType);
00056
00057 protected:
00058
00059 static const unsigned long WORKING_BUFFER_SIZE = 1 <<20;
00060 unsigned long identifyFormat();
00061 bool makeMainHeader(unsigned char** outBuff, unsigned long* outHeaderSize);
00062 bool makeCommentHeader(unsigned char** outBuff, unsigned long* outHeaderSize);
00063 HRESULT sendPacket(unsigned char* inPacketData, unsigned long inNumBytes, bool inIsHeader);
00064
00065
00066 HRESULT mHR;
00067
00068 virtual HRESULT TransformData(unsigned char* inBuf, long inNumBytes);
00069 virtual bool ConstructCodec();
00070 virtual void DestroyCodec();
00071
00072
00073
00074 __int64 mUptoFrame;
00075
00076 enum eRawAudioFormat {
00077 FMT_S8,
00078 FMT_U8,
00079 FMT_S16_LE,
00080 FMT_S16_BE,
00081 FMT_S24_LE,
00082 FMT_S24_BE,
00083 FMT_S32_LE,
00084 FMT_S32_BE,
00085
00086 FMT_ULAW = 0x10,
00087 FMT_ALAW,
00088
00089 FMT_FLT32_LE = 0x20,
00090 FMT_FLT32_BE,
00091 FMT_FLT64_LE,
00092 FMT_FLT64_BE,
00093
00094
00095 };
00096
00097 unsigned long mNumBufferedBytes;
00098 unsigned long mFrameByteWidth;
00099 unsigned char* mWorkingBuffer;
00100
00101 unsigned long mFramesPerPacket;
00102 unsigned long mBytesPerPacket;
00103
00104 bool mSentHeaders;
00105
00106
00107 };