diff -r 951a5db380a0 -r d87d32eab1a9 videoeditorengine/mp3aacManipLib/AACGain/inc/sbr_codec.h --- a/videoeditorengine/mp3aacManipLib/AACGain/inc/sbr_codec.h Fri Jan 29 14:08:33 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,314 +0,0 @@ -/* -* Copyright (c) 2010 Ixonos Plc. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - Initial contribution -* -* Contributors: -* Ixonos Plc -* -* Description: -* -*/ - - -/* - \file - \brief SBR codec interface $Revision: 1.1.1.1.4.1 $ -*/ - -/************************************************************************** - sbr_codec.h - SBR codec interface. - - Author(s): Juha Ojanpera - Copyright (c) 2004 by Nokia Research Center, Multimedia Technologies. - *************************************************************************/ - -#ifndef SBR_CODEC_H_ -#define SBR_CODEC_H_ - -/*-- Project Headers. --*/ -#include "nok_bits.h" -#include "defines.h" - -#pragma warning( disable : 4244) - -#define SBR_EXTENSION (13) /*-- 1101 --*/ -#define SBR_EXTENSION_CRC (14) /*-- 1110 --*/ -#define MAX_NR_ELEMENTS (2) -#define MAX_SBR_BYTES (128) - -/** - * Error codes for SBR processing. - */ -typedef enum -{ - SBRDEC_OK = 0, - SBRDEC_CONCEAL, - SBRDEC_NOSYNCH, - SBRDEC_ILLEGAL_PROGRAM, - SBRDEC_ILLEGAL_TAG, - SBRDEC_ILLEGAL_CHN_CONFIG, - SBRDEC_ILLEGAL_SECTION, - SBRDEC_ILLEGAL_SCFACTORS, - SBRDEC_ILLEGAL_PULSE_DATA, - SBRDEC_MAIN_PROFILE_NOT_IMPLEMENTED, - SBRDEC_GC_NOT_IMPLEMENTED, - SBRDEC_ILLEGAL_PLUS_ELE_ID, - SBRDEC_CREATE_ERROR, - SBRDEC_NOT_INITIALIZED - -} SBR_ERROR; - -/** - * SBR element tags, these are the same as used in AAC also. - */ -typedef enum -{ - SBR_ID_SCE = 0, - SBR_ID_CPE, - SBR_ID_CCE, - SBR_ID_LFE, - SBR_ID_DSE, - SBR_ID_PCE, - SBR_ID_FIL, - SBR_ID_END - -} SBR_ELEMENT_ID; - -/** - * Bitstream element for SBR payload data. - */ -typedef struct -{ - /** - * Length of payload data. - */ - int16 Payload; - - /** - * Channel element ID for the associated SBR data. - */ - int16 ElementID; - - /** - * Offset to the start of the channel element, in bits. - */ - int32 elementOffset; - - /** - * Length of the channel element, in bits. - */ - int32 chElementLen; - - /** - * Decoding status of SBR header. - */ - uint8 headerStatus; - - /** - * Type of SBR element (with or without CRC codeword). - */ - int16 ExtensionType; - - /** - * SBR bitstream data. - */ - uint8 *Data; - -} SbrElementStream; - -typedef struct -{ - int16 NrElements; - SbrElementStream sbrElement[MAX_NR_ELEMENTS]; - -} SbrBitStream; - -/** - * SBR handle. - */ -typedef struct SBR_Decoder_Instance SBR_Decoder; - -/** - * Creates SBR bitstream handle. - * - * Possible leave codes: - * - KErrNoMemory if memory allocation fails - * - * @return Handle to SBR bitstream handle - * - */ -SbrBitStream * -OpenSBRBitStreamL(void); - -/** - * Closes SBR bitstream handle. - * - * @param Bitstr Handle to SBR bitstream to be deleted - * @return NULL - * - */ -SbrBitStream * -CloseSBRBitStream(SbrBitStream *Bitstr); - -/** - * Creates SBR decoding/parsing handle. - * - * Possible leave codes: - * - KErrNoMemory if memory allocation fails - * - * @param sampleRate Sample rate of the AAC bitstream - * @param samplesPerFrame Frame length of the AAC stream (1024 or 960) - * @param isStereo 1 if stereo AAC stream, 0 otherwise (=mono) - * @param isDualMono 1 if two single channel elements present in the AAC bistream, 0 otherwise - * @return Handle to SBR decoding/parsing handle - * - */ -SBR_Decoder * -OpenSBRDecoderL(int32 sampleRate, - int16 samplesPerFrame, - uint8 isStereo, - uint8 isDualMono); - -/** - * Closes SBR decoding handle. - * - * @param Bitstr Handle to SBR decoding/parsing to be deleted - * @return NULL - * - */ -SBR_Decoder * -CloseSBR(SBR_Decoder *self); - -/** - * Parses the SBR payload data and writes the modified bitstream element(s) - * to output AAC bitstream. - * - * @param bsIn Handle to AAC input bitstream - * @param bsOut Handle to AAC output bitstream - * @param self Handle to SBR parser - * @param Bitstr Handle to SBR bitstream element(s) - * @param decVal Volume level adjustment factor - * @return Number of bytes written to output bitstream - * - */ -int16 -ParseSBR(TBitStream *bsIn, - TBitStream *bsOut, - SBR_Decoder *self, - SbrBitStream *Bitstr, - int16 decVal); - -/** - * Chacks whether parametric stereo tool is enabled in the SBR elements. - * - * @param self Handle to SBR parser - * @param Bitstr Handle to SBR bitstream element(s) - * @return 1 if parametric stereo found, 0 otherwise - * - */ -uint8 -IsSBRParametricStereoEnabled(SBR_Decoder *self, SbrBitStream *Bitstr); - -/** - * Chacks whether SBR elements present in the bistream. - * - * @param Bitstr Handle to SBR bitstream element(s) - * @return 1 if SBR elements found, 0 otherwise - * - */ -uint8 -IsSBREnabled(SbrBitStream *Bitstr); - -/** - * Reads SBR payload data from AAC bitstream into SBR bitstream handle. - * - * @param bs Handle to AAC bitstream - * @param streamSBR Handle to SBR bitstream handle - * @param extension_type SBR payload type - * @param prev_element Channel element type prior the fill element - * @param dataCount Length of SBR payload data, in bytes - * @return 1 if SBR read, 0 otherwise (in which case the callee should read the data) - * - */ -int16 -ReadSBRExtensionData(TBitStream *bs, - SbrBitStream *streamSBR, - int16 extension_type, - int16 prev_element, - int16 dataCount); - -/** - * Initializes SBR handle for silence data generation. - * - * @param sbrDec Handle to SBR decoder - * @param isStereo 1 if stereo AAC stream, 0 otherwise (=mono) - * @param isParametricStereo 1 if parametric stereo should be included in the SBR data - * - */ -void -InitSBRSilenceData(SBR_Decoder *sbrDec, uint8 isStereo, uint8 isParametricStereo); - -/** - * Writes silence to SBR channel element. Please note that this method is supposed - * to be called inside AAC bitstream multiplexer and is therefore part of encoding. - * If you want to upgrade plain AAC bitstream to eAAC+, use 'GenerateSBRSilenceDataL()' - * first to generate the silence bits for SBR, then parse the AAC bitstream (so that the - * channel element positions and their length are known) and finally call - * 'WriteSBRSilence()' to write the output eAAC+ bitstream. - * - * @param sbrDecoder Handle to SBR codec - * @param bsOut Handle to output (AAC) bitstream - * @param isStereo 1 if stereo AAC stream, 0 otherwise (=mono) - * @return Length of SBR silence data, in bits - * - */ -int16 -WriteSBRSilenceElement(SBR_Decoder *sbrDecoder, TBitStream *bsOut, uint8 isStereo); - -/** - * Generates silence bits for SBR bitstream. - * - * Possible leave codes: - * - KErrNoMemory if memory allocation fails - * - * @param OutBuffer Output buffer receiving silence data bits - * @param OutBufferSize Size of output buffer - * @param sampleRate Sample rate of the AAC bitstream - * @param isStereo 1 if stereo AAC stream, 0 otherwise (=mono) - * @param isParametricStereo 1 if parametric stereo should be included in the SBR data - * @return Length of SBR silence data, in bits - * - */ -int16 -GenerateSBRSilenceDataL(uint8 *OutBuffer, - int16 OutBufferSize, - int32 sampleRate, - uint8 isStereo, - uint8 isParametricStereo); - -/** - * Writes silence to the SBR part of the AAC bitstream. - * - * @param bsIn AAC input bitstream - * @param bsOut Output bitstream (AAC + SBR) - * @param streamSBR Handle to SBR bitstream element - * @param SbrBuffer Payload data to generate SBR silence - * @param SbrBits Length of SBR silence, in bits - * @return Length of AAC + SBR bitstream, in bytes - * - */ -int16 -WriteSBRSilence(TBitStream *bsIn, - TBitStream *bsOut, - SbrBitStream *streamSBR, - uint8 *SbrBuffer, - int16 SbrBits); - -#endif /*-- SBR_CODEC_H_ --*/