Function reference
/* library-global facts: compiled channel ceiling, version/copyright */
faac_status faac_get_library_info(faac_library_info *out);
faac_status faac_params_init(faac_params *p);
faac_status faac_encoder_open(const faac_params *p, faac_encoder **out);
faac_status faac_encoder_close(faac_encoder **enc); /* sets *enc = NULL */
/* resolved properties, valid after open; set out.struct_size first */
faac_status faac_encoder_get_info(faac_encoder *enc, faac_encoder_info *out);
/* AudioSpecificConfig: library-owned, valid until close, do NOT free */
faac_status faac_encoder_asc(faac_encoder *enc, const uint8_t **buf, uint32_t *len);
faac_status faac_encoder_encode(faac_encoder *enc,
const void *in, uint32_t in_samples,
uint8_t *out, uint32_t out_cap,
uint32_t *bytes_written);
const char *faac_strerror(faac_status status);
The object_type field of faac_params uses MPEG-4 Audio Object Type
numbers: FAAC_OBJ_LOW (2) is AAC-LC and FAAC_OBJ_HE_AAC_V1 (5) is
HE-AAC v1 (AAC-LC core + SBR). FAAC_OBJ_AUTO (0) lets the library choose
LC or HE-AAC from the bitrate. FAAC_OBJ_HE_AAC_V2 (29) is defined but not
implemented; requesting it returns FAAC_ERR_UNSUPPORTED.
For an HE-AAC encoder the SBR core runs at half the input rate and codes a
2048-sample frame, so faac_encoder_get_info() reports
frame_samples == 2048 and sample_rate == the full (un-halved)
output rate. Buffer sizing and rate reporting therefore stay correct without
the caller knowing any SBR internals.