fdk-aac-sys 0.5.0

FFI bindings for libfdk-aac
Documentation
static SOURCES: &'static [&'static str] = &[
    "aac/libAACdec/src/aac_ram.cpp",
    "aac/libAACdec/src/aac_rom.cpp",
    "aac/libAACdec/src/aacdec_drc.cpp",
    "aac/libAACdec/src/aacdec_hcr.cpp",
    "aac/libAACdec/src/aacdec_hcr_bit.cpp",
    "aac/libAACdec/src/aacdec_hcrs.cpp",
    "aac/libAACdec/src/aacdec_pns.cpp",
    "aac/libAACdec/src/aacdec_tns.cpp",
    "aac/libAACdec/src/aacdecoder.cpp",
    "aac/libAACdec/src/aacdecoder_lib.cpp",
    "aac/libAACdec/src/block.cpp",
    "aac/libAACdec/src/channel.cpp",
    "aac/libAACdec/src/channelinfo.cpp",
    "aac/libAACdec/src/conceal.cpp",
    "aac/libAACdec/src/FDK_delay.cpp",
    "aac/libAACdec/src/ldfiltbank.cpp",
    "aac/libAACdec/src/pulsedata.cpp",
    "aac/libAACdec/src/rvlc.cpp",
    "aac/libAACdec/src/rvlcbit.cpp",
    "aac/libAACdec/src/rvlcconceal.cpp",
    "aac/libAACdec/src/stereo.cpp",
    "aac/libAACdec/src/usacdec_ace_d4t64.cpp",
    "aac/libAACdec/src/usacdec_ace_ltp.cpp",
    "aac/libAACdec/src/usacdec_acelp.cpp",
    "aac/libAACdec/src/usacdec_fac.cpp",
    "aac/libAACdec/src/usacdec_lpc.cpp",
    "aac/libAACdec/src/usacdec_lpd.cpp",
    "aac/libAACdec/src/usacdec_rom.cpp",
    "aac/libAACenc/src/aacenc.cpp",
    "aac/libAACenc/src/aacenc_lib.cpp",
    "aac/libAACenc/src/aacenc_pns.cpp",
    "aac/libAACenc/src/aacEnc_ram.cpp",
    "aac/libAACenc/src/aacEnc_rom.cpp",
    "aac/libAACenc/src/aacenc_tns.cpp",
    "aac/libAACenc/src/adj_thr.cpp",
    "aac/libAACenc/src/band_nrg.cpp",
    "aac/libAACenc/src/bandwidth.cpp",
    "aac/libAACenc/src/bit_cnt.cpp",
    "aac/libAACenc/src/bitenc.cpp",
    "aac/libAACenc/src/block_switch.cpp",
    "aac/libAACenc/src/channel_map.cpp",
    "aac/libAACenc/src/chaosmeasure.cpp",
    "aac/libAACenc/src/dyn_bits.cpp",
    "aac/libAACenc/src/grp_data.cpp",
    "aac/libAACenc/src/intensity.cpp",
    "aac/libAACenc/src/line_pe.cpp",
    "aac/libAACenc/src/metadata_compressor.cpp",
    "aac/libAACenc/src/metadata_main.cpp",
    "aac/libAACenc/src/mps_main.cpp",
    "aac/libAACenc/src/ms_stereo.cpp",
    "aac/libAACenc/src/noisedet.cpp",
    "aac/libAACenc/src/pnsparam.cpp",
    "aac/libAACenc/src/pre_echo_control.cpp",
    "aac/libAACenc/src/psy_configuration.cpp",
    "aac/libAACenc/src/psy_main.cpp",
    "aac/libAACenc/src/qc_main.cpp",
    "aac/libAACenc/src/quantize.cpp",
    "aac/libAACenc/src/sf_estim.cpp",
    "aac/libAACenc/src/spreading.cpp",
    "aac/libAACenc/src/tonality.cpp",
    "aac/libAACenc/src/transform.cpp",
    "aac/libArithCoding/src/ac_arith_coder.cpp",
    "aac/libDRCdec/src/drcDec_gainDecoder.cpp",
    "aac/libDRCdec/src/drcDec_reader.cpp",
    "aac/libDRCdec/src/drcDec_rom.cpp",
    "aac/libDRCdec/src/drcDec_selectionProcess.cpp",
    "aac/libDRCdec/src/drcDec_tools.cpp",
    "aac/libDRCdec/src/drcGainDec_init.cpp",
    "aac/libDRCdec/src/drcGainDec_preprocess.cpp",
    "aac/libDRCdec/src/drcGainDec_process.cpp",
    "aac/libDRCdec/src/FDK_drcDecLib.cpp",
    "aac/libFDK/src/autocorr2nd.cpp",
    "aac/libFDK/src/dct.cpp",
    "aac/libFDK/src/FDK_bitbuffer.cpp",
    "aac/libFDK/src/FDK_core.cpp",
    "aac/libFDK/src/FDK_crc.cpp",
    "aac/libFDK/src/FDK_decorrelate.cpp",
    "aac/libFDK/src/FDK_hybrid.cpp",
    "aac/libFDK/src/FDK_lpc.cpp",
    "aac/libFDK/src/FDK_matrixCalloc.cpp",
    "aac/libFDK/src/FDK_qmf_domain.cpp",
    "aac/libFDK/src/FDK_tools_rom.cpp",
    "aac/libFDK/src/FDK_trigFcts.cpp",
    "aac/libFDK/src/fft.cpp",
    "aac/libFDK/src/fft_rad2.cpp",
    "aac/libFDK/src/fixpoint_math.cpp",
    "aac/libFDK/src/huff_nodes.cpp",
    "aac/libFDK/src/mdct.cpp",
    "aac/libFDK/src/nlc_dec.cpp",
    "aac/libFDK/src/qmf.cpp",
    "aac/libFDK/src/scale.cpp",
    "aac/libMpegTPDec/src/tpdec_adif.cpp",
    "aac/libMpegTPDec/src/tpdec_adts.cpp",
    "aac/libMpegTPDec/src/tpdec_asc.cpp",
    "aac/libMpegTPDec/src/tpdec_drm.cpp",
    "aac/libMpegTPDec/src/tpdec_latm.cpp",
    "aac/libMpegTPDec/src/tpdec_lib.cpp",
    "aac/libMpegTPEnc/src/tpenc_adif.cpp",
    "aac/libMpegTPEnc/src/tpenc_adts.cpp",
    "aac/libMpegTPEnc/src/tpenc_asc.cpp",
    "aac/libMpegTPEnc/src/tpenc_latm.cpp",
    "aac/libMpegTPEnc/src/tpenc_lib.cpp",
    "aac/libPCMutils/src/limiter.cpp",
    "aac/libPCMutils/src/pcm_utils.cpp",
    "aac/libPCMutils/src/pcmdmx_lib.cpp",
    "aac/libSACdec/src/sac_bitdec.cpp",
    "aac/libSACdec/src/sac_calcM1andM2.cpp",
    "aac/libSACdec/src/sac_dec.cpp",
    "aac/libSACdec/src/sac_dec_conceal.cpp",
    "aac/libSACdec/src/sac_dec_lib.cpp",
    "aac/libSACdec/src/sac_process.cpp",
    "aac/libSACdec/src/sac_qmf.cpp",
    "aac/libSACdec/src/sac_reshapeBBEnv.cpp",
    "aac/libSACdec/src/sac_rom.cpp",
    "aac/libSACdec/src/sac_smoothing.cpp",
    "aac/libSACdec/src/sac_stp.cpp",
    "aac/libSACdec/src/sac_tsd.cpp",
    "aac/libSACenc/src/sacenc_bitstream.cpp",
    "aac/libSACenc/src/sacenc_delay.cpp",
    "aac/libSACenc/src/sacenc_dmx_tdom_enh.cpp",
    "aac/libSACenc/src/sacenc_filter.cpp",
    "aac/libSACenc/src/sacenc_framewindowing.cpp",
    "aac/libSACenc/src/sacenc_huff_tab.cpp",
    "aac/libSACenc/src/sacenc_lib.cpp",
    "aac/libSACenc/src/sacenc_nlc_enc.cpp",
    "aac/libSACenc/src/sacenc_onsetdetect.cpp",
    "aac/libSACenc/src/sacenc_paramextract.cpp",
    "aac/libSACenc/src/sacenc_staticgain.cpp",
    "aac/libSACenc/src/sacenc_tree.cpp",
    "aac/libSACenc/src/sacenc_vectorfunctions.cpp",
    "aac/libSBRdec/src/env_calc.cpp",
    "aac/libSBRdec/src/env_dec.cpp",
    "aac/libSBRdec/src/env_extr.cpp",
    "aac/libSBRdec/src/hbe.cpp",
    "aac/libSBRdec/src/HFgen_preFlat.cpp",
    "aac/libSBRdec/src/huff_dec.cpp",
    "aac/libSBRdec/src/lpp_tran.cpp",
    "aac/libSBRdec/src/psbitdec.cpp",
    "aac/libSBRdec/src/psdec.cpp",
    "aac/libSBRdec/src/psdec_drm.cpp",
    "aac/libSBRdec/src/psdecrom_drm.cpp",
    "aac/libSBRdec/src/pvc_dec.cpp",
    "aac/libSBRdec/src/sbr_crc.cpp",
    "aac/libSBRdec/src/sbr_deb.cpp",
    "aac/libSBRdec/src/sbr_dec.cpp",
    "aac/libSBRdec/src/sbr_ram.cpp",
    "aac/libSBRdec/src/sbr_rom.cpp",
    "aac/libSBRdec/src/sbrdec_drc.cpp",
    "aac/libSBRdec/src/sbrdec_freq_sca.cpp",
    "aac/libSBRdec/src/sbrdecoder.cpp",
    "aac/libSBRenc/src/bit_sbr.cpp",
    "aac/libSBRenc/src/code_env.cpp",
    "aac/libSBRenc/src/env_bit.cpp",
    "aac/libSBRenc/src/env_est.cpp",
    "aac/libSBRenc/src/fram_gen.cpp",
    "aac/libSBRenc/src/invf_est.cpp",
    "aac/libSBRenc/src/mh_det.cpp",
    "aac/libSBRenc/src/nf_est.cpp",
    "aac/libSBRenc/src/ps_bitenc.cpp",
    "aac/libSBRenc/src/ps_encode.cpp",
    "aac/libSBRenc/src/ps_main.cpp",
    "aac/libSBRenc/src/resampler.cpp",
    "aac/libSBRenc/src/sbr_encoder.cpp",
    "aac/libSBRenc/src/sbr_misc.cpp",
    "aac/libSBRenc/src/sbrenc_freq_sca.cpp",
    "aac/libSBRenc/src/sbrenc_ram.cpp",
    "aac/libSBRenc/src/sbrenc_rom.cpp",
    "aac/libSBRenc/src/ton_corr.cpp",
    "aac/libSBRenc/src/tran_det.cpp",
    "aac/libSYS/src/genericStds.cpp",
    "aac/libSYS/src/syslib_channelMapDescr.cpp",
];

static INCLUDE_DIRS: &'static [&'static str] = &[
    "aac/libAACdec/include",
    "aac/libAACenc/include",
    "aac/libPCMutils/include",
    "aac/libFDK/include",
    "aac/libSYS/include",
    "aac/libMpegTPDec/include",
    "aac/libMpegTPEnc/include",
    "aac/libSBRdec/include",
    "aac/libSBRenc/include",
    "aac/libArithCoding/include",
    "aac/libDRCdec/include",
    "aac/libSACdec/include",
    "aac/libSACenc/include",
];

fn main() {
    for src in SOURCES {
        // Tell cargo to invalidate the built crate whenever the wrapper changes
        println!("cargo:rerun-if-changed={}", src);
    }

    let mut cc = cc::Build::new();

    cc.warnings(false);
    cc.files(SOURCES);
    cc.define("FDK_FALLTHROUGH", "");

    for include in INCLUDE_DIRS {
        cc.include(include);
    }

    cc.compile("libfdk-aac.a");

    println!("cargo:rustc-link-lib=fdk-aac");

    if cfg!(target_os = "linux") {
        println!("cargo:rustc-link-lib=stdc++");
    }

    if cfg!(target_os = "macos") {
        println!("cargo:rustc-link-lib=c++");
    }
}