ref: e4b87483df3b5a4cb2a42d69fbfea649908aa71b
dir: /plugins/winamp3/faadwa3.h/
/* cnv_FAAD - MP4-AAC decoder plugin for Winamp3 Copyright (C) 2002 Antonio Foranna This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be contacted at: kreel@tiscali.it */ #ifndef _AACPCM_H #define _AACPCM_H #include <studio/services/svc_mediaconverter.h> #include <studio/services/servicei.h> #include <studio/corecb.h> #include <studio/wac.h> #include <attribs/cfgitemi.h> #include <attribs/attrint.h> #include <faad.h> extern "C" { #include <aacinfo.h> // get_AAC_format() } #include <mp4.h> #include "Defines.h" // ----------------------------------------------------------------------------------------------- class AacPcm : public svc_mediaConverterI { public: AacPcm(); virtual ~AacPcm(); // service static const char *getServiceName() { return FILES_SUPPORT " to PCM converter"; } virtual int canConvertFrom(svc_fileReader *reader, const char *name, const char *chunktype) { if(name && (!STRICMP(Std::extension(name),"aac")|| !STRICMP(Std::extension(name),"mp4"))) return 1; // only accepts *.aac and *.mp4 files return 0; } virtual const char *getConverterTo() { return "PCM"; } virtual int getInfos(MediaInfo *infos); virtual int processData(MediaInfo *infos, ChunkList *chunk_list, bool *killswitch); virtual int getLatency(void) { return 0; } // callbacks virtual int corecb_onSeeked(int newpos) { /* if(!IsSeekable) { newpos_ms=-1; return 0; }*/ newpos_ms=newpos; return 0; } // Raw AAC BOOL FindBitrate; private: //MP4 MP4FileHandle mp4File; MP4SampleId sampleId, numSamples; int track; BYTE type; // AAC FILE *aacFile; DWORD Samplerate; BYTE Channels; DWORD bps; DWORD src_size; // aac filesize BYTE *buffer; long tagsize; DWORD *seek_table; int seek_table_length; bool BlockSeeking; // GLOBAL faacDecHandle hDecoder; faadAACInfo file_info; faacDecFrameInfo frameInfo; DWORD len_ms; // length of file in milliseconds DWORD bytes_read; // from file DWORD bytes_consumed; // by faadDecDecode long bytes_into_buffer; // DWORD dst_size; long newpos_ms; BOOL IsSeekable; bool IsAAC; }; #endif