161 lines
7.4 KiB
C
161 lines
7.4 KiB
C
/***************************************************************************\
|
|
*
|
|
* (C) copyright Fraunhofer - IIS (2001)
|
|
* All Rights Reserved
|
|
*
|
|
* $Header: /cvs/root/winamp/aacdec/incs/mp4AudioDecIfc.h,v 1.3 2012/05/08 20:16:49 audiodsp Exp $
|
|
* project : MPEG-4 Audio Decoder
|
|
* contents/description: interface to mpeg-4 audio decoder
|
|
*
|
|
* This software and/or program is protected by copyright law and
|
|
* international treaties. Any reproduction or distribution of this
|
|
* software and/or program, or any portion of it, may result in severe
|
|
* civil and criminal penalties, and will be prosecuted to the maximum
|
|
* extent possible under law.
|
|
*
|
|
\***************************************************************************/
|
|
|
|
#ifndef __MP4AUDIODECIFC_H__
|
|
#define __MP4AUDIODECIFC_H__
|
|
|
|
|
|
#include "mp4dec_helpers/err_code.h"
|
|
|
|
#include "mp4dec_asc/audiospecificconfig_c.h"
|
|
#include "mp4dec_helpers/usrparam.h"
|
|
|
|
#include "mp4dec_helpers/aubuffer_c.h"
|
|
#include "mp4dec_helpers/cubuffer_c.h"
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
#if defined(WIN32) || defined(WIN64)
|
|
#pragma pack(push, 8)
|
|
#endif
|
|
|
|
|
|
/* data types */
|
|
|
|
typedef struct mp4AudioDecoder_VersionInfo {
|
|
char dateTime[80];
|
|
char versionNo[40];
|
|
char options[1024];
|
|
char options_ext[4096];
|
|
} mp4AudioDecoder_VersionInfo;
|
|
|
|
|
|
/* Opaque declaration of decoder handle */
|
|
struct mp4AudioDecoder;
|
|
typedef struct mp4AudioDecoder* mp4AudioDecoderHandle;
|
|
|
|
|
|
/* mandatory decoder functions */
|
|
|
|
mp4AudioDecoderHandle MP4AUDIODECAPI mp4AudioDecoder_Create(
|
|
const struct CSAudioSpecificConfig * const asc[],
|
|
const unsigned int noOfLayers
|
|
);
|
|
|
|
MP4_RESULT MP4AUDIODECAPI mp4AudioDecoder_SetParam(
|
|
const mp4AudioDecoderHandle self,
|
|
const unsigned int param,
|
|
const float value
|
|
);
|
|
|
|
MP4_RESULT MP4AUDIODECAPI mp4AudioDecoder_DecodeFrame(
|
|
mp4AudioDecoderHandle self,
|
|
struct CAccessUnit* auBuffer[],
|
|
struct CCompositionUnit* cuBuffer
|
|
);
|
|
|
|
MP4_RESULT MP4AUDIODECAPI mp4AudioDecoder_Destroy(mp4AudioDecoderHandle* self);
|
|
|
|
|
|
/* utility functions */
|
|
|
|
MP4_RESULT MP4AUDIODECAPI mp4AudioDecoder_Reset(
|
|
mp4AudioDecoderHandle self,
|
|
const unsigned int param,
|
|
int value
|
|
);
|
|
|
|
MP4_RESULT MP4AUDIODECAPI mp4AudioDecoder_Flush(
|
|
mp4AudioDecoderHandle self,
|
|
struct CCompositionUnit* cuBuffer
|
|
);
|
|
|
|
MP4_RESULT MP4AUDIODECAPI mp4AudioDecoder_GetBufferFullness(
|
|
const mp4AudioDecoderHandle self,
|
|
const unsigned int layer,
|
|
unsigned int* bufferfullness
|
|
);
|
|
|
|
MP4_RESULT MP4AUDIODECAPI mp4AudioDecoder_GetSamplesPerFrame(
|
|
const mp4AudioDecoderHandle self,
|
|
unsigned int* spf
|
|
);
|
|
|
|
MP4_RESULT MP4AUDIODECAPI mp4AudioDecoder_SetOutputLayer(
|
|
const mp4AudioDecoderHandle self,
|
|
const unsigned int outputLayer
|
|
);
|
|
|
|
/* MP4_RESULT MP4AUDIODECAPI mp4AudioDecoder_SetSpeedPitch( */
|
|
/* const mp4AudioDecoderHandle self, */
|
|
/* const float speedChangeFactor, */
|
|
/* const float pitchChangeFactor */
|
|
/* ); */
|
|
|
|
MP4_RESULT MP4AUDIODECAPI mp4AudioDecoder_GetLastError(const mp4AudioDecoderHandle self);
|
|
MP4_RESULT MP4AUDIODECAPI mp4AudioDecoder_GetLibraryVersion(mp4AudioDecoder_VersionInfo* versionInfo);
|
|
|
|
MP4_RESULT MP4AUDIODECAPI mp4AudioDecoder_ascParse(
|
|
const unsigned char* decSpecificInfoBuf,
|
|
const unsigned int decSpecificInfoBuf_len,
|
|
struct CSAudioSpecificConfig* asc
|
|
);
|
|
|
|
MP4_RESULT MP4AUDIODECAPI mp4AudioDecoder_ascParseStream(
|
|
const unsigned char* decSpecificInfoBuf,
|
|
struct CSAudioSpecificConfig* asc,
|
|
int* bitsRead
|
|
);
|
|
|
|
MP4_RESULT MP4AUDIODECAPI mp4AudioDecoder_ascParseExt(
|
|
const unsigned char* const decSpecificInfoBuf[],
|
|
const unsigned int decSpecificInfoBuf_len[],
|
|
const unsigned int avgBitrate[],
|
|
const unsigned int streams,
|
|
unsigned int* layers, /* out */
|
|
struct CSAudioSpecificConfig* asc[], /* out */
|
|
unsigned int streamsPerLayer[] /* out */
|
|
);
|
|
|
|
MP4_RESULT MP4AUDIODECAPI mp4AudioDecoder_ascPrint(
|
|
unsigned int layers, /* in */
|
|
struct CSAudioSpecificConfig* asc[], /* in */
|
|
unsigned int stringLen, /* in */
|
|
unsigned char string[] /* ptr in, content out */
|
|
);
|
|
|
|
MP4_RESULT MP4AUDIODECAPI mp4AudioDecoder_GetPcmWidth(
|
|
const unsigned char* const decSpecificInfoBuf[],
|
|
const unsigned int decSpecificInfoBuf_len[],
|
|
const unsigned int streams,
|
|
unsigned int* pcmwidth /* out */
|
|
);
|
|
|
|
|
|
#if defined(WIN32) || defined(WIN64)
|
|
#pragma pack(pop)
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __MP4AUDIODECIFC_H__ */
|