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 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