neaacdec.h
上传用户:wstnjxml
上传日期:2014-04-03
资源大小:7248k
文件大小:8k
源码类别:

Windows CE

开发平台:

C/C++

  1. /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding ** Copyright (C) 2003-2004 M. Bakker, Ahead Software 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. ** ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** ** $Id: neaacdec.h,v 1.5 2004/09/04 14:56:27 menno Exp $ **/ #ifndef __NEAACDEC_H__ #define __NEAACDEC_H__ #ifdef __cplusplus extern "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.1 beta" /* 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 /* 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 #define FAAD_FMT_INTERNAL 6
  2. /* 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;     signed char sbr_present_flag;     signed char forceUpSampling;     signed 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 */ int8_t NEAACDECAPI NeAACDecInit2(NeAACDecHandle hDecoder, unsigned char *pBuffer,                                unsigned long SizeOfDecoderSpecificInfo,                                unsigned long *samplerate, unsigned char *channels); /* Init the library for DRM */ int8_t 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); int8_t NEAACDECAPI NeAACDecAudioSpecificConfig(unsigned char *pBuffer,                                              unsigned long buffer_size,                                              mp4AudioSpecificConfig *mp4ASC); #ifdef _WIN32   #pragma pack(pop) #endif #ifdef __cplusplus } #endif /* __cplusplus */ #endif