| Variable name| Possible Values| Configured Value|
|------------- | ----- |----- |
| `drc_profile` | `AACENC_METADATA_DRC_NONE ``AACENC_METADATA_DRC_FILMSTANDARD ``AACENC_METADATA_DRC_FILMLIGHT ``AACENC_METADATA_DRC_MUSICSTANDARD ``AACENC_METADATA_DRC_MUSICLIGHT ``AACENC_METADATA_DRC_SPEECH ``AACENC_METADATA_DRC_NOT_PRESENT ` | Calculated using tenth byte of data |
| `comp_profile` | `AACENC_METADATA_DRC_NONE ``AACENC_METADATA_DRC_FILMSTANDARD ``AACENC_METADATA_DRC_FILMLIGHT ``AACENC_METADATA_DRC_MUSICSTANDARD ``AACENC_METADATA_DRC_MUSICLIGHT ``AACENC_METADATA_DRC_SPEECH ``AACENC_METADATA_DRC_NOT_PRESENT ` | Calculated using eleventh byte of data |
| `drc_TargetRefLevel` | In range `0 ` to `255 ` | Calculated using twelfth byte of data |
| `comp_TargetRefLevel` | In range `0 ` to `255 ` | Calculated using thirteenth byte of data |
| `prog_ref_level_present` | `0 ``1 ` | Calculated using fourteenth byte of data |
| `prog_ref_level` | In range `0 ` to `255 ` | Calculated using fifteenth byte of data |
| `PCE_mixdown_idx_present` | `0 ``1 ` | Calculated using sixteenth byte of data |
| `ETSI_DmxLvl_present` | `0 ``1 ` | Calculated using seventeenth byte of data |
| `centerMixLevel` | In range `0 ` to `7 ` | Calculated using eighteenth byte of data |
| `surroundMixLevel` | In range `0 ` to `7 ` | Calculated using nineteenth byte of data |
| `dolbySurroundMode` | In range `0 ` to `2 ` | Calculated using twentieth byte of data |
| `drcPresentationMode` | In range `0 ` to `2 ` | Calculated using twenty-first byte of data |
| `extAncDataEnable` | `0 ``1 ` | Calculated using twenty-second byte of data |
| `extDownmixLevelEnable` | `0 ``1 ` | Calculated using twenty-third byte of data |
| `extDownmixLevel_A` | In range `0 ` to `7 ` | Calculated using twenty-fourth byte of data |
| `extDownmixLevel_B` | In range `0 ` to `7 ` | Calculated using twenty-fifth byte of data |
| `dmxGainEnable` | `0 ``1 ` | Calculated using twenty-sixth byte of data |
| `dmxGain5` | In range `0 ` to `255 ` | Calculated using twenty-seventh byte of data |
| `dmxGain2` | In range `0 ` to `255 ` | Calculated using twenty-eighth byte of data |
| `lfeDmxEnable` | `0 ``1 ` | Calculated using twenty-ninth byte of data |
| `lfeDmxLevel` | In range `0 ` to `15 ` | Calculated using thirtieth byte of data |
Indexes `mInBufferIdx_1`, `mInBufferIdx_2` and `mInBufferIdx_3`(in range `0 ` to `2`) are calculated using the thirty-first, thirty-second and thirty-third byte respectively.
##### Maximize utilization of input data
The plugin feeds the entire input data to the codec and continues with the encoding even on a failure. This ensures that the plugin tolerates any kind of input (empty, huge, malformed, etc) and doesnt `exit()` on any input and thereby increasing the chance of identifying vulnerabilities.
## Build
This describes steps to build aac_enc_fuzzer binary.
## Android
### Steps to build
Build the fuzzer
```
$ mm -j$(nproc) aac_enc_fuzzer
```
### Steps to run
Create a directory CORPUS_DIR and copy some raw files to that folder.