122 lines
5.8 KiB
Markdown
122 lines
5.8 KiB
Markdown
# Introduction libxaac encoder APIs
|
||
|
||
# Encoder APIs
|
||
|
||
| **API Call** | **Description** |
|
||
|------|------|
|
||
|ixheaace_get_lib_id_strings| Gets the encoder library name and version number details |
|
||
|ixheaace_create| Sets the encoder configuration parameters, gets the memory requirements and allocates required memory |
|
||
|ixheaace_process| Encodes the input frame data |
|
||
|ixheaace_delete| Frees the allocated memories for the encoder |
|
||
|
||
## Flowchart of calling sequence
|
||

|
||
|
||
# Audio Object Types(AOT)
|
||
| **AOT** | **Description** |
|
||
|------|------|
|
||
|2|AAC-LC|
|
||
|5|HE-AACv1|
|
||
|23|AAC-LD|
|
||
|29|HE-AACv2|
|
||
|39|AAC-ELD|
|
||
|42|USAC|
|
||
|
||
# Running the libxaac encoder
|
||
The libxaac encoder can be run by providing command-line parameters(CLI options) directly or by providing a parameter file as a command line argument.
|
||
The reference paramfile is placed in `encoder\test` directory(paramfilesimple.txt)
|
||
The configuration file for DRC is placed in `encoder\test` directory(impd_drc_config_params.txt). Please make sure this file is placed in the same directory as the executable.
|
||
|
||
# Command line usage :
|
||
```
|
||
<exceutable> -ifile:<input_file> -ofile:<out_file> [options]
|
||
(or)
|
||
<executable> -paramfile:<paramfile>
|
||
[options] can be,
|
||
[-br:<bitrate>]
|
||
[-mps:<use_mps>]
|
||
[-adts:<use_adts_flag>]
|
||
[-tns:<use_tns_flag>]
|
||
[-nf:<use_noise_filling>]
|
||
[-cmpx_pred:<use_complex_prediction>]
|
||
[-framesize:<framesize_to_be_used>]
|
||
[-aot:<audio_object_type>]
|
||
[-esbr:<esbr_flag>]
|
||
[-full_bandwidth:<enable_full_bandwidth>]
|
||
[-max_out_buffer_per_ch:<bitreservoir_size>]
|
||
[-tree_cfg:<tree_config>]
|
||
[-usac:<usac_encoding_mode>]
|
||
[-ccfl_idx:<corecoder_framelength_index>]
|
||
[-pvc_enc:<pvc_enc_flag>]
|
||
[-harmonic_sbr:<harmonic_sbr_flag>]
|
||
[-esbr_hq:<esbr_hq_flag>]
|
||
[-drc:<drc_flag>]
|
||
[-inter_tes_enc:<inter_tes_enc_flag>]
|
||
[-rap:<random access interval in ms>]
|
||
[-stream_id:<stream identifier>]
|
||
|
||
where,
|
||
<paramfile> is the parameter file with multiple commands
|
||
<inputfile> is the input 16-bit WAV or PCM file name
|
||
<outputfile> is the output ADTS/ES file name
|
||
<bitrate> is the bit-rate in bits per second. Default value is 48000.
|
||
<use_mps> Valid values are 0 (disable MPS) and 1 (enable MPS). Default is 0.
|
||
<use_adts_flag> Valid values are 0 ( No ADTS header) and 1 ( generate ADTS header). Default is 0.
|
||
<use_tns_flag> Valid values are 0 (disable TNS) and 1 (enable TNS). Default is 1.
|
||
<use_noise_filling> controls usage of noise filling in encoding. Default 0.
|
||
<use_complex_prediction> controls usage of complex prediction in encoding. Default is 0.
|
||
<framesize_to_be_used> is the framesize to be used.
|
||
For AOT 23, 39 (LD core coder profiles) valid values are 480 and 512. Default is 512.
|
||
For AOT 2, 5, 29 (LC core coder profiles) valid values are 960 and 1024. Default is 1024.
|
||
For AOT 42 (USAC profile) valid values are 768 and 1024. Default is 1024.
|
||
<audio_object_type> is the Audio object type.
|
||
2 for AAC-LC
|
||
5 for HE-AACv1(Legacy SBR)
|
||
23 for AAC-LD
|
||
29 for HE-AACv2
|
||
39 for AAC-ELD
|
||
42 for USAC
|
||
Default is 2 for AAC-LC.
|
||
<esbr_flag> Valid values are 0 (disable eSBR) and 1 (enable eSBR). Default is 0 for HE-AACv1 profile (legacy SBR) and 1 for USAC profile.
|
||
<enable_full_bandwidth> Enable use of full bandwidth of input. Valid values are 0(disable full bandwidth) and 1(enable full bandwidth). Default is 0.
|
||
<bitreservoir_size> is the maximum size of bit reservoir to be used. Valid values are from -1 to 6144. -1 will omit use of bit reservoir. Default is 384.
|
||
<tree_config> MPS tree config
|
||
0 for '212'
|
||
1 for '5151'
|
||
2 for '5152'
|
||
3 for '525'
|
||
Default 0 for stereo input and 1 for 6ch input.
|
||
<usac_encoding_mode> USAC encoding mode to be chose
|
||
0 for 'usac_switched'
|
||
1 for 'usac_fd'
|
||
2 for 'usac_td'
|
||
Default 'usac_fd'
|
||
<corecoder_framelength_index> is the core coder framelength index for USAC encoder.
|
||
Valid values are 0, 1, 2, 3, 4. eSBR enabling is implicit
|
||
0 - Core coder framelength of USAC is 768 and eSBR is disabled
|
||
1 - Core coder framelength of USAC is 1024 and eSBR is disabled
|
||
2 - Core coder framelength of USAC is 768 and eSBR ratio 8:3
|
||
3 - Core coder framelength of USAC is 1024 and eSBR ratio 2:1
|
||
4 - Core coder framelength of USAC is 1024 and eSBR ratio 4:1
|
||
<pvc_enc_flag> Valid values are 0 (disable PVC encoding) and 1 (enable PVC encoding). Default is 0.
|
||
<harmonic_sbr_flag> Valid values are 0 (disable harmonic SBR) and 1 (enable harmonic SBR). Default is 0.
|
||
<esbr_hq_flag> Valid values are 0 (disable high quality eSBR) and 1 (enable high quality eSBR). Default is 0.
|
||
<drc_flag> Valid values are 0 (disable DRC encoding) and 1 (enable DRC encoding). Default is 0.
|
||
<inter_tes_enc_flag> Valid values are 0 (disable inter-TES encoding) and 1 (enable inter-TES encoding). Default is 0.
|
||
<random access interval in ms> is the time interval between audio preroll frames in ms. It is applicable only for AOT 42. Valid values are -1 (Audio preroll sent only at beginning of file) and greater than 1000 ms. Default is -1.
|
||
<stream identifier> It is the stream id used to uniquely identify configuration of a stream within a set of associated streams. It is applicable only for AOT 42. Valid values are 0 to 65535. Any value outside this range is type-casted to a value of unsigned short type. Default is 0.
|
||
|
||
```
|
||
Sample CLI:
|
||
```
|
||
-ifile:input_file.wav -ofile:out_file.aac -br:<bit_rate> –aot:<audio profile>
|
||
```
|
||
|
||
|
||
# Additional Documents
|
||
Brief description about documents present in `docs` folder
|
||
* [`LIBXAAC-Enc-API.pdf`](docs/LIBXAAC-Enc-API.pdf) - Describes Application Program Interface for libxaac encoder.
|
||
* [`LIBXAAC-Enc-GSG.pdf`](docs/LIBXAAC-Enc-GSG.pdf) - Getting Started Guide for the libxaac encoder.
|
||
|
||
# Validating the libxaac encoder
|
||
Testing for libxaac encoder is done using listening test for different AOT(Audio object types)
|