xref: /aosp_15_r20/external/libxaac/README_enc.md (revision 15dc779a375ca8b5125643b829a8aa4b70d7f451)
1*15dc779aSAndroid Build Coastguard Worker# Introduction libxaac encoder APIs
2*15dc779aSAndroid Build Coastguard Worker
3*15dc779aSAndroid Build Coastguard Worker# Encoder APIs
4*15dc779aSAndroid Build Coastguard Worker
5*15dc779aSAndroid Build Coastguard Worker| **API Call** | **Description** |
6*15dc779aSAndroid Build Coastguard Worker|------|------|
7*15dc779aSAndroid Build Coastguard Worker|ixheaace_get_lib_id_strings| Gets the encoder library name and version number details |
8*15dc779aSAndroid Build Coastguard Worker|ixheaace_create| Sets the encoder configuration parameters, gets the memory requirements and allocates required memory |
9*15dc779aSAndroid Build Coastguard Worker|ixheaace_process| Encodes the input frame data |
10*15dc779aSAndroid Build Coastguard Worker|ixheaace_delete| Frees the allocated memories for the encoder |
11*15dc779aSAndroid Build Coastguard Worker
12*15dc779aSAndroid Build Coastguard Worker## Flowchart of calling sequence
13*15dc779aSAndroid Build Coastguard Worker![API Flowchart](docs/Api_flowchart_enc.png)
14*15dc779aSAndroid Build Coastguard Worker
15*15dc779aSAndroid Build Coastguard Worker# Audio Object Types(AOT)
16*15dc779aSAndroid Build Coastguard Worker| **AOT** | **Description** |
17*15dc779aSAndroid Build Coastguard Worker|------|------|
18*15dc779aSAndroid Build Coastguard Worker|2|AAC-LC|
19*15dc779aSAndroid Build Coastguard Worker|5|HE-AACv1|
20*15dc779aSAndroid Build Coastguard Worker|23|AAC-LD|
21*15dc779aSAndroid Build Coastguard Worker|29|HE-AACv2|
22*15dc779aSAndroid Build Coastguard Worker|39|AAC-ELD|
23*15dc779aSAndroid Build Coastguard Worker|42|USAC|
24*15dc779aSAndroid Build Coastguard Worker
25*15dc779aSAndroid Build Coastguard Worker# Running the libxaac encoder
26*15dc779aSAndroid Build Coastguard WorkerThe libxaac encoder can be run by providing command-line parameters(CLI options) directly or by providing a parameter file as a command line argument.
27*15dc779aSAndroid Build Coastguard WorkerThe reference paramfile is placed in `encoder\test` directory(paramfilesimple.txt)
28*15dc779aSAndroid Build Coastguard WorkerThe 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.
29*15dc779aSAndroid Build Coastguard Worker
30*15dc779aSAndroid Build Coastguard Worker# Command line usage :
31*15dc779aSAndroid Build Coastguard Worker```
32*15dc779aSAndroid Build Coastguard Worker<exceutable> -ifile:<input_file> -ofile:<out_file> [options]
33*15dc779aSAndroid Build Coastguard Worker(or)
34*15dc779aSAndroid Build Coastguard Worker<executable> -paramfile:<paramfile>
35*15dc779aSAndroid Build Coastguard Worker[options] can be,
36*15dc779aSAndroid Build Coastguard Worker[-br:<bitrate>]
37*15dc779aSAndroid Build Coastguard Worker[-mps:<use_mps>]
38*15dc779aSAndroid Build Coastguard Worker[-adts:<use_adts_flag>]
39*15dc779aSAndroid Build Coastguard Worker[-tns:<use_tns_flag>]
40*15dc779aSAndroid Build Coastguard Worker[-nf:<use_noise_filling>]
41*15dc779aSAndroid Build Coastguard Worker[-cmpx_pred:<use_complex_prediction>]
42*15dc779aSAndroid Build Coastguard Worker[-framesize:<framesize_to_be_used>]
43*15dc779aSAndroid Build Coastguard Worker[-aot:<audio_object_type>]
44*15dc779aSAndroid Build Coastguard Worker[-esbr:<esbr_flag>]
45*15dc779aSAndroid Build Coastguard Worker[-full_bandwidth:<enable_full_bandwidth>]
46*15dc779aSAndroid Build Coastguard Worker[-max_out_buffer_per_ch:<bitreservoir_size>]
47*15dc779aSAndroid Build Coastguard Worker[-tree_cfg:<tree_config>]
48*15dc779aSAndroid Build Coastguard Worker[-usac:<usac_encoding_mode>]
49*15dc779aSAndroid Build Coastguard Worker[-ccfl_idx:<corecoder_framelength_index>]
50*15dc779aSAndroid Build Coastguard Worker[-pvc_enc:<pvc_enc_flag>]
51*15dc779aSAndroid Build Coastguard Worker[-harmonic_sbr:<harmonic_sbr_flag>]
52*15dc779aSAndroid Build Coastguard Worker[-esbr_hq:<esbr_hq_flag>]
53*15dc779aSAndroid Build Coastguard Worker[-drc:<drc_flag>]
54*15dc779aSAndroid Build Coastguard Worker[-inter_tes_enc:<inter_tes_enc_flag>]
55*15dc779aSAndroid Build Coastguard Worker[-rap:<random access interval in ms>]
56*15dc779aSAndroid Build Coastguard Worker[-stream_id:<stream identifier>]
57*15dc779aSAndroid Build Coastguard Worker
58*15dc779aSAndroid Build Coastguard Workerwhere,
59*15dc779aSAndroid Build Coastguard Worker  <paramfile> is the parameter file with multiple commands
60*15dc779aSAndroid Build Coastguard Worker  <inputfile> is the input 16-bit WAV or PCM file name
61*15dc779aSAndroid Build Coastguard Worker  <outputfile> is the output ADTS/ES file name
62*15dc779aSAndroid Build Coastguard Worker  <bitrate> is the bit-rate in bits per second. Default value is 48000.
63*15dc779aSAndroid Build Coastguard Worker  <use_mps> Valid values are 0 (disable MPS) and 1 (enable MPS). Default is 0.
64*15dc779aSAndroid Build Coastguard Worker  <use_adts_flag> Valid values are 0 ( No ADTS header) and 1 ( generate ADTS header). Default is 0.
65*15dc779aSAndroid Build Coastguard Worker  <use_tns_flag> Valid values are 0 (disable TNS) and 1 (enable TNS). Default is 1.
66*15dc779aSAndroid Build Coastguard Worker  <use_noise_filling> controls usage of noise filling in encoding. Default 0.
67*15dc779aSAndroid Build Coastguard Worker  <use_complex_prediction> controls usage of complex prediction in encoding. Default is 0.
68*15dc779aSAndroid Build Coastguard Worker  <framesize_to_be_used> is the framesize to be used.
69*15dc779aSAndroid Build Coastguard Worker      For AOT 23, 39 (LD core coder profiles) valid values are 480 and 512. Default is 512.
70*15dc779aSAndroid Build Coastguard Worker      For AOT 2, 5, 29 (LC core coder profiles) valid values are 960 and 1024. Default is 1024.
71*15dc779aSAndroid Build Coastguard Worker      For AOT 42 (USAC profile) valid values are 768 and 1024. Default is 1024.
72*15dc779aSAndroid Build Coastguard Worker  <audio_object_type> is the Audio object type.
73*15dc779aSAndroid Build Coastguard Worker      2 for AAC-LC
74*15dc779aSAndroid Build Coastguard Worker      5 for HE-AACv1(Legacy SBR)
75*15dc779aSAndroid Build Coastguard Worker      23 for AAC-LD
76*15dc779aSAndroid Build Coastguard Worker      29 for HE-AACv2
77*15dc779aSAndroid Build Coastguard Worker      39 for AAC-ELD
78*15dc779aSAndroid Build Coastguard Worker      42 for USAC
79*15dc779aSAndroid Build Coastguard Worker      Default is 2 for AAC-LC.
80*15dc779aSAndroid Build Coastguard Worker  <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.
81*15dc779aSAndroid Build Coastguard Worker  <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.
82*15dc779aSAndroid Build Coastguard Worker  <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.
83*15dc779aSAndroid Build Coastguard Worker  <tree_config> MPS tree config
84*15dc779aSAndroid Build Coastguard Worker      0 for '212'
85*15dc779aSAndroid Build Coastguard Worker      1 for '5151'
86*15dc779aSAndroid Build Coastguard Worker      2 for '5152'
87*15dc779aSAndroid Build Coastguard Worker      3 for '525'
88*15dc779aSAndroid Build Coastguard Worker      Default 0 for stereo input and 1 for 6ch input.
89*15dc779aSAndroid Build Coastguard Worker  <usac_encoding_mode> USAC encoding mode to be chose
90*15dc779aSAndroid Build Coastguard Worker      0 for 'usac_switched'
91*15dc779aSAndroid Build Coastguard Worker      1 for 'usac_fd'
92*15dc779aSAndroid Build Coastguard Worker      2 for 'usac_td'
93*15dc779aSAndroid Build Coastguard Worker      Default 'usac_fd'
94*15dc779aSAndroid Build Coastguard Worker  <corecoder_framelength_index> is the core coder framelength index for USAC encoder.
95*15dc779aSAndroid Build Coastguard Worker      Valid values are 0, 1, 2, 3, 4. eSBR enabling is implicit
96*15dc779aSAndroid Build Coastguard Worker      0 - Core coder framelength of USAC is  768 and eSBR is disabled
97*15dc779aSAndroid Build Coastguard Worker      1 - Core coder framelength of USAC is 1024 and eSBR is disabled
98*15dc779aSAndroid Build Coastguard Worker      2 - Core coder framelength of USAC is  768 and eSBR ratio 8:3
99*15dc779aSAndroid Build Coastguard Worker      3 - Core coder framelength of USAC is 1024 and eSBR ratio 2:1
100*15dc779aSAndroid Build Coastguard Worker      4 - Core coder framelength of USAC is 1024 and eSBR ratio 4:1
101*15dc779aSAndroid Build Coastguard Worker  <pvc_enc_flag> Valid values are 0 (disable PVC encoding) and 1 (enable PVC encoding). Default is 0.
102*15dc779aSAndroid Build Coastguard Worker  <harmonic_sbr_flag> Valid values are 0 (disable harmonic SBR) and 1 (enable harmonic SBR). Default is 0.
103*15dc779aSAndroid Build Coastguard Worker  <esbr_hq_flag> Valid values are 0 (disable high quality eSBR) and 1 (enable high quality eSBR). Default is 0.
104*15dc779aSAndroid Build Coastguard Worker  <drc_flag> Valid values are 0 (disable DRC encoding) and 1 (enable DRC encoding). Default is 0.
105*15dc779aSAndroid Build Coastguard Worker  <inter_tes_enc_flag> Valid values are 0 (disable inter-TES encoding) and 1 (enable inter-TES encoding). Default is 0.
106*15dc779aSAndroid Build Coastguard Worker  <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.
107*15dc779aSAndroid Build Coastguard Worker  <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.
108*15dc779aSAndroid Build Coastguard Worker
109*15dc779aSAndroid Build Coastguard Worker```
110*15dc779aSAndroid Build Coastguard WorkerSample CLI:
111*15dc779aSAndroid Build Coastguard Worker```
112*15dc779aSAndroid Build Coastguard Worker-ifile:input_file.wav -ofile:out_file.aac -br:<bit_rate> –aot:<audio profile>
113*15dc779aSAndroid Build Coastguard Worker```
114*15dc779aSAndroid Build Coastguard Worker
115*15dc779aSAndroid Build Coastguard Worker
116*15dc779aSAndroid Build Coastguard Worker#  Additional Documents
117*15dc779aSAndroid Build Coastguard WorkerBrief description about documents present in  `docs` folder
118*15dc779aSAndroid Build Coastguard Worker* [`LIBXAAC-Enc-API.pdf`](docs/LIBXAAC-Enc-API.pdf) - Describes Application Program Interface for libxaac encoder.
119*15dc779aSAndroid Build Coastguard Worker* [`LIBXAAC-Enc-GSG.pdf`](docs/LIBXAAC-Enc-GSG.pdf) - Getting Started Guide for the libxaac encoder.
120*15dc779aSAndroid Build Coastguard Worker
121*15dc779aSAndroid Build Coastguard Worker# Validating the libxaac encoder
122*15dc779aSAndroid Build Coastguard WorkerTesting for libxaac encoder is done using listening test for different AOT(Audio object types)
123