From: <mil...@us...> - 2003-06-27 14:50:21
|
Update of /cvsroot/ffdshow/ffdshow/src/movie_source In directory sc8-pr-cvs1:/tmp/cvs-serv19439/src/movie_source Modified Files: TaudioSource.cpp TaudioSource.h TaudioSourceLibFAAD.cpp TaudioSourceLibFAAD.h TaudioSourceLibMAD.cpp TaudioSourceLibMAD.h TaudioSourceLibavcodec.cpp TaudioSourceLibavcodec.h TaudioSourceMplayer.cpp TaudioSourceMplayer.h Log Message: some info about input audio Index: TaudioSource.cpp =================================================================== RCS file: /cvsroot/ffdshow/ffdshow/src/movie_source/TaudioSource.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TaudioSource.cpp 20 Jun 2003 04:34:24 -0000 1.3 --- TaudioSource.cpp 27 Jun 2003 13:55:58 -0000 1.4 *************** *** 26,30 **** #include "TaudioSourceLibFAAD.h" ! TaudioSource* TaudioSource::initSource(IffDecoderBase *deci,CodecID codecId,const WAVEFORMATEX &fmt,const unsigned char *leadbytes,int leadbytescnt) { TaudioSource *movie; --- 26,30 ---- #include "TaudioSourceLibFAAD.h" ! TaudioSource* TaudioSource::initSource(IffDecoderBase *deci,CodecID codecId,WAVEFORMATEX *fmt) { TaudioSource *movie; *************** *** 34,38 **** else if (codecId==CODEC_ID_LIBFAAD) movie=new TaudioSourceLibFAAD(deci); else return NULL; ! if (movie->init(codecId,fmt,leadbytes,leadbytescnt)) { movie->codecId=codecId; --- 34,38 ---- else if (codecId==CODEC_ID_LIBFAAD) movie=new TaudioSourceLibFAAD(deci); else return NULL; ! if (movie->init(codecId,fmt)) { movie->codecId=codecId; Index: TaudioSource.h =================================================================== RCS file: /cvsroot/ffdshow/ffdshow/src/movie_source/TaudioSource.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TaudioSource.h 20 Jun 2003 04:34:24 -0000 1.3 --- TaudioSource.h 27 Jun 2003 13:55:58 -0000 1.4 *************** *** 1,6 **** ! #ifndef _TAUDIOSOURCE_H_ #define _TAUDIOSOURCE_H_ #include "ffcodecs.h" struct IffDecoderBase; --- 1,7 ---- ! #ifndef _TAUDIOSOURCE_H_ #define _TAUDIOSOURCE_H_ #include "ffcodecs.h" + #include "ffdshow_constants.h" struct IffDecoderBase; *************** *** 11,22 **** IffDecoderBase *deci; const Tconfig *config; public: TaudioSource(IffDecoderBase *Ideci); virtual ~TaudioSource() {} ! static TaudioSource* initSource(IffDecoderBase *Ideci,CodecID codecId,const WAVEFORMATEX &fmt,const unsigned char *leadbytes,int leadbytescnt); ! CodecID codecId; virtual unsigned int maxOutputSize(void)=0; ! virtual bool init(CodecID codecId,const WAVEFORMATEX &fmt,const unsigned char *leadbytes,int leadbytescnt)=0; virtual bool decode(const unsigned char *src,unsigned int srcLength,unsigned char *dst,unsigned int dstLength,int *actualDstLength,unsigned int &used_bytes)=0; virtual void onSeek(void) {return;} --- 12,26 ---- IffDecoderBase *deci; const Tconfig *config; + CodecID codecId; public: TaudioSource(IffDecoderBase *Ideci); virtual ~TaudioSource() {} ! static TaudioSource* initSource(IffDecoderBase *Ideci,CodecID codecId,WAVEFORMATEX *fmt); ! virtual int getType(void) const =0; ! virtual const char* getName(void) const =0; virtual unsigned int maxOutputSize(void)=0; ! virtual bool init(CodecID codecId,WAVEFORMATEX *fmt)=0; ! virtual void getInputDescr(char *buf,unsigned int buflen) const =0; virtual bool decode(const unsigned char *src,unsigned int srcLength,unsigned char *dst,unsigned int dstLength,int *actualDstLength,unsigned int &used_bytes)=0; virtual void onSeek(void) {return;} Index: TaudioSourceLibFAAD.cpp =================================================================== RCS file: /cvsroot/ffdshow/ffdshow/src/movie_source/TaudioSourceLibFAAD.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TaudioSourceLibFAAD.cpp 20 Jun 2003 04:34:24 -0000 1.1 --- TaudioSourceLibFAAD.cpp 27 Jun 2003 13:55:58 -0000 1.2 *************** *** 27,36 **** #define LIBFAAD_PATH "C:\\cygwin\\home\\Administrator\\faad2_\\libfaad\\libfaad2.dll" ! TaudioSourceLibFAAD::TaudioSourceLibFAAD(IffDecoderBase *deci):TaudioSource(deci) { dll=NULL;m_decHandle=NULL; } ! bool TaudioSourceLibFAAD::init(CodecID codecId,const WAVEFORMATEX &fmt,const unsigned char *leadbytes,int leadbytescnt) { dll=new Tdll(LIBFAAD_PATH,config); --- 27,74 ---- #define LIBFAAD_PATH "C:\\cygwin\\home\\Administrator\\faad2_\\libfaad\\libfaad2.dll" ! const char* TaudioSourceLibFAAD::profilenames[]= { + "NULL", + "AAC Main", + "AAC LC", + "AAC SSR", + "AAC LTP", + "Reserved", + "AAC Scalable", + "TwinVQ", + "CELP", + "HVXC", + "Reserved", + "Reserved", + "TTSI", + "Main synthetic", + "Wavetable synthesis", + "General MIDI", + "Algorithmic Synthesis and Audio FX", + /* MPEG-4 Version 2 */ + "ER AAC LC", + "(Reserved)", + "ER AAC LTP", + "ER AAC scalable", + "ER TwinVQ", + "ER BSAC", + "ER AAC LD", + "ER CELP", + "ER HVXC", + "ER HILN", + "ER Parametric", + "(Reserved)", + "(Reserved)", + "(Reserved)", + "(Reserved)" + }; + + TaudioSourceLibFAAD::TaudioSourceLibFAAD(IffDecoderBase *deci):TaudioSource(deci) + { dll=NULL;m_decHandle=NULL; + inited=false; } ! bool TaudioSourceLibFAAD::init(CodecID codecId,WAVEFORMATEX *fmt) { dll=new Tdll(LIBFAAD_PATH,config); *************** *** 46,53 **** unsigned long SamplesPerSec=0; unsigned char Channels=0; ! if (faacDecInit2(m_decHandle,(unsigned char*)leadbytes,leadbytescnt,&SamplesPerSec,&Channels)<0) return false; ! mp4AudioSpecificConfig info; ! AudioSpecificConfig((unsigned char*)leadbytes,leadbytescnt,&info); return true; } --- 84,91 ---- unsigned long SamplesPerSec=0; unsigned char Channels=0; ! if (faacDecInit2(m_decHandle,(unsigned char*)fmt+sizeof(WAVEFORMATEX),fmt->cbSize,&SamplesPerSec,&Channels)<0) return false; ! AudioSpecificConfig((unsigned char*)fmt+sizeof(WAVEFORMATEX),fmt->cbSize,&info); ! inited=true; return true; } *************** *** 67,70 **** --- 105,115 ---- { return 12*1024; + } + + void TaudioSourceLibFAAD::getInputDescr(char *buf,unsigned int buflen) const + { + if (!inited) return; + _snprintf(buf,buflen,"AAC: %s profile",profilenames[info.objectTypeIndex]); + buf[buflen-1]='\0'; } Index: TaudioSourceLibFAAD.h =================================================================== RCS file: /cvsroot/ffdshow/ffdshow/src/movie_source/TaudioSourceLibFAAD.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TaudioSourceLibFAAD.h 20 Jun 2003 04:34:24 -0000 1.1 --- TaudioSourceLibFAAD.h 27 Jun 2003 13:55:58 -0000 1.2 *************** *** 11,14 **** --- 11,15 ---- private: Tdll *dll; + bool inited; faacDecHandle (FAADAPI *faacDecOpen)(void); void (FAADAPI *faacDecClose)(faacDecHandle hDecoder); *************** *** 24,33 **** faacDecHandle m_decHandle; public: TaudioSourceLibFAAD(IffDecoderBase *deci); virtual ~TaudioSourceLibFAAD(); static bool check(const Tconfig *config); virtual unsigned int maxOutputSize(void); ! virtual bool init(CodecID codecId,const WAVEFORMATEX &fmt,const unsigned char *leadbytes,int leadbytescnt); virtual bool decode(const unsigned char *src,unsigned int srcLength,unsigned char *dst,unsigned int dstLength,int *actualDstLength,unsigned int &used_bytes); virtual void onSeek(void); --- 25,39 ---- faacDecHandle m_decHandle; + mp4AudioSpecificConfig info; + static const char *profilenames[]; public: TaudioSourceLibFAAD(IffDecoderBase *deci); virtual ~TaudioSourceLibFAAD(); + virtual int getType(void) const {return IDFF_MOVIE_LIBFAAD;} + virtual const char* getName(void) const {return "libFAAD";} static bool check(const Tconfig *config); virtual unsigned int maxOutputSize(void); ! virtual bool init(CodecID codecId,WAVEFORMATEX *fmt); ! virtual void getInputDescr(char *buf,unsigned int buflen) const; virtual bool decode(const unsigned char *src,unsigned int srcLength,unsigned char *dst,unsigned int dstLength,int *actualDstLength,unsigned int &used_bytes); virtual void onSeek(void); Index: TaudioSourceLibMAD.cpp =================================================================== RCS file: /cvsroot/ffdshow/ffdshow/src/movie_source/TaudioSourceLibMAD.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TaudioSourceLibMAD.cpp 27 Jun 2003 05:05:20 -0000 1.2 --- TaudioSourceLibMAD.cpp 27 Jun 2003 13:55:58 -0000 1.3 *************** *** 31,35 **** } ! bool TaudioSourceLibMAD::init(CodecID codecId,const WAVEFORMATEX &fmt,const unsigned char *leadbytes,int leadbytescnt) { dll=new Tdll(LIBMAD_PATH,config); --- 31,35 ---- } ! bool TaudioSourceLibMAD::init(CodecID codecId,WAVEFORMATEX *fmt) { dll=new Tdll(LIBMAD_PATH,config); *************** *** 68,71 **** --- 68,77 ---- { return 2*4608*50; + } + + void TaudioSourceLibMAD::getInputDescr(char *buf,unsigned int buflen) const + { + _snprintf(buf,buflen,"MPEG %i layer %i",1,3); + buf[buflen-1]='\0'; } Index: TaudioSourceLibMAD.h =================================================================== RCS file: /cvsroot/ffdshow/ffdshow/src/movie_source/TaudioSourceLibMAD.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TaudioSourceLibMAD.h 20 Jun 2003 04:34:24 -0000 1.1 --- TaudioSourceLibMAD.h 27 Jun 2003 13:55:58 -0000 1.2 *************** *** 19,22 **** --- 19,23 ---- void (*mad_stream_buffer)(struct mad_stream *, unsigned char const *, unsigned long); bool inited; + MPEG1WAVEFORMAT infmt; unsigned char buf[100000];unsigned int bufpos; mad_synth synth; *************** *** 26,32 **** TaudioSourceLibMAD(IffDecoderBase *deci); virtual ~TaudioSourceLibMAD(); static bool check(const Tconfig *config); virtual unsigned int maxOutputSize(void); ! virtual bool init(CodecID codecId,const WAVEFORMATEX &fmt,const unsigned char *leadbytes,int leadbytescnt); virtual bool decode(const unsigned char *src,unsigned int srcLength,unsigned char *dst,unsigned int dstLength,int *actualDstLength,unsigned int &used_bytes); virtual void onSeek(void); --- 27,36 ---- TaudioSourceLibMAD(IffDecoderBase *deci); virtual ~TaudioSourceLibMAD(); + virtual int getType(void) const {return IDFF_MOVIE_LIBMAD;} + virtual const char* getName(void) const {return "libmad";} static bool check(const Tconfig *config); virtual unsigned int maxOutputSize(void); ! virtual bool init(CodecID codecId,WAVEFORMATEX *fmt); ! virtual void getInputDescr(char *buf,unsigned int buflen) const; virtual bool decode(const unsigned char *src,unsigned int srcLength,unsigned char *dst,unsigned int dstLength,int *actualDstLength,unsigned int &used_bytes); virtual void onSeek(void); Index: TaudioSourceLibavcodec.cpp =================================================================== RCS file: /cvsroot/ffdshow/ffdshow/src/movie_source/TaudioSourceLibavcodec.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TaudioSourceLibavcodec.cpp 24 Jun 2003 11:53:12 -0000 1.3 --- TaudioSourceLibavcodec.cpp 27 Jun 2003 13:55:58 -0000 1.4 *************** *** 25,29 **** } ! bool TaudioSourceLibavcodec::init(CodecID codecId,const WAVEFORMATEX &fmt,const unsigned char *leadbytes,int leadbytescnt) { dll=new Tlibavcodec(config); --- 25,29 ---- } ! bool TaudioSourceLibavcodec::init(CodecID codecId,WAVEFORMATEX *fmt) { dll=new Tlibavcodec(config); *************** *** 33,44 **** if (!avcodec) return false; avctx=dll->avcodec_alloc_context(); ! avctx->sample_rate=fmt.nSamplesPerSec; ! avctx->channels=fmt.nChannels; ! avctx->bit_rate=fmt.nAvgBytesPerSec*8; ! avctx->block_align=fmt.nBlockAlign; ! if (leadbytes) { ! avctx->extradata=(void*)leadbytes; ! avctx->extradata_size=leadbytescnt; } if (dll->avcodec_open(avctx,avcodec)<0) return false; --- 33,44 ---- if (!avcodec) return false; avctx=dll->avcodec_alloc_context(); ! avctx->sample_rate=fmt->nSamplesPerSec; ! avctx->channels=fmt->nChannels; ! avctx->bit_rate=fmt->nAvgBytesPerSec*8; ! avctx->block_align=fmt->nBlockAlign; ! if (fmt->cbSize) { ! avctx->extradata=(char*)fmt+sizeof(WAVEFORMATEX); ! avctx->extradata_size=fmt->cbSize; } if (dll->avcodec_open(avctx,avcodec)<0) return false; *************** *** 57,60 **** --- 57,81 ---- if (dll) delete dll; } + const char* TaudioSourceLibavcodec::getName(void) const + { + if (avcodec) + { + sprintf(codecName,"libavcodec %s",avcodec->name); + return codecName; + } + else return "libavcodec"; + } + void TaudioSourceLibavcodec::getInputDescr(char *buf,unsigned int buflen) const + { + switch (codecId) + { + case CODEC_ID_WMAV1:strncpy(buf,"wma1",buflen);break; + case CODEC_ID_WMAV2:strncpy(buf,"wma2",buflen);break; + case CODEC_ID_AC3:strncpy(buf,"ac3",buflen);break; + default:strncpy(buf,"unknown",buflen);break; + } + buf[buflen-1]='\0'; + } + unsigned int TaudioSourceLibavcodec::maxOutputSize(void) { Index: TaudioSourceLibavcodec.h =================================================================== RCS file: /cvsroot/ffdshow/ffdshow/src/movie_source/TaudioSourceLibavcodec.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TaudioSourceLibavcodec.h 24 Jun 2003 11:53:12 -0000 1.3 --- TaudioSourceLibavcodec.h 27 Jun 2003 13:55:58 -0000 1.4 *************** *** 9,13 **** private: Tlibavcodec *dll; ! AVCodec *avcodec; AVCodecContext *avctx; unsigned char src8[100000]; --- 9,13 ---- private: Tlibavcodec *dll; ! AVCodec *avcodec;mutable char codecName[100]; AVCodecContext *avctx; unsigned char src8[100000]; *************** *** 15,20 **** TaudioSourceLibavcodec(IffDecoderBase *deci); virtual ~TaudioSourceLibavcodec(); virtual unsigned int maxOutputSize(void); ! virtual bool init(CodecID codecId,const WAVEFORMATEX &fmt,const unsigned char *leadbytes,int leadbytescnt); virtual bool decode(const unsigned char *src,unsigned int srcLength,unsigned char *dst,unsigned int dstLength,int *actualDstLength,unsigned int &used_bytes); }; --- 15,23 ---- TaudioSourceLibavcodec(IffDecoderBase *deci); virtual ~TaudioSourceLibavcodec(); + virtual int getType(void) const {return IDFF_MOVIE_LAVC;} + virtual const char* getName(void) const; virtual unsigned int maxOutputSize(void); ! virtual bool init(CodecID codecId,WAVEFORMATEX *fmt); ! virtual void getInputDescr(char *buf,unsigned int buflen) const; virtual bool decode(const unsigned char *src,unsigned int srcLength,unsigned char *dst,unsigned int dstLength,int *actualDstLength,unsigned int &used_bytes); }; Index: TaudioSourceMplayer.cpp =================================================================== RCS file: /cvsroot/ffdshow/ffdshow/src/movie_source/TaudioSourceMplayer.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** TaudioSourceMplayer.cpp 26 Jun 2003 04:42:19 -0000 1.4 --- TaudioSourceMplayer.cpp 27 Jun 2003 13:55:58 -0000 1.5 *************** *** 33,37 **** s.samples=NULL;a52_resample=NULL; } ! bool TaudioSourceMplayer::init(CodecID codecId,const WAVEFORMATEX &fmt,const unsigned char *leadbytes,int leadbytescnt) { deci->getPostproc(&dll); --- 33,37 ---- s.samples=NULL;a52_resample=NULL; } ! bool TaudioSourceMplayer::init(CodecID codecId,WAVEFORMATEX *fmt) { deci->getPostproc(&dll); *************** *** 39,43 **** { case CODEC_ID_MP3LIB: ! dll->MP3_Init(fmt.nChannels==1?1:0); break; case CODEC_ID_LIBA52: --- 39,43 ---- { case CODEC_ID_MP3LIB: ! dll->MP3_Init(fmt->nChannels==1?1:0); break; case CODEC_ID_LIBA52: *************** *** 52,56 **** if (!s.samples) return false; //if (leadbytes && a52_fillbuff(leadbytes)<0) return false; ! switch(fmt.nChannels) { case 1: a52_flags=A52_MONO; break; --- 52,56 ---- if (!s.samples) return false; //if (leadbytes && a52_fillbuff(leadbytes)<0) return false; ! switch(fmt->nChannels) { case 1: a52_flags=A52_MONO; break; *************** *** 64,73 **** } int flags=a52_flags; ! a52_resample=(int(*)(float*,int16_t*))dll->a52_resample_init(a52_accel,flags,fmt.nChannels); if (!a52_resample) return false; memset(&s.state,0,sizeof(s.state)); s.inbuf_ptr = s.inbuf; s.frame_size = 0; ! avctx.channels=fmt.nChannels; break; } --- 64,73 ---- } int flags=a52_flags; ! a52_resample=(int(*)(float*,int16_t*))dll->a52_resample_init(a52_accel,flags,fmt->nChannels); if (!a52_resample) return false; memset(&s.state,0,sizeof(s.state)); s.inbuf_ptr = s.inbuf; s.frame_size = 0; ! avctx.channels=fmt->nChannels; break; } *************** *** 81,84 **** --- 81,103 ---- } + const char* TaudioSourceMplayer::getName(void) const + { + switch (codecId) + { + case CODEC_ID_MP3LIB:return "mplayer's mp3lib"; + case CODEC_ID_LIBA52:return "mplayer's liba52"; + default:return "mplayer"; + } + } + void TaudioSourceMplayer::getInputDescr(char *buf,unsigned int buflen) const + { + switch (codecId) + { + case CODEC_ID_MP3LIB:strncpy(buf,"mp3",buflen);break; + case CODEC_ID_LIBA52:strncpy(buf,"ac3",buflen);break; + default:strncpy(buf,"unknown",buflen);break; + } + buf[buflen-1]='\0'; + } unsigned int TaudioSourceMplayer::maxOutputSize(void) { *************** *** 246,248 **** break; } ! } \ No newline at end of file --- 265,267 ---- break; } ! } Index: TaudioSourceMplayer.h =================================================================== RCS file: /cvsroot/ffdshow/ffdshow/src/movie_source/TaudioSourceMplayer.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TaudioSourceMplayer.h 20 Jun 2003 04:34:24 -0000 1.2 --- TaudioSourceMplayer.h 27 Jun 2003 13:55:58 -0000 1.3 *************** *** 39,44 **** TaudioSourceMplayer(IffDecoderBase *deci); virtual ~TaudioSourceMplayer(); virtual unsigned int maxOutputSize(void); ! virtual bool init(CodecID codecId,const WAVEFORMATEX &fmt,const unsigned char *leadbytes,int leadbytescnt); virtual bool decode(const unsigned char *src,unsigned int srcLength,unsigned char *dst,unsigned int dstLength,int *actualDstLength,unsigned int &used_bytes); virtual void onSeek(void); --- 39,47 ---- TaudioSourceMplayer(IffDecoderBase *deci); virtual ~TaudioSourceMplayer(); + virtual int getType(void) const {return IDFF_MOVIE_MPLAYER;} + virtual const char* getName(void) const; virtual unsigned int maxOutputSize(void); ! virtual bool init(CodecID codecId,WAVEFORMATEX *fmt); ! virtual void getInputDescr(char *buf,unsigned int buflen) const; virtual bool decode(const unsigned char *src,unsigned int srcLength,unsigned char *dst,unsigned int dstLength,int *actualDstLength,unsigned int &used_bytes); virtual void onSeek(void); |