1219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard/* 2219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** Copyright 2003-2010, VisualOn, Inc. 3219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** 4219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** Licensed under the Apache License, Version 2.0 (the "License"); 5219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** you may not use this file except in compliance with the License. 6219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** You may obtain a copy of the License at 7219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** 8219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** http://www.apache.org/licenses/LICENSE-2.0 9219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** 10219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** Unless required by applicable law or agreed to in writing, software 11219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** distributed under the License is distributed on an "AS IS" BASIS, 12219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** See the License for the specific language governing permissions and 14219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** limitations under the License. 15219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard */ 16219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard/******************************************************************************* 17219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard File: aacenc_core.h 18219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 19219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard Content: aac encoder interface functions 20219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 2117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong*******************************************************************************/ 2217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 2317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#ifndef _aacenc_core_h_ 2417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define _aacenc_core_h_ 2517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 26219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 2717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#include "typedef.h" 28219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard#include "config.h" 29219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard#include "bitenc.h" 30219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 31219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard#include "psy_configuration.h" 32219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard#include "psy_main.h" 33219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard#include "qc_main.h" 34219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard#include "psy_main.h" 3517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong/*-------------------------- defines --------------------------------------*/ 3617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 3717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 3817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong/*-------------------- structure definitions ------------------------------*/ 3917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongtypedef struct { 4017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word32 sampleRate; /* audio file sample rate */ 4117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word32 bitRate; /* encoder bit rate in bits/sec */ 4217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 nChannelsIn; /* number of channels on input (1,2) */ 4317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 nChannelsOut; /* number of channels on output (1,2) */ 44219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard Word16 bandWidth; /* targeted audio bandwidth in Hz */ 4517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 adtsUsed; /* whether write adts header */ 4617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong} AACENC_CONFIG; 47219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 48219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 49219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgardtypedef struct { 50219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 51219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard AACENC_CONFIG config; /* Word16 size: 8 */ 52219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 53219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ELEMENT_INFO elInfo; /* Word16 size: 4 */ 54219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 55219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard QC_STATE qcKernel; /* Word16 size: 6 + 5(PADDING) + 7(ELEMENT_BITS) + 54(ADJ_THR_STATE) = 72 */ 56219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard QC_OUT qcOut; /* Word16 size: MAX_CHANNELS*920(QC_OUT_CHANNEL) + 5(QC_OUT_ELEMENT) + 7 = 932 / 1852 */ 57219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 58219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard PSY_OUT psyOut; /* Word16 size: MAX_CHANNELS*186 + 2 = 188 / 374 */ 59219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard PSY_KERNEL psyKernel; /* Word16 size: 2587 / 4491 */ 60219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 61219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard struct BITSTREAMENCODER_INIT bseInit; /* Word16 size: 6 */ 62219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard struct BIT_BUF bitStream; /* Word16 size: 8 */ 63219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard HANDLE_BIT_BUF hBitStream; 64219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard int initOK; 65219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 66219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard short *intbuf; 67219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard short *encbuf; 68219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard short *inbuf; 69219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard int enclen; 70219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard int inlen; 71219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard int intlen; 72219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard int uselength; 73219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 74219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard void *hCheck; 75219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard VO_MEM_OPERATOR *voMemop; 76219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard VO_MEM_OPERATOR voMemoprator; 77219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 78219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard}AAC_ENCODER; /* Word16 size: 3809 / 6851 */ 79219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 8017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong/*----------------------------------------------------------------------------- 8117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 8217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongfunctionname: AacInitDefaultConfig 8317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongdescription: gives reasonable default configuration 8417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongreturns: --- 8517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 8617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong------------------------------------------------------------------------------*/ 8717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongvoid AacInitDefaultConfig(AACENC_CONFIG *config); 8817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 8917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong/*--------------------------------------------------------------------------- 9017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 9117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongfunctionname:AacEncOpen 9217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongdescription: allocate and initialize a new encoder instance 9317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongreturns: AACENC_OK if success 9417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 9517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong---------------------------------------------------------------------------*/ 9617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 9717299ab50ceb70d904e610e3b2d7fb2361a11e03James DongWord16 AacEncOpen (AAC_ENCODER *hAacEnc, /* pointer to an encoder handle, initialized on return */ 9817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong const AACENC_CONFIG config); /* pre-initialized config struct */ 9917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 10017299ab50ceb70d904e610e3b2d7fb2361a11e03James DongWord16 AacEncEncode(AAC_ENCODER *hAacEnc, 10117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 *timeSignal, 10217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong const UWord8 *ancBytes, /*!< pointer to ancillary data bytes */ 10317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 *numAncBytes, /*!< number of ancillary Data Bytes, send as fill element */ 10417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong UWord8 *outBytes, /*!< pointer to output buffer */ 10517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word32 *numOutBytes /*!< number of bytes in output buffer */ 10617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ); 10717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 10817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong/*--------------------------------------------------------------------------- 10917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 11017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongfunctionname:AacEncClose 11117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongdescription: deallocate an encoder instance 11217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 11317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong---------------------------------------------------------------------------*/ 11417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 11517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongvoid AacEncClose (AAC_ENCODER* hAacEnc, VO_MEM_OPERATOR *pMemOP); /* an encoder handle */ 11617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 11717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#endif /* _aacenc_h_ */ 118