| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 | /*** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding** Copyright (C) 2003-2005 M. Bakker, Nero AG, http://www.nero.com**  ** 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; either version 2 of the License, or** (at your option) any later version.** ** 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.**** Any non-GPL usage of this software or parts of this software is strictly** forbidden.**** The "appropriate copyright message" mentioned in section 2c of the GPLv2** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com"**** Commercial non-GPL licensing of this software is possible.** For more info contact Nero AG through Mpeg4AAClicense@nero.com.**** $Id: neaacdec.h,v 1.13 2009/01/26 23:51:15 menno Exp $**/#ifndef __NEAACDEC_H__#define __NEAACDEC_H__#ifdef __cplusplusextern "C" {#endif /* __cplusplus */#if 1/* MACROS FOR BACKWARDS COMPATIBILITY *//* structs */#define faacDecHandle                  NeAACDecHandle#define faacDecConfiguration           NeAACDecConfiguration#define faacDecConfigurationPtr        NeAACDecConfigurationPtr#define faacDecFrameInfo               NeAACDecFrameInfo/* functions */#define faacDecGetErrorMessage         NeAACDecGetErrorMessage#define faacDecSetConfiguration        NeAACDecSetConfiguration#define faacDecGetCurrentConfiguration NeAACDecGetCurrentConfiguration#define faacDecInit                    NeAACDecInit#define faacDecInit2                   NeAACDecInit2#define faacDecInitDRM                 NeAACDecInitDRM#define faacDecPostSeekReset           NeAACDecPostSeekReset#define faacDecOpen                    NeAACDecOpen#define faacDecClose                   NeAACDecClose#define faacDecDecode                  NeAACDecDecode#define AudioSpecificConfig            NeAACDecAudioSpecificConfig#endif#ifdef _WIN32  #pragma pack(push, 8)  #ifndef NEAACDECAPI    #define NEAACDECAPI __cdecl  #endif#else  #ifndef NEAACDECAPI    #define NEAACDECAPI  #endif#endif#define FAAD2_VERSION "2.7"/* object types for AAC */#define MAIN       1#define LC         2#define SSR        3#define LTP        4#define HE_AAC     5#define ER_LC     17#define ER_LTP    19#define LD        23#define DRM_ER_LC 27 /* special object type for DRM *//* header types */#define RAW        0#define ADIF       1#define ADTS       2#define LATM       3/* SBR signalling */#define NO_SBR           0#define SBR_UPSAMPLED    1#define SBR_DOWNSAMPLED  2#define NO_SBR_UPSAMPLED 3/* library output formats */#define FAAD_FMT_16BIT  1#define FAAD_FMT_24BIT  2#define FAAD_FMT_32BIT  3#define FAAD_FMT_FLOAT  4#define FAAD_FMT_FIXED  FAAD_FMT_FLOAT#define FAAD_FMT_DOUBLE 5/* Capabilities */#define LC_DEC_CAP           (1<<0) /* Can decode LC */#define MAIN_DEC_CAP         (1<<1) /* Can decode MAIN */#define LTP_DEC_CAP          (1<<2) /* Can decode LTP */#define LD_DEC_CAP           (1<<3) /* Can decode LD */#define ERROR_RESILIENCE_CAP (1<<4) /* Can decode ER */#define FIXED_POINT_CAP      (1<<5) /* Fixed point *//* Channel definitions */#define FRONT_CHANNEL_CENTER (1)#define FRONT_CHANNEL_LEFT   (2)#define FRONT_CHANNEL_RIGHT  (3)#define SIDE_CHANNEL_LEFT    (4)#define SIDE_CHANNEL_RIGHT   (5)#define BACK_CHANNEL_LEFT    (6)#define BACK_CHANNEL_RIGHT   (7)#define BACK_CHANNEL_CENTER  (8)#define LFE_CHANNEL          (9)#define UNKNOWN_CHANNEL      (0)/* DRM channel definitions */#define DRMCH_MONO          1#define DRMCH_STEREO        2#define DRMCH_SBR_MONO      3#define DRMCH_SBR_STEREO    4#define DRMCH_SBR_PS_STEREO 5/* A decode call can eat up to FAAD_MIN_STREAMSIZE bytes per decoded channel,   so at least so much bytes per channel should be available in this stream */#define FAAD_MIN_STREAMSIZE 768 /* 6144 bits/channel */typedef void *NeAACDecHandle;typedef struct mp4AudioSpecificConfig{    /* Audio Specific Info */    unsigned char objectTypeIndex;    unsigned char samplingFrequencyIndex;    unsigned long samplingFrequency;    unsigned char channelsConfiguration;    /* GA Specific Info */    unsigned char frameLengthFlag;    unsigned char dependsOnCoreCoder;    unsigned short coreCoderDelay;    unsigned char extensionFlag;    unsigned char aacSectionDataResilienceFlag;    unsigned char aacScalefactorDataResilienceFlag;    unsigned char aacSpectralDataResilienceFlag;    unsigned char epConfig;    char sbr_present_flag;    char forceUpSampling;    char downSampledSBR;} mp4AudioSpecificConfig;typedef struct NeAACDecConfiguration{    unsigned char defObjectType;    unsigned long defSampleRate;    unsigned char outputFormat;    unsigned char downMatrix;    unsigned char useOldADTSFormat;    unsigned char dontUpSampleImplicitSBR;} NeAACDecConfiguration, *NeAACDecConfigurationPtr;typedef struct NeAACDecFrameInfo{    unsigned long bytesconsumed;    unsigned long samples;    unsigned char channels;    unsigned char error;    unsigned long samplerate;    /* SBR: 0: off, 1: on; upsample, 2: on; downsampled, 3: off; upsampled */    unsigned char sbr;    /* MPEG-4 ObjectType */    unsigned char object_type;    /* AAC header type; MP4 will be signalled as RAW also */    unsigned char header_type;    /* multichannel configuration */    unsigned char num_front_channels;    unsigned char num_side_channels;    unsigned char num_back_channels;    unsigned char num_lfe_channels;    unsigned char channel_position[64];    /* PS: 0: off, 1: on */    unsigned char ps;} NeAACDecFrameInfo;char* NEAACDECAPI NeAACDecGetErrorMessage(unsigned char errcode);unsigned long NEAACDECAPI NeAACDecGetCapabilities(void);NeAACDecHandle NEAACDECAPI NeAACDecOpen(void);NeAACDecConfigurationPtr NEAACDECAPI NeAACDecGetCurrentConfiguration(NeAACDecHandle hDecoder);unsigned char NEAACDECAPI NeAACDecSetConfiguration(NeAACDecHandle hDecoder,                                                   NeAACDecConfigurationPtr config);/* Init the library based on info from the AAC file (ADTS/ADIF) */long NEAACDECAPI NeAACDecInit(NeAACDecHandle hDecoder,                              unsigned char *buffer,                              unsigned long buffer_size,                              unsigned long *samplerate,                              unsigned char *channels);/* Init the library using a DecoderSpecificInfo */char NEAACDECAPI NeAACDecInit2(NeAACDecHandle hDecoder,                               unsigned char *pBuffer,                               unsigned long SizeOfDecoderSpecificInfo,                               unsigned long *samplerate,                               unsigned char *channels);/* Init the library for DRM */char NEAACDECAPI NeAACDecInitDRM(NeAACDecHandle *hDecoder, unsigned long samplerate,                                 unsigned char channels);void NEAACDECAPI NeAACDecPostSeekReset(NeAACDecHandle hDecoder, long frame);void NEAACDECAPI NeAACDecClose(NeAACDecHandle hDecoder);void* NEAACDECAPI NeAACDecDecode(NeAACDecHandle hDecoder,                                 NeAACDecFrameInfo *hInfo,                                 unsigned char *buffer,                                 unsigned long buffer_size);void* NEAACDECAPI NeAACDecDecode2(NeAACDecHandle hDecoder,                                  NeAACDecFrameInfo *hInfo,                                  unsigned char *buffer,                                  unsigned long buffer_size,                                  void **sample_buffer,                                  unsigned long sample_buffer_size);char NEAACDECAPI NeAACDecAudioSpecificConfig(unsigned char *pBuffer,                                             unsigned long buffer_size,                                             mp4AudioSpecificConfig *mp4ASC);#ifdef _WIN32  #pragma pack(pop)#endif#ifdef __cplusplus}#endif /* __cplusplus */#endif
 |