xref: /aosp_15_r20/external/aac/libMpegTPEnc/include/tpenc_lib.h (revision e54365361535b070c2db7374cec45c159c7d0e7a)
1*e5436536SAndroid Build Coastguard Worker /* -----------------------------------------------------------------------------
2*e5436536SAndroid Build Coastguard Worker Software License for The Fraunhofer FDK AAC Codec Library for Android
3*e5436536SAndroid Build Coastguard Worker 
4*e5436536SAndroid Build Coastguard Worker © Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten
5*e5436536SAndroid Build Coastguard Worker Forschung e.V. All rights reserved.
6*e5436536SAndroid Build Coastguard Worker 
7*e5436536SAndroid Build Coastguard Worker  1.    INTRODUCTION
8*e5436536SAndroid Build Coastguard Worker The Fraunhofer FDK AAC Codec Library for Android ("FDK AAC Codec") is software
9*e5436536SAndroid Build Coastguard Worker that implements the MPEG Advanced Audio Coding ("AAC") encoding and decoding
10*e5436536SAndroid Build Coastguard Worker scheme for digital audio. This FDK AAC Codec software is intended to be used on
11*e5436536SAndroid Build Coastguard Worker a wide variety of Android devices.
12*e5436536SAndroid Build Coastguard Worker 
13*e5436536SAndroid Build Coastguard Worker AAC's HE-AAC and HE-AAC v2 versions are regarded as today's most efficient
14*e5436536SAndroid Build Coastguard Worker general perceptual audio codecs. AAC-ELD is considered the best-performing
15*e5436536SAndroid Build Coastguard Worker full-bandwidth communications codec by independent studies and is widely
16*e5436536SAndroid Build Coastguard Worker deployed. AAC has been standardized by ISO and IEC as part of the MPEG
17*e5436536SAndroid Build Coastguard Worker specifications.
18*e5436536SAndroid Build Coastguard Worker 
19*e5436536SAndroid Build Coastguard Worker Patent licenses for necessary patent claims for the FDK AAC Codec (including
20*e5436536SAndroid Build Coastguard Worker those of Fraunhofer) may be obtained through Via Licensing
21*e5436536SAndroid Build Coastguard Worker (www.vialicensing.com) or through the respective patent owners individually for
22*e5436536SAndroid Build Coastguard Worker the purpose of encoding or decoding bit streams in products that are compliant
23*e5436536SAndroid Build Coastguard Worker with the ISO/IEC MPEG audio standards. Please note that most manufacturers of
24*e5436536SAndroid Build Coastguard Worker Android devices already license these patent claims through Via Licensing or
25*e5436536SAndroid Build Coastguard Worker directly from the patent owners, and therefore FDK AAC Codec software may
26*e5436536SAndroid Build Coastguard Worker already be covered under those patent licenses when it is used for those
27*e5436536SAndroid Build Coastguard Worker licensed purposes only.
28*e5436536SAndroid Build Coastguard Worker 
29*e5436536SAndroid Build Coastguard Worker Commercially-licensed AAC software libraries, including floating-point versions
30*e5436536SAndroid Build Coastguard Worker with enhanced sound quality, are also available from Fraunhofer. Users are
31*e5436536SAndroid Build Coastguard Worker encouraged to check the Fraunhofer website for additional applications
32*e5436536SAndroid Build Coastguard Worker information and documentation.
33*e5436536SAndroid Build Coastguard Worker 
34*e5436536SAndroid Build Coastguard Worker 2.    COPYRIGHT LICENSE
35*e5436536SAndroid Build Coastguard Worker 
36*e5436536SAndroid Build Coastguard Worker Redistribution and use in source and binary forms, with or without modification,
37*e5436536SAndroid Build Coastguard Worker are permitted without payment of copyright license fees provided that you
38*e5436536SAndroid Build Coastguard Worker satisfy the following conditions:
39*e5436536SAndroid Build Coastguard Worker 
40*e5436536SAndroid Build Coastguard Worker You must retain the complete text of this software license in redistributions of
41*e5436536SAndroid Build Coastguard Worker the FDK AAC Codec or your modifications thereto in source code form.
42*e5436536SAndroid Build Coastguard Worker 
43*e5436536SAndroid Build Coastguard Worker You must retain the complete text of this software license in the documentation
44*e5436536SAndroid Build Coastguard Worker and/or other materials provided with redistributions of the FDK AAC Codec or
45*e5436536SAndroid Build Coastguard Worker your modifications thereto in binary form. You must make available free of
46*e5436536SAndroid Build Coastguard Worker charge copies of the complete source code of the FDK AAC Codec and your
47*e5436536SAndroid Build Coastguard Worker modifications thereto to recipients of copies in binary form.
48*e5436536SAndroid Build Coastguard Worker 
49*e5436536SAndroid Build Coastguard Worker The name of Fraunhofer may not be used to endorse or promote products derived
50*e5436536SAndroid Build Coastguard Worker from this library without prior written permission.
51*e5436536SAndroid Build Coastguard Worker 
52*e5436536SAndroid Build Coastguard Worker You may not charge copyright license fees for anyone to use, copy or distribute
53*e5436536SAndroid Build Coastguard Worker the FDK AAC Codec software or your modifications thereto.
54*e5436536SAndroid Build Coastguard Worker 
55*e5436536SAndroid Build Coastguard Worker Your modified versions of the FDK AAC Codec must carry prominent notices stating
56*e5436536SAndroid Build Coastguard Worker that you changed the software and the date of any change. For modified versions
57*e5436536SAndroid Build Coastguard Worker of the FDK AAC Codec, the term "Fraunhofer FDK AAC Codec Library for Android"
58*e5436536SAndroid Build Coastguard Worker must be replaced by the term "Third-Party Modified Version of the Fraunhofer FDK
59*e5436536SAndroid Build Coastguard Worker AAC Codec Library for Android."
60*e5436536SAndroid Build Coastguard Worker 
61*e5436536SAndroid Build Coastguard Worker 3.    NO PATENT LICENSE
62*e5436536SAndroid Build Coastguard Worker 
63*e5436536SAndroid Build Coastguard Worker NO EXPRESS OR IMPLIED LICENSES TO ANY PATENT CLAIMS, including without
64*e5436536SAndroid Build Coastguard Worker limitation the patents of Fraunhofer, ARE GRANTED BY THIS SOFTWARE LICENSE.
65*e5436536SAndroid Build Coastguard Worker Fraunhofer provides no warranty of patent non-infringement with respect to this
66*e5436536SAndroid Build Coastguard Worker software.
67*e5436536SAndroid Build Coastguard Worker 
68*e5436536SAndroid Build Coastguard Worker You may use this FDK AAC Codec software or modifications thereto only for
69*e5436536SAndroid Build Coastguard Worker purposes that are authorized by appropriate patent licenses.
70*e5436536SAndroid Build Coastguard Worker 
71*e5436536SAndroid Build Coastguard Worker 4.    DISCLAIMER
72*e5436536SAndroid Build Coastguard Worker 
73*e5436536SAndroid Build Coastguard Worker This FDK AAC Codec software is provided by Fraunhofer on behalf of the copyright
74*e5436536SAndroid Build Coastguard Worker holders and contributors "AS IS" and WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES,
75*e5436536SAndroid Build Coastguard Worker including but not limited to the implied warranties of merchantability and
76*e5436536SAndroid Build Coastguard Worker fitness for a particular purpose. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
77*e5436536SAndroid Build Coastguard Worker CONTRIBUTORS BE LIABLE for any direct, indirect, incidental, special, exemplary,
78*e5436536SAndroid Build Coastguard Worker or consequential damages, including but not limited to procurement of substitute
79*e5436536SAndroid Build Coastguard Worker goods or services; loss of use, data, or profits, or business interruption,
80*e5436536SAndroid Build Coastguard Worker however caused and on any theory of liability, whether in contract, strict
81*e5436536SAndroid Build Coastguard Worker liability, or tort (including negligence), arising in any way out of the use of
82*e5436536SAndroid Build Coastguard Worker this software, even if advised of the possibility of such damage.
83*e5436536SAndroid Build Coastguard Worker 
84*e5436536SAndroid Build Coastguard Worker 5.    CONTACT INFORMATION
85*e5436536SAndroid Build Coastguard Worker 
86*e5436536SAndroid Build Coastguard Worker Fraunhofer Institute for Integrated Circuits IIS
87*e5436536SAndroid Build Coastguard Worker Attention: Audio and Multimedia Departments - FDK AAC LL
88*e5436536SAndroid Build Coastguard Worker Am Wolfsmantel 33
89*e5436536SAndroid Build Coastguard Worker 91058 Erlangen, Germany
90*e5436536SAndroid Build Coastguard Worker 
91*e5436536SAndroid Build Coastguard Worker www.iis.fraunhofer.de/amm
92*e5436536SAndroid Build Coastguard Worker [email protected]
93*e5436536SAndroid Build Coastguard Worker ----------------------------------------------------------------------------- */
94*e5436536SAndroid Build Coastguard Worker 
95*e5436536SAndroid Build Coastguard Worker /******************* MPEG transport format encoder library *********************
96*e5436536SAndroid Build Coastguard Worker 
97*e5436536SAndroid Build Coastguard Worker    Author(s):   Manuel Jander
98*e5436536SAndroid Build Coastguard Worker 
99*e5436536SAndroid Build Coastguard Worker    Description: MPEG Transport encode
100*e5436536SAndroid Build Coastguard Worker 
101*e5436536SAndroid Build Coastguard Worker *******************************************************************************/
102*e5436536SAndroid Build Coastguard Worker 
103*e5436536SAndroid Build Coastguard Worker #ifndef TPENC_LIB_H
104*e5436536SAndroid Build Coastguard Worker #define TPENC_LIB_H
105*e5436536SAndroid Build Coastguard Worker 
106*e5436536SAndroid Build Coastguard Worker #include "tp_data.h"
107*e5436536SAndroid Build Coastguard Worker #include "FDK_bitstream.h"
108*e5436536SAndroid Build Coastguard Worker 
109*e5436536SAndroid Build Coastguard Worker #define TRANSPORTENC_INBUF_SIZE 8192
110*e5436536SAndroid Build Coastguard Worker 
111*e5436536SAndroid Build Coastguard Worker typedef enum {
112*e5436536SAndroid Build Coastguard Worker   TRANSPORTENC_OK = 0,             /*!< All fine.             */
113*e5436536SAndroid Build Coastguard Worker   TRANSPORTENC_NO_MEM,             /*!< Out of memory.             */
114*e5436536SAndroid Build Coastguard Worker   TRANSPORTENC_UNKOWN_ERROR = 1,   /*!< Unknown error (embarrasing).   */
115*e5436536SAndroid Build Coastguard Worker   TRANSPORTENC_INVALID_PARAMETER,  /*!< An invalid parameter was passed to a
116*e5436536SAndroid Build Coastguard Worker                                       function .          */
117*e5436536SAndroid Build Coastguard Worker   TRANSPORTENC_UNSUPPORTED_FORMAT, /*!< Unsupported transport format. */
118*e5436536SAndroid Build Coastguard Worker   TRANSPORTENC_NOT_ENOUGH_BITS,    /*!< Out of bits. Provide more bits and try
119*e5436536SAndroid Build Coastguard Worker                                       again.            */
120*e5436536SAndroid Build Coastguard Worker 
121*e5436536SAndroid Build Coastguard Worker   TRANSPORTENC_INVALID_CONFIG, /*!< Error in configuration.               */
122*e5436536SAndroid Build Coastguard Worker   TRANSPORTENC_LATM_INVALID_NR_OF_SUBFRAMES, /*!< LATM: number of subframes out
123*e5436536SAndroid Build Coastguard Worker                                                 of range.                  */
124*e5436536SAndroid Build Coastguard Worker   TRANSPORTENC_LOAS_NOT_AVAILABLE, /*!< LOAS format not supported.           */
125*e5436536SAndroid Build Coastguard Worker   TRANSPORTENC_INVALID_LATM_ALIGNMENT, /*!< AudioMuxElement length not aligned
126*e5436536SAndroid Build Coastguard Worker                                           to 1 byte.            */
127*e5436536SAndroid Build Coastguard Worker 
128*e5436536SAndroid Build Coastguard Worker   TRANSPORTENC_INVALID_TRANSMISSION_FRAME_LENGTH, /*!< Invalid transmission
129*e5436536SAndroid Build Coastguard Worker                                                      frame length (< 0). */
130*e5436536SAndroid Build Coastguard Worker   TRANSPORTENC_INVALID_CELP_FRAME_LENGTH, /*!< Invalid CELP frame length found
131*e5436536SAndroid Build Coastguard Worker                                              (>= 62).                 */
132*e5436536SAndroid Build Coastguard Worker   TRANSPORTENC_INVALID_FRAME_BITS, /*!< Frame bits is not 40 and not 80. */
133*e5436536SAndroid Build Coastguard Worker   TRANSPORTENC_INVALID_AOT,        /*!< Unknown AOT found.        */
134*e5436536SAndroid Build Coastguard Worker   TRANSPORTENC_INVALID_AU_LENGTH   /*!< Invalid Access Unit length (not
135*e5436536SAndroid Build Coastguard Worker                                       byte-aligned).           */
136*e5436536SAndroid Build Coastguard Worker 
137*e5436536SAndroid Build Coastguard Worker } TRANSPORTENC_ERROR;
138*e5436536SAndroid Build Coastguard Worker 
139*e5436536SAndroid Build Coastguard Worker typedef struct TRANSPORTENC *HANDLE_TRANSPORTENC;
140*e5436536SAndroid Build Coastguard Worker 
141*e5436536SAndroid Build Coastguard Worker /**
142*e5436536SAndroid Build Coastguard Worker  * \brief             Determine a reasonable channel configuration on the basis
143*e5436536SAndroid Build Coastguard Worker  * of channel_mode.
144*e5436536SAndroid Build Coastguard Worker  * \param noChannels  Number of audio channels.
145*e5436536SAndroid Build Coastguard Worker  * \return            CHANNEL_MODE value that matches the given amount of audio
146*e5436536SAndroid Build Coastguard Worker  * channels.
147*e5436536SAndroid Build Coastguard Worker  */
148*e5436536SAndroid Build Coastguard Worker CHANNEL_MODE transportEnc_GetChannelMode(int noChannels);
149*e5436536SAndroid Build Coastguard Worker 
150*e5436536SAndroid Build Coastguard Worker /**
151*e5436536SAndroid Build Coastguard Worker  * \brief                Register SBR heaqder writer callback.
152*e5436536SAndroid Build Coastguard Worker  * \param hTp            Handle of transport decoder.
153*e5436536SAndroid Build Coastguard Worker  * \param cbUpdateConfig Pointer to a callback function to handle SBR header
154*e5436536SAndroid Build Coastguard Worker  * writing.
155*e5436536SAndroid Build Coastguard Worker  * \param user_data      void pointer for user data passed to the callback as
156*e5436536SAndroid Build Coastguard Worker  * first parameter.
157*e5436536SAndroid Build Coastguard Worker  * \return               0 on success.
158*e5436536SAndroid Build Coastguard Worker  */
159*e5436536SAndroid Build Coastguard Worker int transportEnc_RegisterSbrCallback(HANDLE_TRANSPORTENC hTpEnc,
160*e5436536SAndroid Build Coastguard Worker                                      const cbSbr_t cbSbr, void *user_data);
161*e5436536SAndroid Build Coastguard Worker 
162*e5436536SAndroid Build Coastguard Worker /**
163*e5436536SAndroid Build Coastguard Worker  * \brief                Register USAC SC writer callback.
164*e5436536SAndroid Build Coastguard Worker  * \param hTp            Handle of transport decoder.
165*e5436536SAndroid Build Coastguard Worker  * \param cbUpdateConfig Pointer to a callback function to handle USAC
166*e5436536SAndroid Build Coastguard Worker  * SCwriting.
167*e5436536SAndroid Build Coastguard Worker  * \param user_data      void pointer for user data passed to the callback as
168*e5436536SAndroid Build Coastguard Worker  * first parameter.
169*e5436536SAndroid Build Coastguard Worker  * \return               0 on success.
170*e5436536SAndroid Build Coastguard Worker  */
171*e5436536SAndroid Build Coastguard Worker int transportEnc_RegisterUsacCallback(HANDLE_TRANSPORTENC hTpEnc,
172*e5436536SAndroid Build Coastguard Worker                                       const cbUsac_t cbUsac, void *user_data);
173*e5436536SAndroid Build Coastguard Worker 
174*e5436536SAndroid Build Coastguard Worker /**
175*e5436536SAndroid Build Coastguard Worker  * \brief                Register SSC writer callback.
176*e5436536SAndroid Build Coastguard Worker  * \param hTp            Handle of transport decoder.
177*e5436536SAndroid Build Coastguard Worker  * \param cbUpdateConfig Pointer to a callback function to handle SSC writing.
178*e5436536SAndroid Build Coastguard Worker  * \param user_data      void pointer for user data passed to the callback as
179*e5436536SAndroid Build Coastguard Worker  * first parameter.
180*e5436536SAndroid Build Coastguard Worker  * \return               0 on success.
181*e5436536SAndroid Build Coastguard Worker  */
182*e5436536SAndroid Build Coastguard Worker int transportEnc_RegisterSscCallback(HANDLE_TRANSPORTENC hTpEnc,
183*e5436536SAndroid Build Coastguard Worker                                      const cbSsc_t cbSsc, void *user_data);
184*e5436536SAndroid Build Coastguard Worker 
185*e5436536SAndroid Build Coastguard Worker /**
186*e5436536SAndroid Build Coastguard Worker  * \brief         Write ASC from given parameters.
187*e5436536SAndroid Build Coastguard Worker  * \param asc     A HANDLE_FDK_BITSTREAM where the ASC is written to.
188*e5436536SAndroid Build Coastguard Worker  * \param config  Structure containing the codec configuration settings.
189*e5436536SAndroid Build Coastguard Worker  * \param cb callback information structure.
190*e5436536SAndroid Build Coastguard Worker  * \return        0 on success.
191*e5436536SAndroid Build Coastguard Worker  */
192*e5436536SAndroid Build Coastguard Worker int transportEnc_writeASC(HANDLE_FDK_BITSTREAM asc, CODER_CONFIG *config,
193*e5436536SAndroid Build Coastguard Worker                           CSTpCallBacks *cb);
194*e5436536SAndroid Build Coastguard Worker 
195*e5436536SAndroid Build Coastguard Worker /* Defintion of flags that can be passed to transportEnc_Open() */
196*e5436536SAndroid Build Coastguard Worker #define TP_FLAG_MPEG4 1     /** MPEG4 (instead of MPEG2) */
197*e5436536SAndroid Build Coastguard Worker #define TP_FLAG_LATM_AMV 2  /** LATM AudioMuxVersion  */
198*e5436536SAndroid Build Coastguard Worker #define TP_FLAG_LATM_AMVA 4 /** LATM AudioMuxVersionA */
199*e5436536SAndroid Build Coastguard Worker 
200*e5436536SAndroid Build Coastguard Worker /**
201*e5436536SAndroid Build Coastguard Worker  * \brief               Allocate transport encoder.
202*e5436536SAndroid Build Coastguard Worker  * \param phTpEnc       Pointer to transport encoder handle.
203*e5436536SAndroid Build Coastguard Worker  * \return              Error code.
204*e5436536SAndroid Build Coastguard Worker  */
205*e5436536SAndroid Build Coastguard Worker TRANSPORTENC_ERROR transportEnc_Open(HANDLE_TRANSPORTENC *phTpEnc);
206*e5436536SAndroid Build Coastguard Worker 
207*e5436536SAndroid Build Coastguard Worker /**
208*e5436536SAndroid Build Coastguard Worker  * \brief               Init transport encoder.
209*e5436536SAndroid Build Coastguard Worker  * \param bsBuffer      Pointer to transport encoder.
210*e5436536SAndroid Build Coastguard Worker  * \param bsBuffer      Pointer to bitstream buffer.
211*e5436536SAndroid Build Coastguard Worker  * \param bsBufferSize  Size in bytes of bsBuffer.
212*e5436536SAndroid Build Coastguard Worker  * \param transportFmt  Format of the transport to be written.
213*e5436536SAndroid Build Coastguard Worker  * \param config        Pointer to a valid CODER_CONFIG struct.
214*e5436536SAndroid Build Coastguard Worker  * \param flags         Transport encoder flags.
215*e5436536SAndroid Build Coastguard Worker  * \return              Error code.
216*e5436536SAndroid Build Coastguard Worker  */
217*e5436536SAndroid Build Coastguard Worker TRANSPORTENC_ERROR transportEnc_Init(HANDLE_TRANSPORTENC hTpEnc,
218*e5436536SAndroid Build Coastguard Worker                                      UCHAR *bsBuffer, INT bsBufferSize,
219*e5436536SAndroid Build Coastguard Worker                                      TRANSPORT_TYPE transportFmt,
220*e5436536SAndroid Build Coastguard Worker                                      CODER_CONFIG *config, UINT flags);
221*e5436536SAndroid Build Coastguard Worker 
222*e5436536SAndroid Build Coastguard Worker /**
223*e5436536SAndroid Build Coastguard Worker  * \brief               Write additional bits in transport encoder.
224*e5436536SAndroid Build Coastguard Worker  * \param config        Pointer to a valid CODER_CONFIG struct.
225*e5436536SAndroid Build Coastguard Worker  * \param nBits         Number of additional bits.
226*e5436536SAndroid Build Coastguard Worker  * \return              Error code.
227*e5436536SAndroid Build Coastguard Worker  */
228*e5436536SAndroid Build Coastguard Worker TRANSPORTENC_ERROR transportEnc_AddOtherDataBits(HANDLE_TRANSPORTENC hTpEnc,
229*e5436536SAndroid Build Coastguard Worker                                                  const int nBits);
230*e5436536SAndroid Build Coastguard Worker 
231*e5436536SAndroid Build Coastguard Worker /**
232*e5436536SAndroid Build Coastguard Worker  * \brief      Get transport encoder bitstream.
233*e5436536SAndroid Build Coastguard Worker  * \param hTp  Pointer to a transport encoder handle.
234*e5436536SAndroid Build Coastguard Worker  * \return     The handle to the requested FDK bitstream.
235*e5436536SAndroid Build Coastguard Worker  */
236*e5436536SAndroid Build Coastguard Worker HANDLE_FDK_BITSTREAM transportEnc_GetBitstream(HANDLE_TRANSPORTENC hTp);
237*e5436536SAndroid Build Coastguard Worker 
238*e5436536SAndroid Build Coastguard Worker /**
239*e5436536SAndroid Build Coastguard Worker  * \brief         Get amount of bits required by the transport headers.
240*e5436536SAndroid Build Coastguard Worker  * \param hTp     Handle of transport encoder.
241*e5436536SAndroid Build Coastguard Worker  * \param auBits  Amount of payload bits required for the current subframe.
242*e5436536SAndroid Build Coastguard Worker  * \return        Error code.
243*e5436536SAndroid Build Coastguard Worker  */
244*e5436536SAndroid Build Coastguard Worker INT transportEnc_GetStaticBits(HANDLE_TRANSPORTENC hTp, int auBits);
245*e5436536SAndroid Build Coastguard Worker 
246*e5436536SAndroid Build Coastguard Worker /**
247*e5436536SAndroid Build Coastguard Worker  * \brief       Close transport encoder. This function assures that all
248*e5436536SAndroid Build Coastguard Worker  * allocated memory is freed.
249*e5436536SAndroid Build Coastguard Worker  * \param phTp  Pointer to a previously allocated transport encoder handle.
250*e5436536SAndroid Build Coastguard Worker  */
251*e5436536SAndroid Build Coastguard Worker void transportEnc_Close(HANDLE_TRANSPORTENC *phTp);
252*e5436536SAndroid Build Coastguard Worker 
253*e5436536SAndroid Build Coastguard Worker /**
254*e5436536SAndroid Build Coastguard Worker  * \brief                       Write one access unit.
255*e5436536SAndroid Build Coastguard Worker  * \param hTp                   Handle of transport encoder.
256*e5436536SAndroid Build Coastguard Worker  * \param total_bits            Amount of total access unit bits.
257*e5436536SAndroid Build Coastguard Worker  * \param bufferFullness        Value of current buffer fullness in bits.
258*e5436536SAndroid Build Coastguard Worker  * \param noConsideredChannels  Number of bitrate wise considered channels (all
259*e5436536SAndroid Build Coastguard Worker  * minus LFE channels).
260*e5436536SAndroid Build Coastguard Worker  * \return                      Error code.
261*e5436536SAndroid Build Coastguard Worker  */
262*e5436536SAndroid Build Coastguard Worker TRANSPORTENC_ERROR transportEnc_WriteAccessUnit(HANDLE_TRANSPORTENC hTp,
263*e5436536SAndroid Build Coastguard Worker                                                 INT total_bits,
264*e5436536SAndroid Build Coastguard Worker                                                 int bufferFullness,
265*e5436536SAndroid Build Coastguard Worker                                                 int noConsideredChannels);
266*e5436536SAndroid Build Coastguard Worker 
267*e5436536SAndroid Build Coastguard Worker /**
268*e5436536SAndroid Build Coastguard Worker  * \brief        Inform the transportEnc layer that writing of access unit has
269*e5436536SAndroid Build Coastguard Worker  * finished. This function is required to be called when the encoder has
270*e5436536SAndroid Build Coastguard Worker  * finished writing one Access one Access Unit for bitstream
271*e5436536SAndroid Build Coastguard Worker  * housekeeping.
272*e5436536SAndroid Build Coastguard Worker  * \param hTp    Transport handle.
273*e5436536SAndroid Build Coastguard Worker  * \param pBits  Pointer to an int, where the current amount of frame bits is
274*e5436536SAndroid Build Coastguard Worker  * passed and where the current amount of subframe bits is returned.
275*e5436536SAndroid Build Coastguard Worker  *
276*e5436536SAndroid Build Coastguard Worker  * OR:  This integer is modified by the amount of extra bit alignment that may
277*e5436536SAndroid Build Coastguard Worker  * occurr.
278*e5436536SAndroid Build Coastguard Worker  *
279*e5436536SAndroid Build Coastguard Worker  * \return       Error code.
280*e5436536SAndroid Build Coastguard Worker  */
281*e5436536SAndroid Build Coastguard Worker TRANSPORTENC_ERROR transportEnc_EndAccessUnit(HANDLE_TRANSPORTENC hTp,
282*e5436536SAndroid Build Coastguard Worker                                               int *pBits);
283*e5436536SAndroid Build Coastguard Worker 
284*e5436536SAndroid Build Coastguard Worker /*
285*e5436536SAndroid Build Coastguard Worker  * \brief         Get a payload frame.
286*e5436536SAndroid Build Coastguard Worker  * \param hTpEnc  Transport encoder handle.
287*e5436536SAndroid Build Coastguard Worker  * \param nBytes  Pointer to an int to hold the frame size in bytes. Returns
288*e5436536SAndroid Build Coastguard Worker  * zero if currently there is no complete frame for output (number of sub frames
289*e5436536SAndroid Build Coastguard Worker  * > 1).
290*e5436536SAndroid Build Coastguard Worker  * \return        Error code.
291*e5436536SAndroid Build Coastguard Worker  */
292*e5436536SAndroid Build Coastguard Worker TRANSPORTENC_ERROR transportEnc_GetFrame(HANDLE_TRANSPORTENC hTpEnc,
293*e5436536SAndroid Build Coastguard Worker                                          int *nbytes);
294*e5436536SAndroid Build Coastguard Worker 
295*e5436536SAndroid Build Coastguard Worker /* ADTS CRC support */
296*e5436536SAndroid Build Coastguard Worker 
297*e5436536SAndroid Build Coastguard Worker /**
298*e5436536SAndroid Build Coastguard Worker  * \brief         Set current bitstream position as start of a new data region.
299*e5436536SAndroid Build Coastguard Worker  * \param hTpEnc  Transport encoder handle.
300*e5436536SAndroid Build Coastguard Worker  * \param mBits   Size in bits of the data region. Set to 0 if it should not be
301*e5436536SAndroid Build Coastguard Worker  * of a fixed size.
302*e5436536SAndroid Build Coastguard Worker  * \return        Data region ID, which should be used when calling
303*e5436536SAndroid Build Coastguard Worker  * transportEnc_CrcEndReg().
304*e5436536SAndroid Build Coastguard Worker  */
305*e5436536SAndroid Build Coastguard Worker int transportEnc_CrcStartReg(HANDLE_TRANSPORTENC hTpEnc, int mBits);
306*e5436536SAndroid Build Coastguard Worker 
307*e5436536SAndroid Build Coastguard Worker /**
308*e5436536SAndroid Build Coastguard Worker  * \brief         Set end of data region.
309*e5436536SAndroid Build Coastguard Worker  * \param hTpEnc  Transport encoder handle.
310*e5436536SAndroid Build Coastguard Worker  * \param reg     Data region ID, opbtained from transportEnc_CrcStartReg().
311*e5436536SAndroid Build Coastguard Worker  * \return        void
312*e5436536SAndroid Build Coastguard Worker  */
313*e5436536SAndroid Build Coastguard Worker void transportEnc_CrcEndReg(HANDLE_TRANSPORTENC hTpEnc, int reg);
314*e5436536SAndroid Build Coastguard Worker 
315*e5436536SAndroid Build Coastguard Worker /**
316*e5436536SAndroid Build Coastguard Worker  * \brief             Get AudioSpecificConfig or StreamMuxConfig from transport
317*e5436536SAndroid Build Coastguard Worker  * encoder handle and write it to dataBuffer.
318*e5436536SAndroid Build Coastguard Worker  * \param hTpEnc      Transport encoder handle.
319*e5436536SAndroid Build Coastguard Worker  * \param cc          Pointer to the current and valid configuration contained
320*e5436536SAndroid Build Coastguard Worker  * in a CODER_CONFIG struct.
321*e5436536SAndroid Build Coastguard Worker  * \param dataBuffer  Bitbuffer holding binary configuration.
322*e5436536SAndroid Build Coastguard Worker  * \param confType    Pointer to an UINT where the configuration type is
323*e5436536SAndroid Build Coastguard Worker  * returned (0:ASC, 1:SMC).
324*e5436536SAndroid Build Coastguard Worker  * \return            Error code.
325*e5436536SAndroid Build Coastguard Worker  */
326*e5436536SAndroid Build Coastguard Worker TRANSPORTENC_ERROR transportEnc_GetConf(HANDLE_TRANSPORTENC hTpEnc,
327*e5436536SAndroid Build Coastguard Worker                                         CODER_CONFIG *cc,
328*e5436536SAndroid Build Coastguard Worker                                         FDK_BITSTREAM *dataBuffer,
329*e5436536SAndroid Build Coastguard Worker                                         UINT *confType);
330*e5436536SAndroid Build Coastguard Worker 
331*e5436536SAndroid Build Coastguard Worker /**
332*e5436536SAndroid Build Coastguard Worker  * \brief       Get information (version among other things) of the transport
333*e5436536SAndroid Build Coastguard Worker  * encoder library.
334*e5436536SAndroid Build Coastguard Worker  * \param info  Pointer to an allocated LIB_INFO struct.
335*e5436536SAndroid Build Coastguard Worker  * \return      Error code.
336*e5436536SAndroid Build Coastguard Worker  */
337*e5436536SAndroid Build Coastguard Worker TRANSPORTENC_ERROR transportEnc_GetLibInfo(LIB_INFO *info);
338*e5436536SAndroid Build Coastguard Worker 
339*e5436536SAndroid Build Coastguard Worker #endif /* #ifndef TPENC_LIB_H */
340