rebuilt opus & opusfile from latest sources.
authorOzkan Sezer <sezeroz@gmail.com>
Sun, 06 Oct 2019 12:55:01 +0300
changeset 952c951ed864a0f
parent 951 11e76f76d5ff
child 954 15b7b98a85c7
rebuilt opus & opusfile from latest sources.
VisualC/external/include/opus/opus.h
VisualC/external/include/opus/opus_defines.h
VisualC/external/include/opus/opus_multistream.h
VisualC/external/include/opus/opus_projection.h
VisualC/external/include/opus/opus_types.h
VisualC/external/lib/x64/LICENSE.opus.txt
VisualC/external/lib/x64/libopus-0.dll
VisualC/external/lib/x64/libopusfile-0.dll
VisualC/external/lib/x86/LICENSE.opus.txt
VisualC/external/lib/x86/libopus-0.dll
VisualC/external/lib/x86/libopusfile-0.dll
Xcode/Frameworks/Opus.framework/Versions/A/Headers/opus.h
Xcode/Frameworks/Opus.framework/Versions/A/Headers/opus_defines.h
Xcode/Frameworks/Opus.framework/Versions/A/Headers/opus_multistream.h
Xcode/Frameworks/Opus.framework/Versions/A/Headers/opus_projection.h
Xcode/Frameworks/Opus.framework/Versions/A/Headers/opus_types.h
Xcode/Frameworks/Opus.framework/Versions/A/Opus
Xcode/Frameworks/Opus.framework/Versions/A/Resources/Info.plist
Xcode/Frameworks/Opus.framework/Versions/A/Resources/LICENSE.opus.txt
Xcode/Frameworks/OpusFile.framework/Versions/A/OpusFile
Xcode/Frameworks/OpusFile.framework/Versions/A/Resources/Info.plist
external/opus-1.0.3/001-opus.git-9c7193e4.patch
external/opus-1.0.3/002-opus.git-a88d8365.patch
external/opus-1.0.3/003-opus.git-25b27a9c.patch
external/opus-1.0.3/004-opus.git-3499e78b.patch
external/opus-1.0.3/005-opus.git-70a3d641.patch
external/opus-1.0.3/006-opus.git-6e961737.patch
external/opus-1.0.3/030-opus-1.0.3-decoder-only.diff
external/opus-1.0.3/050-opus-1.0.3-misc-port0.patch
external/opus-1.0.3/051-opus-1.0.3-misc-port1.patch
external/opus-1.0.3/AUTHORS
external/opus-1.0.3/COPYING
external/opus-1.0.3/ChangeLog
external/opus-1.0.3/INSTALL
external/opus-1.0.3/Makefile.am
external/opus-1.0.3/Makefile.darwin
external/opus-1.0.3/Makefile.in
external/opus-1.0.3/Makefile.unix
external/opus-1.0.3/NEWS
external/opus-1.0.3/README
external/opus-1.0.3/aclocal.m4
external/opus-1.0.3/celt/_kiss_fft_guts.h
external/opus-1.0.3/celt/arch.h
external/opus-1.0.3/celt/bands.c
external/opus-1.0.3/celt/bands.h
external/opus-1.0.3/celt/celt.c
external/opus-1.0.3/celt/celt.h
external/opus-1.0.3/celt/celt.vcxproj
external/opus-1.0.3/celt/celt.vcxproj.filters
external/opus-1.0.3/celt/celt_lpc.c
external/opus-1.0.3/celt/celt_lpc.h
external/opus-1.0.3/celt/cwrs.c
external/opus-1.0.3/celt/cwrs.h
external/opus-1.0.3/celt/ecintrin.h
external/opus-1.0.3/celt/entcode.c
external/opus-1.0.3/celt/entcode.h
external/opus-1.0.3/celt/entdec.c
external/opus-1.0.3/celt/entdec.h
external/opus-1.0.3/celt/entenc.c
external/opus-1.0.3/celt/entenc.h
external/opus-1.0.3/celt/fixed_debug.h
external/opus-1.0.3/celt/fixed_generic.h
external/opus-1.0.3/celt/float_cast.h
external/opus-1.0.3/celt/kiss_fft.c
external/opus-1.0.3/celt/kiss_fft.h
external/opus-1.0.3/celt/laplace.c
external/opus-1.0.3/celt/laplace.h
external/opus-1.0.3/celt/mathops.c
external/opus-1.0.3/celt/mathops.h
external/opus-1.0.3/celt/mdct.c
external/opus-1.0.3/celt/mdct.h
external/opus-1.0.3/celt/mfrngcod.h
external/opus-1.0.3/celt/modes.c
external/opus-1.0.3/celt/modes.h
external/opus-1.0.3/celt/opus_custom_demo.c
external/opus-1.0.3/celt/os_support.h
external/opus-1.0.3/celt/pitch.c
external/opus-1.0.3/celt/pitch.h
external/opus-1.0.3/celt/quant_bands.c
external/opus-1.0.3/celt/quant_bands.h
external/opus-1.0.3/celt/rate.c
external/opus-1.0.3/celt/rate.h
external/opus-1.0.3/celt/stack_alloc.h
external/opus-1.0.3/celt/static_modes_fixed.h
external/opus-1.0.3/celt/static_modes_float.h
external/opus-1.0.3/celt/tests/test_unit_cwrs32.c
external/opus-1.0.3/celt/tests/test_unit_dft.c
external/opus-1.0.3/celt/tests/test_unit_entropy.c
external/opus-1.0.3/celt/tests/test_unit_laplace.c
external/opus-1.0.3/celt/tests/test_unit_mathops.c
external/opus-1.0.3/celt/tests/test_unit_mdct.c
external/opus-1.0.3/celt/tests/test_unit_rotation.c
external/opus-1.0.3/celt/tests/test_unit_types.c
external/opus-1.0.3/celt/vq.c
external/opus-1.0.3/celt/vq.h
external/opus-1.0.3/celt_headers.mk
external/opus-1.0.3/celt_sources.mk
external/opus-1.0.3/compile
external/opus-1.0.3/config.guess
external/opus-1.0.3/config.h.in
external/opus-1.0.3/config.sub
external/opus-1.0.3/configure
external/opus-1.0.3/configure.ac
external/opus-1.0.3/depcomp
external/opus-1.0.3/doc/Doxyfile.in
external/opus-1.0.3/doc/Makefile.am
external/opus-1.0.3/doc/Makefile.in
external/opus-1.0.3/doc/customdoxygen.css
external/opus-1.0.3/doc/footer.html
external/opus-1.0.3/doc/header.html
external/opus-1.0.3/doc/opus_logo.svg
external/opus-1.0.3/include/opus.h
external/opus-1.0.3/include/opus_custom.h
external/opus-1.0.3/include/opus_defines.h
external/opus-1.0.3/include/opus_multistream.h
external/opus-1.0.3/include/opus_types.h
external/opus-1.0.3/install-sh
external/opus-1.0.3/ltmain.sh
external/opus-1.0.3/m4/libtool.m4
external/opus-1.0.3/m4/ltoptions.m4
external/opus-1.0.3/m4/ltsugar.m4
external/opus-1.0.3/m4/ltversion.m4
external/opus-1.0.3/m4/lt~obsolete.m4
external/opus-1.0.3/missing
external/opus-1.0.3/opus-uninstalled.pc.in
external/opus-1.0.3/opus.m4
external/opus-1.0.3/opus.pc.in
external/opus-1.0.3/opus.sln
external/opus-1.0.3/opus_headers.mk
external/opus-1.0.3/opus_sources.mk
external/opus-1.0.3/package_version
external/opus-1.0.3/silk/A2NLSF.c
external/opus-1.0.3/silk/API.h
external/opus-1.0.3/silk/CNG.c
external/opus-1.0.3/silk/HP_variable_cutoff.c
external/opus-1.0.3/silk/Inlines.h
external/opus-1.0.3/silk/LPC_analysis_filter.c
external/opus-1.0.3/silk/LPC_inv_pred_gain.c
external/opus-1.0.3/silk/LP_variable_cutoff.c
external/opus-1.0.3/silk/MacroCount.h
external/opus-1.0.3/silk/MacroDebug.h
external/opus-1.0.3/silk/NLSF2A.c
external/opus-1.0.3/silk/NLSF_VQ.c
external/opus-1.0.3/silk/NLSF_VQ_weights_laroia.c
external/opus-1.0.3/silk/NLSF_decode.c
external/opus-1.0.3/silk/NLSF_del_dec_quant.c
external/opus-1.0.3/silk/NLSF_encode.c
external/opus-1.0.3/silk/NLSF_stabilize.c
external/opus-1.0.3/silk/NLSF_unpack.c
external/opus-1.0.3/silk/NSQ.c
external/opus-1.0.3/silk/NSQ_del_dec.c
external/opus-1.0.3/silk/PLC.c
external/opus-1.0.3/silk/PLC.h
external/opus-1.0.3/silk/SigProc_FIX.h
external/opus-1.0.3/silk/VAD.c
external/opus-1.0.3/silk/VQ_WMat_EC.c
external/opus-1.0.3/silk/ana_filt_bank_1.c
external/opus-1.0.3/silk/biquad_alt.c
external/opus-1.0.3/silk/bwexpander.c
external/opus-1.0.3/silk/bwexpander_32.c
external/opus-1.0.3/silk/check_control_input.c
external/opus-1.0.3/silk/code_signs.c
external/opus-1.0.3/silk/control.h
external/opus-1.0.3/silk/control_SNR.c
external/opus-1.0.3/silk/control_audio_bandwidth.c
external/opus-1.0.3/silk/control_codec.c
external/opus-1.0.3/silk/debug.c
external/opus-1.0.3/silk/debug.h
external/opus-1.0.3/silk/dec_API.c
external/opus-1.0.3/silk/decode_core.c
external/opus-1.0.3/silk/decode_frame.c
external/opus-1.0.3/silk/decode_indices.c
external/opus-1.0.3/silk/decode_parameters.c
external/opus-1.0.3/silk/decode_pitch.c
external/opus-1.0.3/silk/decode_pulses.c
external/opus-1.0.3/silk/decoder_set_fs.c
external/opus-1.0.3/silk/define.h
external/opus-1.0.3/silk/enc_API.c
external/opus-1.0.3/silk/encode_indices.c
external/opus-1.0.3/silk/encode_pulses.c
external/opus-1.0.3/silk/errors.h
external/opus-1.0.3/silk/fixed/LTP_analysis_filter_FIX.c
external/opus-1.0.3/silk/fixed/LTP_scale_ctrl_FIX.c
external/opus-1.0.3/silk/fixed/apply_sine_window_FIX.c
external/opus-1.0.3/silk/fixed/autocorr_FIX.c
external/opus-1.0.3/silk/fixed/burg_modified_FIX.c
external/opus-1.0.3/silk/fixed/corrMatrix_FIX.c
external/opus-1.0.3/silk/fixed/encode_frame_FIX.c
external/opus-1.0.3/silk/fixed/find_LPC_FIX.c
external/opus-1.0.3/silk/fixed/find_LTP_FIX.c
external/opus-1.0.3/silk/fixed/find_pitch_lags_FIX.c
external/opus-1.0.3/silk/fixed/find_pred_coefs_FIX.c
external/opus-1.0.3/silk/fixed/k2a_FIX.c
external/opus-1.0.3/silk/fixed/k2a_Q16_FIX.c
external/opus-1.0.3/silk/fixed/main_FIX.h
external/opus-1.0.3/silk/fixed/noise_shape_analysis_FIX.c
external/opus-1.0.3/silk/fixed/pitch_analysis_core_FIX.c
external/opus-1.0.3/silk/fixed/prefilter_FIX.c
external/opus-1.0.3/silk/fixed/process_gains_FIX.c
external/opus-1.0.3/silk/fixed/regularize_correlations_FIX.c
external/opus-1.0.3/silk/fixed/residual_energy16_FIX.c
external/opus-1.0.3/silk/fixed/residual_energy_FIX.c
external/opus-1.0.3/silk/fixed/schur64_FIX.c
external/opus-1.0.3/silk/fixed/schur_FIX.c
external/opus-1.0.3/silk/fixed/silk_fixed.vcxproj
external/opus-1.0.3/silk/fixed/silk_fixed.vcxproj.filters
external/opus-1.0.3/silk/fixed/solve_LS_FIX.c
external/opus-1.0.3/silk/fixed/structs_FIX.h
external/opus-1.0.3/silk/fixed/vector_ops_FIX.c
external/opus-1.0.3/silk/fixed/warped_autocorrelation_FIX.c
external/opus-1.0.3/silk/float/LPC_analysis_filter_FLP.c
external/opus-1.0.3/silk/float/LPC_inv_pred_gain_FLP.c
external/opus-1.0.3/silk/float/LTP_analysis_filter_FLP.c
external/opus-1.0.3/silk/float/LTP_scale_ctrl_FLP.c
external/opus-1.0.3/silk/float/SigProc_FLP.h
external/opus-1.0.3/silk/float/apply_sine_window_FLP.c
external/opus-1.0.3/silk/float/autocorrelation_FLP.c
external/opus-1.0.3/silk/float/burg_modified_FLP.c
external/opus-1.0.3/silk/float/bwexpander_FLP.c
external/opus-1.0.3/silk/float/corrMatrix_FLP.c
external/opus-1.0.3/silk/float/encode_frame_FLP.c
external/opus-1.0.3/silk/float/energy_FLP.c
external/opus-1.0.3/silk/float/find_LPC_FLP.c
external/opus-1.0.3/silk/float/find_LTP_FLP.c
external/opus-1.0.3/silk/float/find_pitch_lags_FLP.c
external/opus-1.0.3/silk/float/find_pred_coefs_FLP.c
external/opus-1.0.3/silk/float/inner_product_FLP.c
external/opus-1.0.3/silk/float/k2a_FLP.c
external/opus-1.0.3/silk/float/levinsondurbin_FLP.c
external/opus-1.0.3/silk/float/main_FLP.h
external/opus-1.0.3/silk/float/noise_shape_analysis_FLP.c
external/opus-1.0.3/silk/float/pitch_analysis_core_FLP.c
external/opus-1.0.3/silk/float/prefilter_FLP.c
external/opus-1.0.3/silk/float/process_gains_FLP.c
external/opus-1.0.3/silk/float/regularize_correlations_FLP.c
external/opus-1.0.3/silk/float/residual_energy_FLP.c
external/opus-1.0.3/silk/float/scale_copy_vector_FLP.c
external/opus-1.0.3/silk/float/scale_vector_FLP.c
external/opus-1.0.3/silk/float/schur_FLP.c
external/opus-1.0.3/silk/float/silk_float.vcxproj
external/opus-1.0.3/silk/float/silk_float.vcxproj.filters
external/opus-1.0.3/silk/float/solve_LS_FLP.c
external/opus-1.0.3/silk/float/sort_FLP.c
external/opus-1.0.3/silk/float/structs_FLP.h
external/opus-1.0.3/silk/float/warped_autocorrelation_FLP.c
external/opus-1.0.3/silk/float/wrappers_FLP.c
external/opus-1.0.3/silk/gain_quant.c
external/opus-1.0.3/silk/init_decoder.c
external/opus-1.0.3/silk/init_encoder.c
external/opus-1.0.3/silk/inner_prod_aligned.c
external/opus-1.0.3/silk/interpolate.c
external/opus-1.0.3/silk/lin2log.c
external/opus-1.0.3/silk/log2lin.c
external/opus-1.0.3/silk/macros.h
external/opus-1.0.3/silk/main.h
external/opus-1.0.3/silk/pitch_est_defines.h
external/opus-1.0.3/silk/pitch_est_tables.c
external/opus-1.0.3/silk/process_NLSFs.c
external/opus-1.0.3/silk/quant_LTP_gains.c
external/opus-1.0.3/silk/resampler.c
external/opus-1.0.3/silk/resampler_down2.c
external/opus-1.0.3/silk/resampler_down2_3.c
external/opus-1.0.3/silk/resampler_private.h
external/opus-1.0.3/silk/resampler_private_AR2.c
external/opus-1.0.3/silk/resampler_private_IIR_FIR.c
external/opus-1.0.3/silk/resampler_private_down_FIR.c
external/opus-1.0.3/silk/resampler_private_up2_HQ.c
external/opus-1.0.3/silk/resampler_rom.c
external/opus-1.0.3/silk/resampler_rom.h
external/opus-1.0.3/silk/resampler_structs.h
external/opus-1.0.3/silk/shell_coder.c
external/opus-1.0.3/silk/sigm_Q15.c
external/opus-1.0.3/silk/silk_common.vcxproj
external/opus-1.0.3/silk/silk_common.vcxproj.filters
external/opus-1.0.3/silk/sort.c
external/opus-1.0.3/silk/stereo_LR_to_MS.c
external/opus-1.0.3/silk/stereo_MS_to_LR.c
external/opus-1.0.3/silk/stereo_decode_pred.c
external/opus-1.0.3/silk/stereo_encode_pred.c
external/opus-1.0.3/silk/stereo_find_predictor.c
external/opus-1.0.3/silk/stereo_quant_pred.c
external/opus-1.0.3/silk/structs.h
external/opus-1.0.3/silk/sum_sqr_shift.c
external/opus-1.0.3/silk/table_LSF_cos.c
external/opus-1.0.3/silk/tables.h
external/opus-1.0.3/silk/tables_LTP.c
external/opus-1.0.3/silk/tables_NLSF_CB_NB_MB.c
external/opus-1.0.3/silk/tables_NLSF_CB_WB.c
external/opus-1.0.3/silk/tables_gain.c
external/opus-1.0.3/silk/tables_other.c
external/opus-1.0.3/silk/tables_pitch_lag.c
external/opus-1.0.3/silk/tables_pulses_per_block.c
external/opus-1.0.3/silk/tuning_parameters.h
external/opus-1.0.3/silk/typedef.h
external/opus-1.0.3/silk_headers.mk
external/opus-1.0.3/silk_sources.mk
external/opus-1.0.3/src/opus.c
external/opus-1.0.3/src/opus.vcxproj
external/opus-1.0.3/src/opus.vcxproj.filters
external/opus-1.0.3/src/opus_compare.c
external/opus-1.0.3/src/opus_decoder.c
external/opus-1.0.3/src/opus_demo.c
external/opus-1.0.3/src/opus_demo.vcxproj
external/opus-1.0.3/src/opus_demo.vcxproj.filters
external/opus-1.0.3/src/opus_encoder.c
external/opus-1.0.3/src/opus_multistream.c
external/opus-1.0.3/src/opus_private.h
external/opus-1.0.3/src/repacketizer.c
external/opus-1.0.3/src/repacketizer_demo.c
external/opus-1.0.3/tests/run_vectors.sh
external/opus-1.0.3/tests/test_opus_api.c
external/opus-1.0.3/tests/test_opus_api.vcxproj
external/opus-1.0.3/tests/test_opus_api.vcxproj.filters
external/opus-1.0.3/tests/test_opus_common.h
external/opus-1.0.3/tests/test_opus_decode.c
external/opus-1.0.3/tests/test_opus_decode.vcxproj
external/opus-1.0.3/tests/test_opus_decode.vcxproj.filters
external/opus-1.0.3/tests/test_opus_encode.c
external/opus-1.0.3/tests/test_opus_encode.vcxproj
external/opus-1.0.3/tests/test_opus_encode.vcxproj.filters
external/opus-1.0.3/version.mk
external/opus-1.0.3/win32/config.h
external/opus-1.0.3/win32/genversion.bat
external/opus-1.3.1/0000-opus.git-86e5f5ea.patch
external/opus-1.3.1/0001-opus.git-ad8fe90d.patch
external/opus-1.3.1/0002-opus.git-812ae3fb.patch
external/opus-1.3.1/0003-opus.git-cd529edb.patch
external/opus-1.3.1/0010-misc-win32.diff
external/opus-1.3.1/AUTHORS
external/opus-1.3.1/CMakeLists.txt
external/opus-1.3.1/COPYING
external/opus-1.3.1/ChangeLog
external/opus-1.3.1/INSTALL
external/opus-1.3.1/Makefile.am
external/opus-1.3.1/Makefile.in
external/opus-1.3.1/Makefile.mips
external/opus-1.3.1/Makefile.unix
external/opus-1.3.1/NEWS
external/opus-1.3.1/OpusConfig.cmake.in
external/opus-1.3.1/README
external/opus-1.3.1/aclocal.m4
external/opus-1.3.1/celt/_kiss_fft_guts.h
external/opus-1.3.1/celt/arch.h
external/opus-1.3.1/celt/arm/arm2gnu.pl
external/opus-1.3.1/celt/arm/arm_celt_map.c
external/opus-1.3.1/celt/arm/armcpu.c
external/opus-1.3.1/celt/arm/armcpu.h
external/opus-1.3.1/celt/arm/armopts.s.in
external/opus-1.3.1/celt/arm/celt_fft_ne10.c
external/opus-1.3.1/celt/arm/celt_mdct_ne10.c
external/opus-1.3.1/celt/arm/celt_neon_intr.c
external/opus-1.3.1/celt/arm/celt_pitch_xcorr_arm.s
external/opus-1.3.1/celt/arm/fft_arm.h
external/opus-1.3.1/celt/arm/fixed_arm64.h
external/opus-1.3.1/celt/arm/fixed_armv4.h
external/opus-1.3.1/celt/arm/fixed_armv5e.h
external/opus-1.3.1/celt/arm/kiss_fft_armv4.h
external/opus-1.3.1/celt/arm/kiss_fft_armv5e.h
external/opus-1.3.1/celt/arm/mdct_arm.h
external/opus-1.3.1/celt/arm/pitch_arm.h
external/opus-1.3.1/celt/arm/pitch_neon_intr.c
external/opus-1.3.1/celt/bands.c
external/opus-1.3.1/celt/bands.h
external/opus-1.3.1/celt/celt.c
external/opus-1.3.1/celt/celt.h
external/opus-1.3.1/celt/celt_decoder.c
external/opus-1.3.1/celt/celt_encoder.c
external/opus-1.3.1/celt/celt_lpc.c
external/opus-1.3.1/celt/celt_lpc.h
external/opus-1.3.1/celt/cpu_support.h
external/opus-1.3.1/celt/cwrs.c
external/opus-1.3.1/celt/cwrs.h
external/opus-1.3.1/celt/ecintrin.h
external/opus-1.3.1/celt/entcode.c
external/opus-1.3.1/celt/entcode.h
external/opus-1.3.1/celt/entdec.c
external/opus-1.3.1/celt/entdec.h
external/opus-1.3.1/celt/entenc.c
external/opus-1.3.1/celt/entenc.h
external/opus-1.3.1/celt/fixed_debug.h
external/opus-1.3.1/celt/fixed_generic.h
external/opus-1.3.1/celt/float_cast.h
external/opus-1.3.1/celt/kiss_fft.c
external/opus-1.3.1/celt/kiss_fft.h
external/opus-1.3.1/celt/laplace.c
external/opus-1.3.1/celt/laplace.h
external/opus-1.3.1/celt/mathops.c
external/opus-1.3.1/celt/mathops.h
external/opus-1.3.1/celt/mdct.c
external/opus-1.3.1/celt/mdct.h
external/opus-1.3.1/celt/mfrngcod.h
external/opus-1.3.1/celt/mips/celt_mipsr1.h
external/opus-1.3.1/celt/mips/fixed_generic_mipsr1.h
external/opus-1.3.1/celt/mips/kiss_fft_mipsr1.h
external/opus-1.3.1/celt/mips/mdct_mipsr1.h
external/opus-1.3.1/celt/mips/pitch_mipsr1.h
external/opus-1.3.1/celt/mips/vq_mipsr1.h
external/opus-1.3.1/celt/modes.c
external/opus-1.3.1/celt/modes.h
external/opus-1.3.1/celt/opus_custom_demo.c
external/opus-1.3.1/celt/os_support.h
external/opus-1.3.1/celt/pitch.c
external/opus-1.3.1/celt/pitch.h
external/opus-1.3.1/celt/quant_bands.c
external/opus-1.3.1/celt/quant_bands.h
external/opus-1.3.1/celt/rate.c
external/opus-1.3.1/celt/rate.h
external/opus-1.3.1/celt/stack_alloc.h
external/opus-1.3.1/celt/static_modes_fixed.h
external/opus-1.3.1/celt/static_modes_fixed_arm_ne10.h
external/opus-1.3.1/celt/static_modes_float.h
external/opus-1.3.1/celt/static_modes_float_arm_ne10.h
external/opus-1.3.1/celt/tests/test_unit_cwrs32.c
external/opus-1.3.1/celt/tests/test_unit_dft.c
external/opus-1.3.1/celt/tests/test_unit_entropy.c
external/opus-1.3.1/celt/tests/test_unit_laplace.c
external/opus-1.3.1/celt/tests/test_unit_mathops.c
external/opus-1.3.1/celt/tests/test_unit_mdct.c
external/opus-1.3.1/celt/tests/test_unit_rotation.c
external/opus-1.3.1/celt/tests/test_unit_types.c
external/opus-1.3.1/celt/vq.c
external/opus-1.3.1/celt/vq.h
external/opus-1.3.1/celt/x86/celt_lpc_sse.h
external/opus-1.3.1/celt/x86/celt_lpc_sse4_1.c
external/opus-1.3.1/celt/x86/pitch_sse.c
external/opus-1.3.1/celt/x86/pitch_sse.h
external/opus-1.3.1/celt/x86/pitch_sse2.c
external/opus-1.3.1/celt/x86/pitch_sse4_1.c
external/opus-1.3.1/celt/x86/vq_sse.h
external/opus-1.3.1/celt/x86/vq_sse2.c
external/opus-1.3.1/celt/x86/x86_celt_map.c
external/opus-1.3.1/celt/x86/x86cpu.c
external/opus-1.3.1/celt/x86/x86cpu.h
external/opus-1.3.1/celt_headers.mk
external/opus-1.3.1/celt_sources.mk
external/opus-1.3.1/compile
external/opus-1.3.1/config.guess
external/opus-1.3.1/config.h.cmake.in
external/opus-1.3.1/config.h.in
external/opus-1.3.1/config.sub
external/opus-1.3.1/configure
external/opus-1.3.1/configure.ac
external/opus-1.3.1/depcomp
external/opus-1.3.1/doc/Doxyfile.in
external/opus-1.3.1/doc/Makefile.am
external/opus-1.3.1/doc/Makefile.in
external/opus-1.3.1/doc/TODO
external/opus-1.3.1/doc/customdoxygen.css
external/opus-1.3.1/doc/footer.html
external/opus-1.3.1/doc/header.html
external/opus-1.3.1/doc/opus_logo.svg
external/opus-1.3.1/doc/trivial_example.c
external/opus-1.3.1/include/opus.h
external/opus-1.3.1/include/opus_custom.h
external/opus-1.3.1/include/opus_defines.h
external/opus-1.3.1/include/opus_multistream.h
external/opus-1.3.1/include/opus_projection.h
external/opus-1.3.1/include/opus_types.h
external/opus-1.3.1/install-sh
external/opus-1.3.1/ltmain.sh
external/opus-1.3.1/m4/as-gcc-inline-assembly.m4
external/opus-1.3.1/m4/ax_add_fortify_source.m4
external/opus-1.3.1/m4/libtool.m4
external/opus-1.3.1/m4/ltoptions.m4
external/opus-1.3.1/m4/ltsugar.m4
external/opus-1.3.1/m4/ltversion.m4
external/opus-1.3.1/m4/lt~obsolete.m4
external/opus-1.3.1/m4/opus-intrinsics.m4
external/opus-1.3.1/missing
external/opus-1.3.1/opus-uninstalled.pc.in
external/opus-1.3.1/opus.m4
external/opus-1.3.1/opus.pc.in
external/opus-1.3.1/opus_buildtype.cmake
external/opus-1.3.1/opus_config.cmake
external/opus-1.3.1/opus_functions.cmake
external/opus-1.3.1/opus_headers.mk
external/opus-1.3.1/opus_sources.cmake
external/opus-1.3.1/opus_sources.mk
external/opus-1.3.1/package_version
external/opus-1.3.1/silk/A2NLSF.c
external/opus-1.3.1/silk/API.h
external/opus-1.3.1/silk/CNG.c
external/opus-1.3.1/silk/HP_variable_cutoff.c
external/opus-1.3.1/silk/Inlines.h
external/opus-1.3.1/silk/LPC_analysis_filter.c
external/opus-1.3.1/silk/LPC_fit.c
external/opus-1.3.1/silk/LPC_inv_pred_gain.c
external/opus-1.3.1/silk/LP_variable_cutoff.c
external/opus-1.3.1/silk/MacroCount.h
external/opus-1.3.1/silk/MacroDebug.h
external/opus-1.3.1/silk/NLSF2A.c
external/opus-1.3.1/silk/NLSF_VQ.c
external/opus-1.3.1/silk/NLSF_VQ_weights_laroia.c
external/opus-1.3.1/silk/NLSF_decode.c
external/opus-1.3.1/silk/NLSF_del_dec_quant.c
external/opus-1.3.1/silk/NLSF_encode.c
external/opus-1.3.1/silk/NLSF_stabilize.c
external/opus-1.3.1/silk/NLSF_unpack.c
external/opus-1.3.1/silk/NSQ.c
external/opus-1.3.1/silk/NSQ.h
external/opus-1.3.1/silk/NSQ_del_dec.c
external/opus-1.3.1/silk/PLC.c
external/opus-1.3.1/silk/PLC.h
external/opus-1.3.1/silk/SigProc_FIX.h
external/opus-1.3.1/silk/VAD.c
external/opus-1.3.1/silk/VQ_WMat_EC.c
external/opus-1.3.1/silk/ana_filt_bank_1.c
external/opus-1.3.1/silk/arm/LPC_inv_pred_gain_arm.h
external/opus-1.3.1/silk/arm/LPC_inv_pred_gain_neon_intr.c
external/opus-1.3.1/silk/arm/NSQ_del_dec_arm.h
external/opus-1.3.1/silk/arm/NSQ_del_dec_neon_intr.c
external/opus-1.3.1/silk/arm/NSQ_neon.c
external/opus-1.3.1/silk/arm/NSQ_neon.h
external/opus-1.3.1/silk/arm/SigProc_FIX_armv4.h
external/opus-1.3.1/silk/arm/SigProc_FIX_armv5e.h
external/opus-1.3.1/silk/arm/arm_silk_map.c
external/opus-1.3.1/silk/arm/biquad_alt_arm.h
external/opus-1.3.1/silk/arm/biquad_alt_neon_intr.c
external/opus-1.3.1/silk/arm/macros_arm64.h
external/opus-1.3.1/silk/arm/macros_armv4.h
external/opus-1.3.1/silk/arm/macros_armv5e.h
external/opus-1.3.1/silk/biquad_alt.c
external/opus-1.3.1/silk/bwexpander.c
external/opus-1.3.1/silk/bwexpander_32.c
external/opus-1.3.1/silk/check_control_input.c
external/opus-1.3.1/silk/code_signs.c
external/opus-1.3.1/silk/control.h
external/opus-1.3.1/silk/control_SNR.c
external/opus-1.3.1/silk/control_audio_bandwidth.c
external/opus-1.3.1/silk/control_codec.c
external/opus-1.3.1/silk/debug.c
external/opus-1.3.1/silk/debug.h
external/opus-1.3.1/silk/dec_API.c
external/opus-1.3.1/silk/decode_core.c
external/opus-1.3.1/silk/decode_frame.c
external/opus-1.3.1/silk/decode_indices.c
external/opus-1.3.1/silk/decode_parameters.c
external/opus-1.3.1/silk/decode_pitch.c
external/opus-1.3.1/silk/decode_pulses.c
external/opus-1.3.1/silk/decoder_set_fs.c
external/opus-1.3.1/silk/define.h
external/opus-1.3.1/silk/enc_API.c
external/opus-1.3.1/silk/encode_indices.c
external/opus-1.3.1/silk/encode_pulses.c
external/opus-1.3.1/silk/errors.h
external/opus-1.3.1/silk/fixed/LTP_analysis_filter_FIX.c
external/opus-1.3.1/silk/fixed/LTP_scale_ctrl_FIX.c
external/opus-1.3.1/silk/fixed/apply_sine_window_FIX.c
external/opus-1.3.1/silk/fixed/arm/warped_autocorrelation_FIX_arm.h
external/opus-1.3.1/silk/fixed/arm/warped_autocorrelation_FIX_neon_intr.c
external/opus-1.3.1/silk/fixed/autocorr_FIX.c
external/opus-1.3.1/silk/fixed/burg_modified_FIX.c
external/opus-1.3.1/silk/fixed/corrMatrix_FIX.c
external/opus-1.3.1/silk/fixed/encode_frame_FIX.c
external/opus-1.3.1/silk/fixed/find_LPC_FIX.c
external/opus-1.3.1/silk/fixed/find_LTP_FIX.c
external/opus-1.3.1/silk/fixed/find_pitch_lags_FIX.c
external/opus-1.3.1/silk/fixed/find_pred_coefs_FIX.c
external/opus-1.3.1/silk/fixed/k2a_FIX.c
external/opus-1.3.1/silk/fixed/k2a_Q16_FIX.c
external/opus-1.3.1/silk/fixed/main_FIX.h
external/opus-1.3.1/silk/fixed/mips/noise_shape_analysis_FIX_mipsr1.h
external/opus-1.3.1/silk/fixed/mips/warped_autocorrelation_FIX_mipsr1.h
external/opus-1.3.1/silk/fixed/noise_shape_analysis_FIX.c
external/opus-1.3.1/silk/fixed/pitch_analysis_core_FIX.c
external/opus-1.3.1/silk/fixed/process_gains_FIX.c
external/opus-1.3.1/silk/fixed/regularize_correlations_FIX.c
external/opus-1.3.1/silk/fixed/residual_energy16_FIX.c
external/opus-1.3.1/silk/fixed/residual_energy_FIX.c
external/opus-1.3.1/silk/fixed/schur64_FIX.c
external/opus-1.3.1/silk/fixed/schur_FIX.c
external/opus-1.3.1/silk/fixed/structs_FIX.h
external/opus-1.3.1/silk/fixed/vector_ops_FIX.c
external/opus-1.3.1/silk/fixed/warped_autocorrelation_FIX.c
external/opus-1.3.1/silk/fixed/x86/burg_modified_FIX_sse4_1.c
external/opus-1.3.1/silk/fixed/x86/vector_ops_FIX_sse4_1.c
external/opus-1.3.1/silk/float/LPC_analysis_filter_FLP.c
external/opus-1.3.1/silk/float/LPC_inv_pred_gain_FLP.c
external/opus-1.3.1/silk/float/LTP_analysis_filter_FLP.c
external/opus-1.3.1/silk/float/LTP_scale_ctrl_FLP.c
external/opus-1.3.1/silk/float/SigProc_FLP.h
external/opus-1.3.1/silk/float/apply_sine_window_FLP.c
external/opus-1.3.1/silk/float/autocorrelation_FLP.c
external/opus-1.3.1/silk/float/burg_modified_FLP.c
external/opus-1.3.1/silk/float/bwexpander_FLP.c
external/opus-1.3.1/silk/float/corrMatrix_FLP.c
external/opus-1.3.1/silk/float/encode_frame_FLP.c
external/opus-1.3.1/silk/float/energy_FLP.c
external/opus-1.3.1/silk/float/find_LPC_FLP.c
external/opus-1.3.1/silk/float/find_LTP_FLP.c
external/opus-1.3.1/silk/float/find_pitch_lags_FLP.c
external/opus-1.3.1/silk/float/find_pred_coefs_FLP.c
external/opus-1.3.1/silk/float/inner_product_FLP.c
external/opus-1.3.1/silk/float/k2a_FLP.c
external/opus-1.3.1/silk/float/main_FLP.h
external/opus-1.3.1/silk/float/noise_shape_analysis_FLP.c
external/opus-1.3.1/silk/float/pitch_analysis_core_FLP.c
external/opus-1.3.1/silk/float/process_gains_FLP.c
external/opus-1.3.1/silk/float/regularize_correlations_FLP.c
external/opus-1.3.1/silk/float/residual_energy_FLP.c
external/opus-1.3.1/silk/float/scale_copy_vector_FLP.c
external/opus-1.3.1/silk/float/scale_vector_FLP.c
external/opus-1.3.1/silk/float/schur_FLP.c
external/opus-1.3.1/silk/float/sort_FLP.c
external/opus-1.3.1/silk/float/structs_FLP.h
external/opus-1.3.1/silk/float/warped_autocorrelation_FLP.c
external/opus-1.3.1/silk/float/wrappers_FLP.c
external/opus-1.3.1/silk/gain_quant.c
external/opus-1.3.1/silk/init_decoder.c
external/opus-1.3.1/silk/init_encoder.c
external/opus-1.3.1/silk/inner_prod_aligned.c
external/opus-1.3.1/silk/interpolate.c
external/opus-1.3.1/silk/lin2log.c
external/opus-1.3.1/silk/log2lin.c
external/opus-1.3.1/silk/macros.h
external/opus-1.3.1/silk/main.h
external/opus-1.3.1/silk/mips/NSQ_del_dec_mipsr1.h
external/opus-1.3.1/silk/mips/macros_mipsr1.h
external/opus-1.3.1/silk/mips/sigproc_fix_mipsr1.h
external/opus-1.3.1/silk/pitch_est_defines.h
external/opus-1.3.1/silk/pitch_est_tables.c
external/opus-1.3.1/silk/process_NLSFs.c
external/opus-1.3.1/silk/quant_LTP_gains.c
external/opus-1.3.1/silk/resampler.c
external/opus-1.3.1/silk/resampler_down2.c
external/opus-1.3.1/silk/resampler_down2_3.c
external/opus-1.3.1/silk/resampler_private.h
external/opus-1.3.1/silk/resampler_private_AR2.c
external/opus-1.3.1/silk/resampler_private_IIR_FIR.c
external/opus-1.3.1/silk/resampler_private_down_FIR.c
external/opus-1.3.1/silk/resampler_private_up2_HQ.c
external/opus-1.3.1/silk/resampler_rom.c
external/opus-1.3.1/silk/resampler_rom.h
external/opus-1.3.1/silk/resampler_structs.h
external/opus-1.3.1/silk/shell_coder.c
external/opus-1.3.1/silk/sigm_Q15.c
external/opus-1.3.1/silk/sort.c
external/opus-1.3.1/silk/stereo_LR_to_MS.c
external/opus-1.3.1/silk/stereo_MS_to_LR.c
external/opus-1.3.1/silk/stereo_decode_pred.c
external/opus-1.3.1/silk/stereo_encode_pred.c
external/opus-1.3.1/silk/stereo_find_predictor.c
external/opus-1.3.1/silk/stereo_quant_pred.c
external/opus-1.3.1/silk/structs.h
external/opus-1.3.1/silk/sum_sqr_shift.c
external/opus-1.3.1/silk/table_LSF_cos.c
external/opus-1.3.1/silk/tables.h
external/opus-1.3.1/silk/tables_LTP.c
external/opus-1.3.1/silk/tables_NLSF_CB_NB_MB.c
external/opus-1.3.1/silk/tables_NLSF_CB_WB.c
external/opus-1.3.1/silk/tables_gain.c
external/opus-1.3.1/silk/tables_other.c
external/opus-1.3.1/silk/tables_pitch_lag.c
external/opus-1.3.1/silk/tables_pulses_per_block.c
external/opus-1.3.1/silk/tests/test_unit_LPC_inv_pred_gain.c
external/opus-1.3.1/silk/tuning_parameters.h
external/opus-1.3.1/silk/typedef.h
external/opus-1.3.1/silk/x86/NSQ_del_dec_sse4_1.c
external/opus-1.3.1/silk/x86/NSQ_sse4_1.c
external/opus-1.3.1/silk/x86/SigProc_FIX_sse.h
external/opus-1.3.1/silk/x86/VAD_sse4_1.c
external/opus-1.3.1/silk/x86/VQ_WMat_EC_sse4_1.c
external/opus-1.3.1/silk/x86/main_sse.h
external/opus-1.3.1/silk/x86/x86_silk_map.c
external/opus-1.3.1/silk_headers.mk
external/opus-1.3.1/silk_sources.mk
external/opus-1.3.1/src/analysis.c
external/opus-1.3.1/src/analysis.h
external/opus-1.3.1/src/mapping_matrix.c
external/opus-1.3.1/src/mapping_matrix.h
external/opus-1.3.1/src/mlp.c
external/opus-1.3.1/src/mlp.h
external/opus-1.3.1/src/mlp_data.c
external/opus-1.3.1/src/opus.c
external/opus-1.3.1/src/opus_compare.c
external/opus-1.3.1/src/opus_decoder.c
external/opus-1.3.1/src/opus_demo.c
external/opus-1.3.1/src/opus_encoder.c
external/opus-1.3.1/src/opus_multistream.c
external/opus-1.3.1/src/opus_multistream_decoder.c
external/opus-1.3.1/src/opus_multistream_encoder.c
external/opus-1.3.1/src/opus_private.h
external/opus-1.3.1/src/opus_projection_decoder.c
external/opus-1.3.1/src/opus_projection_encoder.c
external/opus-1.3.1/src/repacketizer.c
external/opus-1.3.1/src/repacketizer_demo.c
external/opus-1.3.1/src/tansig_table.h
external/opus-1.3.1/test-driver
external/opus-1.3.1/tests/opus_encode_regressions.c
external/opus-1.3.1/tests/run_vectors.sh
external/opus-1.3.1/tests/test_opus_api.c
external/opus-1.3.1/tests/test_opus_common.h
external/opus-1.3.1/tests/test_opus_decode.c
external/opus-1.3.1/tests/test_opus_encode.c
external/opus-1.3.1/tests/test_opus_padding.c
external/opus-1.3.1/tests/test_opus_projection.c
external/opus-1.3.1/win32/VS2015/common.props
external/opus-1.3.1/win32/VS2015/opus.sln
external/opus-1.3.1/win32/VS2015/opus.vcxproj
external/opus-1.3.1/win32/VS2015/opus.vcxproj.filters
external/opus-1.3.1/win32/VS2015/opus_demo.vcxproj
external/opus-1.3.1/win32/VS2015/opus_demo.vcxproj.filters
external/opus-1.3.1/win32/VS2015/test_opus_api.vcxproj
external/opus-1.3.1/win32/VS2015/test_opus_api.vcxproj.filters
external/opus-1.3.1/win32/VS2015/test_opus_decode.vcxproj
external/opus-1.3.1/win32/VS2015/test_opus_decode.vcxproj.filters
external/opus-1.3.1/win32/VS2015/test_opus_encode.vcxproj
external/opus-1.3.1/win32/VS2015/test_opus_encode.vcxproj.filters
external/opus-1.3.1/win32/config.h
external/opus-1.3.1/win32/genversion.bat
external/opusfile-0.10/000-opusfile.git-67273ef.patch
external/opusfile-0.10/001-opusfile.git-567165a.patch
external/opusfile-0.10/003-opusfile.git-e8e3046.patch
external/opusfile-0.10/050-opusfile-misc-port0.patch
external/opusfile-0.10/051-opusfile-misc-port1.patch
external/opusfile-0.10/AUTHORS
external/opusfile-0.10/COPYING
external/opusfile-0.10/Makefile.am
external/opusfile-0.10/Makefile.in
external/opusfile-0.10/README.md
external/opusfile-0.10/aclocal.m4
external/opusfile-0.10/compile
external/opusfile-0.10/config.guess
external/opusfile-0.10/config.h.in
external/opusfile-0.10/config.sub
external/opusfile-0.10/configure
external/opusfile-0.10/configure.ac
external/opusfile-0.10/depcomp
external/opusfile-0.10/doc/Doxyfile.in
external/opusfile-0.10/doc/opus_logo.svg
external/opusfile-0.10/examples/opusfile_example.c
external/opusfile-0.10/examples/seeking_example.c
external/opusfile-0.10/examples/win32utf8.c
external/opusfile-0.10/examples/win32utf8.h
external/opusfile-0.10/include/opusfile.h
external/opusfile-0.10/install-sh
external/opusfile-0.10/ltmain.sh
external/opusfile-0.10/m4/attributes.m4
external/opusfile-0.10/m4/libtool.m4
external/opusfile-0.10/m4/ltoptions.m4
external/opusfile-0.10/m4/ltsugar.m4
external/opusfile-0.10/m4/ltversion.m4
external/opusfile-0.10/m4/lt~obsolete.m4
external/opusfile-0.10/missing
external/opusfile-0.10/opusfile-uninstalled.pc.in
external/opusfile-0.10/opusfile.pc.in
external/opusfile-0.10/opusurl-uninstalled.pc.in
external/opusfile-0.10/opusurl.pc.in
external/opusfile-0.10/package_version
external/opusfile-0.10/src/Makefile.darwin
external/opusfile-0.10/src/http.c
external/opusfile-0.10/src/info.c
external/opusfile-0.10/src/internal.c
external/opusfile-0.10/src/internal.h
external/opusfile-0.10/src/opusfile.c
external/opusfile-0.10/src/stream.c
external/opusfile-0.10/src/wincerts.c
external/opusfile-0.10/src/winerrno.h
external/opusfile-0.10/win32/VS2015/opusfile.sln
external/opusfile-0.10/win32/VS2015/opusfile.vcxproj
external/opusfile-0.10/win32/VS2015/opusfile.vcxproj.filters
external/opusfile-0.10/win32/VS2015/opusfile_example.vcxproj
external/opusfile-0.10/win32/VS2015/opusfile_example.vcxproj.filters
external/opusfile-0.10/win32/VS2015/seeking_example.vcxproj
external/opusfile-0.10/win32/VS2015/seeking_example.vcxproj.filters
external/opusfile-0.11/0000-misc-configury.patch
external/opusfile-0.11/0001-misc-mingw64.patch
external/opusfile-0.11/AUTHORS
external/opusfile-0.11/COPYING
external/opusfile-0.11/Makefile.am
external/opusfile-0.11/Makefile.in
external/opusfile-0.11/README.md
external/opusfile-0.11/aclocal.m4
external/opusfile-0.11/compile
external/opusfile-0.11/config.guess
external/opusfile-0.11/config.h.in
external/opusfile-0.11/config.sub
external/opusfile-0.11/configure
external/opusfile-0.11/configure.ac
external/opusfile-0.11/depcomp
external/opusfile-0.11/doc/Doxyfile.in
external/opusfile-0.11/doc/opus_logo.svg
external/opusfile-0.11/examples/opusfile_example.c
external/opusfile-0.11/examples/seeking_example.c
external/opusfile-0.11/examples/win32utf8.c
external/opusfile-0.11/examples/win32utf8.h
external/opusfile-0.11/include/opusfile.h
external/opusfile-0.11/install-sh
external/opusfile-0.11/ltmain.sh
external/opusfile-0.11/m4/attributes.m4
external/opusfile-0.11/m4/libtool.m4
external/opusfile-0.11/m4/ltoptions.m4
external/opusfile-0.11/m4/ltsugar.m4
external/opusfile-0.11/m4/ltversion.m4
external/opusfile-0.11/m4/lt~obsolete.m4
external/opusfile-0.11/m4/pkg.m4
external/opusfile-0.11/missing
external/opusfile-0.11/opusfile-uninstalled.pc.in
external/opusfile-0.11/opusfile.pc.in
external/opusfile-0.11/opusurl-uninstalled.pc.in
external/opusfile-0.11/opusurl.pc.in
external/opusfile-0.11/package_version
external/opusfile-0.11/src/http.c
external/opusfile-0.11/src/info.c
external/opusfile-0.11/src/internal.c
external/opusfile-0.11/src/internal.h
external/opusfile-0.11/src/opusfile.c
external/opusfile-0.11/src/stream.c
external/opusfile-0.11/src/wincerts.c
external/opusfile-0.11/src/winerrno.h
external/opusfile-0.11/win32/VS2015/opusfile.sln
external/opusfile-0.11/win32/VS2015/opusfile.vcxproj
external/opusfile-0.11/win32/VS2015/opusfile.vcxproj.filters
external/opusfile-0.11/win32/VS2015/opusfile_example.vcxproj
external/opusfile-0.11/win32/VS2015/opusfile_example.vcxproj.filters
external/opusfile-0.11/win32/VS2015/seeking_example.vcxproj
external/opusfile-0.11/win32/VS2015/seeking_example.vcxproj.filters
     1.1 --- a/VisualC/external/include/opus/opus.h	Sat Oct 05 10:33:14 2019 -0700
     1.2 +++ b/VisualC/external/include/opus/opus.h	Sun Oct 06 12:55:01 2019 +0300
     1.3 @@ -142,7 +142,7 @@
     1.4    *
     1.5    * opus_encode() and opus_encode_float() return the number of bytes actually written to the packet.
     1.6    * The return value <b>can be negative</b>, which indicates that an error has occurred. If the return value
     1.7 -  * is 1 byte, then the packet does not need to be transmitted (DTX).
     1.8 +  * is 2 bytes or less, then the packet does not need to be transmitted (DTX).
     1.9    *
    1.10    * Once the encoder state if no longer needed, it can be destroyed with
    1.11    *
    1.12 @@ -531,7 +531,7 @@
    1.13     const unsigned char *frames[48],
    1.14     opus_int16 size[48],
    1.15     int *payload_offset
    1.16 -) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4);
    1.17 +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(5);
    1.18  
    1.19  /** Gets the bandwidth of an Opus packet.
    1.20    * @param [in] data <tt>char*</tt>: Opus packet
    1.21 @@ -592,6 +592,20 @@
    1.22    * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type
    1.23    */
    1.24  OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decoder_get_nb_samples(const OpusDecoder *dec, const unsigned char packet[], opus_int32 len) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2);
    1.25 +
    1.26 +/** Applies soft-clipping to bring a float signal within the [-1,1] range. If
    1.27 +  * the signal is already in that range, nothing is done. If there are values
    1.28 +  * outside of [-1,1], then the signal is clipped as smoothly as possible to
    1.29 +  * both fit in the range and avoid creating excessive distortion in the
    1.30 +  * process.
    1.31 +  * @param [in,out] pcm <tt>float*</tt>: Input PCM and modified PCM
    1.32 +  * @param [in] frame_size <tt>int</tt> Number of samples per channel to process
    1.33 +  * @param [in] channels <tt>int</tt>: Number of channels
    1.34 +  * @param [in,out] softclip_mem <tt>float*</tt>: State memory for the soft clipping process (one float per channel, initialized to zero)
    1.35 +  */
    1.36 +OPUS_EXPORT void opus_pcm_soft_clip(float *pcm, int frame_size, int channels, float *softclip_mem);
    1.37 +
    1.38 +
    1.39  /**@}*/
    1.40  
    1.41  /** @defgroup opus_repacketizer Repacketizer
    1.42 @@ -602,7 +616,10 @@
    1.43    * merged. Splitting valid Opus packets is always guaranteed to succeed,
    1.44    * whereas merging valid packets only succeeds if all frames have the same
    1.45    * mode, bandwidth, and frame size, and when the total duration of the merged
    1.46 -  * packet is no more than 120 ms.
    1.47 +  * packet is no more than 120 ms. The 120 ms limit comes from the
    1.48 +  * specification and limits decoder memory requirements at a point where
    1.49 +  * framing overhead becomes negligible.
    1.50 +  *
    1.51    * The repacketizer currently only operates on elementary Opus
    1.52    * streams. It will not manipualte multistream packets successfully, except in
    1.53    * the degenerate case where they consist of data from a single stream.
    1.54 @@ -897,6 +914,64 @@
    1.55    */
    1.56  OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_repacketizer_out(OpusRepacketizer *rp, unsigned char *data, opus_int32 maxlen) OPUS_ARG_NONNULL(1);
    1.57  
    1.58 +/** Pads a given Opus packet to a larger size (possibly changing the TOC sequence).
    1.59 +  * @param[in,out] data <tt>const unsigned char*</tt>: The buffer containing the
    1.60 +  *                                                   packet to pad.
    1.61 +  * @param len <tt>opus_int32</tt>: The size of the packet.
    1.62 +  *                                 This must be at least 1.
    1.63 +  * @param new_len <tt>opus_int32</tt>: The desired size of the packet after padding.
    1.64 +  *                                 This must be at least as large as len.
    1.65 +  * @returns an error code
    1.66 +  * @retval #OPUS_OK \a on success.
    1.67 +  * @retval #OPUS_BAD_ARG \a len was less than 1 or new_len was less than len.
    1.68 +  * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet.
    1.69 +  */
    1.70 +OPUS_EXPORT int opus_packet_pad(unsigned char *data, opus_int32 len, opus_int32 new_len);
    1.71 +
    1.72 +/** Remove all padding from a given Opus packet and rewrite the TOC sequence to
    1.73 +  * minimize space usage.
    1.74 +  * @param[in,out] data <tt>const unsigned char*</tt>: The buffer containing the
    1.75 +  *                                                   packet to strip.
    1.76 +  * @param len <tt>opus_int32</tt>: The size of the packet.
    1.77 +  *                                 This must be at least 1.
    1.78 +  * @returns The new size of the output packet on success, or an error code
    1.79 +  *          on failure.
    1.80 +  * @retval #OPUS_BAD_ARG \a len was less than 1.
    1.81 +  * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet.
    1.82 +  */
    1.83 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_packet_unpad(unsigned char *data, opus_int32 len);
    1.84 +
    1.85 +/** Pads a given Opus multi-stream packet to a larger size (possibly changing the TOC sequence).
    1.86 +  * @param[in,out] data <tt>const unsigned char*</tt>: The buffer containing the
    1.87 +  *                                                   packet to pad.
    1.88 +  * @param len <tt>opus_int32</tt>: The size of the packet.
    1.89 +  *                                 This must be at least 1.
    1.90 +  * @param new_len <tt>opus_int32</tt>: The desired size of the packet after padding.
    1.91 +  *                                 This must be at least 1.
    1.92 +  * @param nb_streams <tt>opus_int32</tt>: The number of streams (not channels) in the packet.
    1.93 +  *                                 This must be at least as large as len.
    1.94 +  * @returns an error code
    1.95 +  * @retval #OPUS_OK \a on success.
    1.96 +  * @retval #OPUS_BAD_ARG \a len was less than 1.
    1.97 +  * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet.
    1.98 +  */
    1.99 +OPUS_EXPORT int opus_multistream_packet_pad(unsigned char *data, opus_int32 len, opus_int32 new_len, int nb_streams);
   1.100 +
   1.101 +/** Remove all padding from a given Opus multi-stream packet and rewrite the TOC sequence to
   1.102 +  * minimize space usage.
   1.103 +  * @param[in,out] data <tt>const unsigned char*</tt>: The buffer containing the
   1.104 +  *                                                   packet to strip.
   1.105 +  * @param len <tt>opus_int32</tt>: The size of the packet.
   1.106 +  *                                 This must be at least 1.
   1.107 +  * @param nb_streams <tt>opus_int32</tt>: The number of streams (not channels) in the packet.
   1.108 +  *                                 This must be at least 1.
   1.109 +  * @returns The new size of the output packet on success, or an error code
   1.110 +  *          on failure.
   1.111 +  * @retval #OPUS_BAD_ARG \a len was less than 1 or new_len was less than len.
   1.112 +  * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet.
   1.113 +  */
   1.114 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_packet_unpad(unsigned char *data, opus_int32 len, int nb_streams);
   1.115 +
   1.116  /**@}*/
   1.117  
   1.118  #ifdef __cplusplus
     2.1 --- a/VisualC/external/include/opus/opus_defines.h	Sat Oct 05 10:33:14 2019 -0700
     2.2 +++ b/VisualC/external/include/opus/opus_defines.h	Sun Oct 06 12:55:01 2019 +0300
     2.3 @@ -46,7 +46,7 @@
     2.4  #define OPUS_OK                0
     2.5  /** One or more invalid/out of range arguments @hideinitializer*/
     2.6  #define OPUS_BAD_ARG          -1
     2.7 -/** The mode struct passed is invalid @hideinitializer*/
     2.8 +/** Not enough bytes allocated in the buffer @hideinitializer*/
     2.9  #define OPUS_BUFFER_TOO_SMALL -2
    2.10  /** An internal error was detected @hideinitializer*/
    2.11  #define OPUS_INTERNAL_ERROR   -3
    2.12 @@ -98,6 +98,18 @@
    2.13  # define OPUS_RESTRICT restrict
    2.14  #endif
    2.15  
    2.16 +#if (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) )
    2.17 +# if OPUS_GNUC_PREREQ(2,7)
    2.18 +#  define OPUS_INLINE __inline__
    2.19 +# elif (defined(_MSC_VER))
    2.20 +#  define OPUS_INLINE __inline
    2.21 +# else
    2.22 +#  define OPUS_INLINE
    2.23 +# endif
    2.24 +#else
    2.25 +# define OPUS_INLINE inline
    2.26 +#endif
    2.27 +
    2.28  /**Warning attributes for opus functions
    2.29    * NONNULL is not used in OPUS_BUILD to avoid the compiler optimizing out
    2.30    * some paranoid null checks. */
    2.31 @@ -148,15 +160,24 @@
    2.32  #define OPUS_GET_GAIN_REQUEST                4045 /* Should have been 4035 */
    2.33  #define OPUS_SET_LSB_DEPTH_REQUEST           4036
    2.34  #define OPUS_GET_LSB_DEPTH_REQUEST           4037
    2.35 +#define OPUS_GET_LAST_PACKET_DURATION_REQUEST 4039
    2.36 +#define OPUS_SET_EXPERT_FRAME_DURATION_REQUEST 4040
    2.37 +#define OPUS_GET_EXPERT_FRAME_DURATION_REQUEST 4041
    2.38 +#define OPUS_SET_PREDICTION_DISABLED_REQUEST 4042
    2.39 +#define OPUS_GET_PREDICTION_DISABLED_REQUEST 4043
    2.40 +/* Don't use 4045, it's already taken by OPUS_GET_GAIN_REQUEST */
    2.41 +#define OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST 4046
    2.42 +#define OPUS_GET_PHASE_INVERSION_DISABLED_REQUEST 4047
    2.43 +#define OPUS_GET_IN_DTX_REQUEST              4049
    2.44  
    2.45 -#define OPUS_GET_LAST_PACKET_DURATION_REQUEST 4039
    2.46 -
    2.47 -/* Don't use 4045, it's already taken by OPUS_GET_GAIN_REQUEST */
    2.48 +/** Defines for the presence of extended APIs. */
    2.49 +#define OPUS_HAVE_OPUS_PROJECTION_H
    2.50  
    2.51  /* Macros to trigger compilation errors when the wrong types are provided to a CTL */
    2.52  #define __opus_check_int(x) (((void)((x) == (opus_int32)0)), (opus_int32)(x))
    2.53  #define __opus_check_int_ptr(ptr) ((ptr) + ((ptr) - (opus_int32*)(ptr)))
    2.54  #define __opus_check_uint_ptr(ptr) ((ptr) + ((ptr) - (opus_uint32*)(ptr)))
    2.55 +#define __opus_check_val16_ptr(ptr) ((ptr) + ((ptr) - (opus_val16*)(ptr)))
    2.56  /** @endcond */
    2.57  
    2.58  /** @defgroup opus_ctlvalues Pre-defined values for CTL interface
    2.59 @@ -185,6 +206,17 @@
    2.60  #define OPUS_BANDWIDTH_SUPERWIDEBAND         1104 /**<12 kHz bandpass @hideinitializer*/
    2.61  #define OPUS_BANDWIDTH_FULLBAND              1105 /**<20 kHz bandpass @hideinitializer*/
    2.62  
    2.63 +#define OPUS_FRAMESIZE_ARG                   5000 /**< Select frame size from the argument (default) */
    2.64 +#define OPUS_FRAMESIZE_2_5_MS                5001 /**< Use 2.5 ms frames */
    2.65 +#define OPUS_FRAMESIZE_5_MS                  5002 /**< Use 5 ms frames */
    2.66 +#define OPUS_FRAMESIZE_10_MS                 5003 /**< Use 10 ms frames */
    2.67 +#define OPUS_FRAMESIZE_20_MS                 5004 /**< Use 20 ms frames */
    2.68 +#define OPUS_FRAMESIZE_40_MS                 5005 /**< Use 40 ms frames */
    2.69 +#define OPUS_FRAMESIZE_60_MS                 5006 /**< Use 60 ms frames */
    2.70 +#define OPUS_FRAMESIZE_80_MS                 5007 /**< Use 80 ms frames */
    2.71 +#define OPUS_FRAMESIZE_100_MS                5008 /**< Use 100 ms frames */
    2.72 +#define OPUS_FRAMESIZE_120_MS                5009 /**< Use 120 ms frames */
    2.73 +
    2.74  /**@}*/
    2.75  
    2.76  
    2.77 @@ -250,7 +282,6 @@
    2.78  /** Enables or disables variable bitrate (VBR) in the encoder.
    2.79    * The configured bitrate may not be met exactly because frames must
    2.80    * be an integer number of bytes in length.
    2.81 -  * @warning Only the MDCT mode of Opus can provide hard CBR behavior.
    2.82    * @see OPUS_GET_VBR
    2.83    * @see OPUS_SET_VBR_CONSTRAINT
    2.84    * @param[in] x <tt>opus_int32</tt>: Allowed values:
    2.85 @@ -430,14 +461,6 @@
    2.86    * @hideinitializer */
    2.87  #define OPUS_GET_APPLICATION(x) OPUS_GET_APPLICATION_REQUEST, __opus_check_int_ptr(x)
    2.88  
    2.89 -/** Gets the sampling rate the encoder or decoder was initialized with.
    2.90 -  * This simply returns the <code>Fs</code> value passed to opus_encoder_init()
    2.91 -  * or opus_decoder_init().
    2.92 -  * @param[out] x <tt>opus_int32 *</tt>: Sampling rate of encoder or decoder.
    2.93 -  * @hideinitializer
    2.94 -  */
    2.95 -#define OPUS_GET_SAMPLE_RATE(x) OPUS_GET_SAMPLE_RATE_REQUEST, __opus_check_int_ptr(x)
    2.96 -
    2.97  /** Gets the total samples of delay added by the entire codec.
    2.98    * This can be queried by the encoder and then the provided number of samples can be
    2.99    * skipped on from the start of the decoder's output to provide time aligned input
   2.100 @@ -474,9 +497,9 @@
   2.101  #define OPUS_GET_INBAND_FEC(x) OPUS_GET_INBAND_FEC_REQUEST, __opus_check_int_ptr(x)
   2.102  
   2.103  /** Configures the encoder's expected packet loss percentage.
   2.104 -  * Higher values with trigger progressively more loss resistant behavior in the encoder
   2.105 -  * at the expense of quality at a given bitrate in the lossless case, but greater quality
   2.106 -  * under loss.
   2.107 +  * Higher values trigger progressively more loss resistant behavior in the encoder
   2.108 +  * at the expense of quality at a given bitrate in the absence of packet loss, but
   2.109 +  * greater quality under loss.
   2.110    * @see OPUS_GET_PACKET_LOSS_PERC
   2.111    * @param[in] x <tt>opus_int32</tt>:   Loss percentage in the range 0-100, inclusive (default: 0).
   2.112    * @hideinitializer */
   2.113 @@ -508,7 +531,19 @@
   2.114    * @hideinitializer */
   2.115  #define OPUS_GET_DTX(x) OPUS_GET_DTX_REQUEST, __opus_check_int_ptr(x)
   2.116  /** Configures the depth of signal being encoded.
   2.117 +  *
   2.118    * This is a hint which helps the encoder identify silence and near-silence.
   2.119 +  * It represents the number of significant bits of linear intensity below
   2.120 +  * which the signal contains ignorable quantization or other noise.
   2.121 +  *
   2.122 +  * For example, OPUS_SET_LSB_DEPTH(14) would be an appropriate setting
   2.123 +  * for G.711 u-law input. OPUS_SET_LSB_DEPTH(16) would be appropriate
   2.124 +  * for 16-bit linear pcm input with opus_encode_float().
   2.125 +  *
   2.126 +  * When using opus_encode() instead of opus_encode_float(), or when libopus
   2.127 +  * is compiled for fixed-point, the encoder uses the minimum of the value
   2.128 +  * set here and the value 16.
   2.129 +  *
   2.130    * @see OPUS_GET_LSB_DEPTH
   2.131    * @param[in] x <tt>opus_int32</tt>: Input precision in bits, between 8 and 24
   2.132    *                                   (default: 24).
   2.133 @@ -521,10 +556,68 @@
   2.134    * @hideinitializer */
   2.135  #define OPUS_GET_LSB_DEPTH(x) OPUS_GET_LSB_DEPTH_REQUEST, __opus_check_int_ptr(x)
   2.136  
   2.137 -/** Gets the duration (in samples) of the last packet successfully decoded or concealed.
   2.138 -  * @param[out] x <tt>opus_int32 *</tt>: Number of samples (at current sampling rate).
   2.139 +/** Configures the encoder's use of variable duration frames.
   2.140 +  * When variable duration is enabled, the encoder is free to use a shorter frame
   2.141 +  * size than the one requested in the opus_encode*() call.
   2.142 +  * It is then the user's responsibility
   2.143 +  * to verify how much audio was encoded by checking the ToC byte of the encoded
   2.144 +  * packet. The part of the audio that was not encoded needs to be resent to the
   2.145 +  * encoder for the next call. Do not use this option unless you <b>really</b>
   2.146 +  * know what you are doing.
   2.147 +  * @see OPUS_GET_EXPERT_FRAME_DURATION
   2.148 +  * @param[in] x <tt>opus_int32</tt>: Allowed values:
   2.149 +  * <dl>
   2.150 +  * <dt>OPUS_FRAMESIZE_ARG</dt><dd>Select frame size from the argument (default).</dd>
   2.151 +  * <dt>OPUS_FRAMESIZE_2_5_MS</dt><dd>Use 2.5 ms frames.</dd>
   2.152 +  * <dt>OPUS_FRAMESIZE_5_MS</dt><dd>Use 5 ms frames.</dd>
   2.153 +  * <dt>OPUS_FRAMESIZE_10_MS</dt><dd>Use 10 ms frames.</dd>
   2.154 +  * <dt>OPUS_FRAMESIZE_20_MS</dt><dd>Use 20 ms frames.</dd>
   2.155 +  * <dt>OPUS_FRAMESIZE_40_MS</dt><dd>Use 40 ms frames.</dd>
   2.156 +  * <dt>OPUS_FRAMESIZE_60_MS</dt><dd>Use 60 ms frames.</dd>
   2.157 +  * <dt>OPUS_FRAMESIZE_80_MS</dt><dd>Use 80 ms frames.</dd>
   2.158 +  * <dt>OPUS_FRAMESIZE_100_MS</dt><dd>Use 100 ms frames.</dd>
   2.159 +  * <dt>OPUS_FRAMESIZE_120_MS</dt><dd>Use 120 ms frames.</dd>
   2.160 +  * </dl>
   2.161    * @hideinitializer */
   2.162 -#define OPUS_GET_LAST_PACKET_DURATION(x) OPUS_GET_LAST_PACKET_DURATION_REQUEST, __opus_check_int_ptr(x)
   2.163 +#define OPUS_SET_EXPERT_FRAME_DURATION(x) OPUS_SET_EXPERT_FRAME_DURATION_REQUEST, __opus_check_int(x)
   2.164 +/** Gets the encoder's configured use of variable duration frames.
   2.165 +  * @see OPUS_SET_EXPERT_FRAME_DURATION
   2.166 +  * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
   2.167 +  * <dl>
   2.168 +  * <dt>OPUS_FRAMESIZE_ARG</dt><dd>Select frame size from the argument (default).</dd>
   2.169 +  * <dt>OPUS_FRAMESIZE_2_5_MS</dt><dd>Use 2.5 ms frames.</dd>
   2.170 +  * <dt>OPUS_FRAMESIZE_5_MS</dt><dd>Use 5 ms frames.</dd>
   2.171 +  * <dt>OPUS_FRAMESIZE_10_MS</dt><dd>Use 10 ms frames.</dd>
   2.172 +  * <dt>OPUS_FRAMESIZE_20_MS</dt><dd>Use 20 ms frames.</dd>
   2.173 +  * <dt>OPUS_FRAMESIZE_40_MS</dt><dd>Use 40 ms frames.</dd>
   2.174 +  * <dt>OPUS_FRAMESIZE_60_MS</dt><dd>Use 60 ms frames.</dd>
   2.175 +  * <dt>OPUS_FRAMESIZE_80_MS</dt><dd>Use 80 ms frames.</dd>
   2.176 +  * <dt>OPUS_FRAMESIZE_100_MS</dt><dd>Use 100 ms frames.</dd>
   2.177 +  * <dt>OPUS_FRAMESIZE_120_MS</dt><dd>Use 120 ms frames.</dd>
   2.178 +  * </dl>
   2.179 +  * @hideinitializer */
   2.180 +#define OPUS_GET_EXPERT_FRAME_DURATION(x) OPUS_GET_EXPERT_FRAME_DURATION_REQUEST, __opus_check_int_ptr(x)
   2.181 +
   2.182 +/** If set to 1, disables almost all use of prediction, making frames almost
   2.183 +  * completely independent. This reduces quality.
   2.184 +  * @see OPUS_GET_PREDICTION_DISABLED
   2.185 +  * @param[in] x <tt>opus_int32</tt>: Allowed values:
   2.186 +  * <dl>
   2.187 +  * <dt>0</dt><dd>Enable prediction (default).</dd>
   2.188 +  * <dt>1</dt><dd>Disable prediction.</dd>
   2.189 +  * </dl>
   2.190 +  * @hideinitializer */
   2.191 +#define OPUS_SET_PREDICTION_DISABLED(x) OPUS_SET_PREDICTION_DISABLED_REQUEST, __opus_check_int(x)
   2.192 +/** Gets the encoder's configured prediction status.
   2.193 +  * @see OPUS_SET_PREDICTION_DISABLED
   2.194 +  * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
   2.195 +  * <dl>
   2.196 +  * <dt>0</dt><dd>Prediction enabled (default).</dd>
   2.197 +  * <dt>1</dt><dd>Prediction disabled.</dd>
   2.198 +  * </dl>
   2.199 +  * @hideinitializer */
   2.200 +#define OPUS_GET_PREDICTION_DISABLED(x) OPUS_GET_PREDICTION_DISABLED_REQUEST, __opus_check_int_ptr(x)
   2.201 +
   2.202  /**@}*/
   2.203  
   2.204  /** @defgroup opus_genericctls Generic CTLs
   2.205 @@ -578,18 +671,6 @@
   2.206    * @hideinitializer */
   2.207  #define OPUS_GET_FINAL_RANGE(x) OPUS_GET_FINAL_RANGE_REQUEST, __opus_check_uint_ptr(x)
   2.208  
   2.209 -/** Gets the pitch of the last decoded frame, if available.
   2.210 -  * This can be used for any post-processing algorithm requiring the use of pitch,
   2.211 -  * e.g. time stretching/shortening. If the last frame was not voiced, or if the
   2.212 -  * pitch was not coded in the frame, then zero is returned.
   2.213 -  *
   2.214 -  * This CTL is only implemented for decoder instances.
   2.215 -  *
   2.216 -  * @param[out] x <tt>opus_int32 *</tt>: pitch period at 48 kHz (or 0 if not available)
   2.217 -  *
   2.218 -  * @hideinitializer */
   2.219 -#define OPUS_GET_PITCH(x) OPUS_GET_PITCH_REQUEST, __opus_check_int_ptr(x)
   2.220 -
   2.221  /** Gets the encoder's configured bandpass or the decoder's last bandpass.
   2.222    * @see OPUS_SET_BANDWIDTH
   2.223    * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
   2.224 @@ -604,6 +685,48 @@
   2.225    * @hideinitializer */
   2.226  #define OPUS_GET_BANDWIDTH(x) OPUS_GET_BANDWIDTH_REQUEST, __opus_check_int_ptr(x)
   2.227  
   2.228 +/** Gets the sampling rate the encoder or decoder was initialized with.
   2.229 +  * This simply returns the <code>Fs</code> value passed to opus_encoder_init()
   2.230 +  * or opus_decoder_init().
   2.231 +  * @param[out] x <tt>opus_int32 *</tt>: Sampling rate of encoder or decoder.
   2.232 +  * @hideinitializer
   2.233 +  */
   2.234 +#define OPUS_GET_SAMPLE_RATE(x) OPUS_GET_SAMPLE_RATE_REQUEST, __opus_check_int_ptr(x)
   2.235 +
   2.236 +/** If set to 1, disables the use of phase inversion for intensity stereo,
   2.237 +  * improving the quality of mono downmixes, but slightly reducing normal
   2.238 +  * stereo quality. Disabling phase inversion in the decoder does not comply
   2.239 +  * with RFC 6716, although it does not cause any interoperability issue and
   2.240 +  * is expected to become part of the Opus standard once RFC 6716 is updated
   2.241 +  * by draft-ietf-codec-opus-update.
   2.242 +  * @see OPUS_GET_PHASE_INVERSION_DISABLED
   2.243 +  * @param[in] x <tt>opus_int32</tt>: Allowed values:
   2.244 +  * <dl>
   2.245 +  * <dt>0</dt><dd>Enable phase inversion (default).</dd>
   2.246 +  * <dt>1</dt><dd>Disable phase inversion.</dd>
   2.247 +  * </dl>
   2.248 +  * @hideinitializer */
   2.249 +#define OPUS_SET_PHASE_INVERSION_DISABLED(x) OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST, __opus_check_int(x)
   2.250 +/** Gets the encoder's configured phase inversion status.
   2.251 +  * @see OPUS_SET_PHASE_INVERSION_DISABLED
   2.252 +  * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
   2.253 +  * <dl>
   2.254 +  * <dt>0</dt><dd>Stereo phase inversion enabled (default).</dd>
   2.255 +  * <dt>1</dt><dd>Stereo phase inversion disabled.</dd>
   2.256 +  * </dl>
   2.257 +  * @hideinitializer */
   2.258 +#define OPUS_GET_PHASE_INVERSION_DISABLED(x) OPUS_GET_PHASE_INVERSION_DISABLED_REQUEST, __opus_check_int_ptr(x)
   2.259 +/** Gets the DTX state of the encoder.
   2.260 +  * Returns whether the last encoded frame was either a comfort noise update
   2.261 +  * during DTX or not encoded because of DTX.
   2.262 +  * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
   2.263 +  * <dl>
   2.264 +  * <dt>0</dt><dd>The encoder is not in DTX.</dd>
   2.265 +  * <dt>1</dt><dd>The encoder is in DTX.</dd>
   2.266 +  * </dl>
   2.267 +  * @hideinitializer */
   2.268 +#define OPUS_GET_IN_DTX(x) OPUS_GET_IN_DTX_REQUEST, __opus_check_int_ptr(x)
   2.269 +
   2.270  /**@}*/
   2.271  
   2.272  /** @defgroup opus_decoderctls Decoder related CTLs
   2.273 @@ -628,6 +751,23 @@
   2.274    * @hideinitializer */
   2.275  #define OPUS_GET_GAIN(x) OPUS_GET_GAIN_REQUEST, __opus_check_int_ptr(x)
   2.276  
   2.277 +/** Gets the duration (in samples) of the last packet successfully decoded or concealed.
   2.278 +  * @param[out] x <tt>opus_int32 *</tt>: Number of samples (at current sampling rate).
   2.279 +  * @hideinitializer */
   2.280 +#define OPUS_GET_LAST_PACKET_DURATION(x) OPUS_GET_LAST_PACKET_DURATION_REQUEST, __opus_check_int_ptr(x)
   2.281 +
   2.282 +/** Gets the pitch of the last decoded frame, if available.
   2.283 +  * This can be used for any post-processing algorithm requiring the use of pitch,
   2.284 +  * e.g. time stretching/shortening. If the last frame was not voiced, or if the
   2.285 +  * pitch was not coded in the frame, then zero is returned.
   2.286 +  *
   2.287 +  * This CTL is only implemented for decoder instances.
   2.288 +  *
   2.289 +  * @param[out] x <tt>opus_int32 *</tt>: pitch period at 48 kHz (or 0 if not available)
   2.290 +  *
   2.291 +  * @hideinitializer */
   2.292 +#define OPUS_GET_PITCH(x) OPUS_GET_PITCH_REQUEST, __opus_check_int_ptr(x)
   2.293 +
   2.294  /**@}*/
   2.295  
   2.296  /** @defgroup opus_libinfo Opus library information functions
   2.297 @@ -643,6 +783,10 @@
   2.298  
   2.299  /** Gets the libopus version string.
   2.300    *
   2.301 +  * Applications may look for the substring "-fixed" in the version string to
   2.302 +  * determine whether they have a fixed-point or floating-point build at
   2.303 +  * runtime.
   2.304 +  *
   2.305    * @returns Version string
   2.306    */
   2.307  OPUS_EXPORT const char *opus_get_version_string(void);
     3.1 --- a/VisualC/external/include/opus/opus_multistream.h	Sat Oct 05 10:33:14 2019 -0700
     3.2 +++ b/VisualC/external/include/opus/opus_multistream.h	Sun Oct 06 12:55:01 2019 +0300
     3.3 @@ -110,10 +110,10 @@
     3.4    * packets produced by the encoder. Some basic information, such as packet
     3.5    * duration, can be computed without any special negotiation.
     3.6    *
     3.7 -  * The format for multistream Opus packets is defined in the
     3.8 -  * <a href="http://tools.ietf.org/html/draft-terriberry-oggopus">Ogg
     3.9 -  * encapsulation specification</a> and is based on the self-delimited Opus
    3.10 -  * framing described in Appendix B of <a href="http://tools.ietf.org/html/rfc6716">RFC 6716</a>.
    3.11 +  * The format for multistream Opus packets is defined in
    3.12 +  * <a href="https://tools.ietf.org/html/rfc7845">RFC 7845</a>
    3.13 +  * and is based on the self-delimited Opus framing described in Appendix B of
    3.14 +  * <a href="https://tools.ietf.org/html/rfc6716">RFC 6716</a>.
    3.15    * Normal Opus packets are just a degenerate case of multistream Opus packets,
    3.16    * and can be encoded or decoded with the multistream API by setting
    3.17    * <code>streams</code> to <code>1</code> when initializing the encoder or
    3.18 @@ -140,7 +140,7 @@
    3.19    *
    3.20    * The output channels specified by the encoder
    3.21    * should use the
    3.22 -  * <a href="http://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-800004.3.9">Vorbis
    3.23 +  * <a href="https://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-810004.3.9">Vorbis
    3.24    * channel ordering</a>. A decoder may wish to apply an additional permutation
    3.25    * to the mapping the encoder used to achieve a different output channel
    3.26    * order (e.g. for outputing in WAV order).
    3.27 @@ -273,7 +273,7 @@
    3.28        unsigned char *mapping,
    3.29        int application,
    3.30        int *error
    3.31 -) OPUS_ARG_NONNULL(5);
    3.32 +) OPUS_ARG_NONNULL(4) OPUS_ARG_NONNULL(5) OPUS_ARG_NONNULL(6);
    3.33  
    3.34  /** Initialize a previously allocated multistream encoder state.
    3.35    * The memory pointed to by \a st must be at least the size returned by
    3.36 @@ -342,7 +342,7 @@
    3.37        int *coupled_streams,
    3.38        unsigned char *mapping,
    3.39        int application
    3.40 -) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6);
    3.41 +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(5) OPUS_ARG_NONNULL(6) OPUS_ARG_NONNULL(7);
    3.42  
    3.43  /** Encodes a multistream Opus frame.
    3.44    * @param st <tt>OpusMSEncoder*</tt>: Multistream encoder state.
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/VisualC/external/include/opus/opus_projection.h	Sun Oct 06 12:55:01 2019 +0300
     4.3 @@ -0,0 +1,568 @@
     4.4 +/* Copyright (c) 2017 Google Inc.
     4.5 +   Written by Andrew Allen */
     4.6 +/*
     4.7 +   Redistribution and use in source and binary forms, with or without
     4.8 +   modification, are permitted provided that the following conditions
     4.9 +   are met:
    4.10 +
    4.11 +   - Redistributions of source code must retain the above copyright
    4.12 +   notice, this list of conditions and the following disclaimer.
    4.13 +
    4.14 +   - Redistributions in binary form must reproduce the above copyright
    4.15 +   notice, this list of conditions and the following disclaimer in the
    4.16 +   documentation and/or other materials provided with the distribution.
    4.17 +
    4.18 +   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    4.19 +   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    4.20 +   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    4.21 +   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
    4.22 +   OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    4.23 +   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    4.24 +   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
    4.25 +   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
    4.26 +   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
    4.27 +   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    4.28 +   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    4.29 +*/
    4.30 +
    4.31 +/**
    4.32 + * @file opus_projection.h
    4.33 + * @brief Opus projection reference API
    4.34 + */
    4.35 +
    4.36 +#ifndef OPUS_PROJECTION_H
    4.37 +#define OPUS_PROJECTION_H
    4.38 +
    4.39 +#include "opus_multistream.h"
    4.40 +
    4.41 +#ifdef __cplusplus
    4.42 +extern "C" {
    4.43 +#endif
    4.44 +
    4.45 +/** @cond OPUS_INTERNAL_DOC */
    4.46 +
    4.47 +/** These are the actual encoder and decoder CTL ID numbers.
    4.48 +  * They should not be used directly by applications.c
    4.49 +  * In general, SETs should be even and GETs should be odd.*/
    4.50 +/**@{*/
    4.51 +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_GAIN_REQUEST    6001
    4.52 +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_SIZE_REQUEST    6003
    4.53 +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_REQUEST         6005
    4.54 +/**@}*/
    4.55 +
    4.56 +
    4.57 +/** @endcond */
    4.58 +
    4.59 +/** @defgroup opus_projection_ctls Projection specific encoder and decoder CTLs
    4.60 +  *
    4.61 +  * These are convenience macros that are specific to the
    4.62 +  * opus_projection_encoder_ctl() and opus_projection_decoder_ctl()
    4.63 +  * interface.
    4.64 +  * The CTLs from @ref opus_genericctls, @ref opus_encoderctls,
    4.65 +  * @ref opus_decoderctls, and @ref opus_multistream_ctls may be applied to a
    4.66 +  * projection encoder or decoder as well.
    4.67 +  */
    4.68 +/**@{*/
    4.69 +
    4.70 +/** Gets the gain (in dB. S7.8-format) of the demixing matrix from the encoder.
    4.71 +  * @param[out] x <tt>opus_int32 *</tt>: Returns the gain (in dB. S7.8-format)
    4.72 +  *                                      of the demixing matrix.
    4.73 +  * @hideinitializer
    4.74 +  */
    4.75 +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_GAIN(x) OPUS_PROJECTION_GET_DEMIXING_MATRIX_GAIN_REQUEST, __opus_check_int_ptr(x)
    4.76 +
    4.77 +
    4.78 +/** Gets the size in bytes of the demixing matrix from the encoder.
    4.79 +  * @param[out] x <tt>opus_int32 *</tt>: Returns the size in bytes of the
    4.80 +  *                                      demixing matrix.
    4.81 +  * @hideinitializer
    4.82 +  */
    4.83 +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_SIZE(x) OPUS_PROJECTION_GET_DEMIXING_MATRIX_SIZE_REQUEST, __opus_check_int_ptr(x)
    4.84 +
    4.85 +
    4.86 +/** Copies the demixing matrix to the supplied pointer location.
    4.87 +  * @param[out] x <tt>unsigned char *</tt>: Returns the demixing matrix to the
    4.88 +  *                                         supplied pointer location.
    4.89 +  * @param y <tt>opus_int32</tt>: The size in bytes of the reserved memory at the
    4.90 +  *                              pointer location.
    4.91 +  * @hideinitializer
    4.92 +  */
    4.93 +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX(x,y) OPUS_PROJECTION_GET_DEMIXING_MATRIX_REQUEST, x, __opus_check_int(y)
    4.94 +
    4.95 +
    4.96 +/**@}*/
    4.97 +
    4.98 +/** Opus projection encoder state.
    4.99 + * This contains the complete state of a projection Opus encoder.
   4.100 + * It is position independent and can be freely copied.
   4.101 + * @see opus_projection_ambisonics_encoder_create
   4.102 + */
   4.103 +typedef struct OpusProjectionEncoder OpusProjectionEncoder;
   4.104 +
   4.105 +
   4.106 +/** Opus projection decoder state.
   4.107 +  * This contains the complete state of a projection Opus decoder.
   4.108 +  * It is position independent and can be freely copied.
   4.109 +  * @see opus_projection_decoder_create
   4.110 +  * @see opus_projection_decoder_init
   4.111 +  */
   4.112 +typedef struct OpusProjectionDecoder OpusProjectionDecoder;
   4.113 +
   4.114 +
   4.115 +/**\name Projection encoder functions */
   4.116 +/**@{*/
   4.117 +
   4.118 +/** Gets the size of an OpusProjectionEncoder structure.
   4.119 +  * @param channels <tt>int</tt>: The total number of input channels to encode.
   4.120 +  *                               This must be no more than 255.
   4.121 +  * @param mapping_family <tt>int</tt>: The mapping family to use for selecting
   4.122 +  *                                     the appropriate projection.
   4.123 +  * @returns The size in bytes on success, or a negative error code
   4.124 +  *          (see @ref opus_errorcodes) on error.
   4.125 +  */
   4.126 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_projection_ambisonics_encoder_get_size(
   4.127 +    int channels,
   4.128 +    int mapping_family
   4.129 +);
   4.130 +
   4.131 +
   4.132 +/** Allocates and initializes a projection encoder state.
   4.133 +  * Call opus_projection_encoder_destroy() to release
   4.134 +  * this object when finished.
   4.135 +  * @param Fs <tt>opus_int32</tt>: Sampling rate of the input signal (in Hz).
   4.136 +  *                                This must be one of 8000, 12000, 16000,
   4.137 +  *                                24000, or 48000.
   4.138 +  * @param channels <tt>int</tt>: Number of channels in the input signal.
   4.139 +  *                               This must be at most 255.
   4.140 +  *                               It may be greater than the number of
   4.141 +  *                               coded channels (<code>streams +
   4.142 +  *                               coupled_streams</code>).
   4.143 +  * @param mapping_family <tt>int</tt>: The mapping family to use for selecting
   4.144 +  *                                     the appropriate projection.
   4.145 +  * @param[out] streams <tt>int *</tt>: The total number of streams that will
   4.146 +  *                                     be encoded from the input.
   4.147 +  * @param[out] coupled_streams <tt>int *</tt>: Number of coupled (2 channel)
   4.148 +  *                                 streams that will be encoded from the input.
   4.149 +  * @param application <tt>int</tt>: The target encoder application.
   4.150 +  *                                  This must be one of the following:
   4.151 +  * <dl>
   4.152 +  * <dt>#OPUS_APPLICATION_VOIP</dt>
   4.153 +  * <dd>Process signal for improved speech intelligibility.</dd>
   4.154 +  * <dt>#OPUS_APPLICATION_AUDIO</dt>
   4.155 +  * <dd>Favor faithfulness to the original input.</dd>
   4.156 +  * <dt>#OPUS_APPLICATION_RESTRICTED_LOWDELAY</dt>
   4.157 +  * <dd>Configure the minimum possible coding delay by disabling certain modes
   4.158 +  * of operation.</dd>
   4.159 +  * </dl>
   4.160 +  * @param[out] error <tt>int *</tt>: Returns #OPUS_OK on success, or an error
   4.161 +  *                                   code (see @ref opus_errorcodes) on
   4.162 +  *                                   failure.
   4.163 +  */
   4.164 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusProjectionEncoder *opus_projection_ambisonics_encoder_create(
   4.165 +    opus_int32 Fs,
   4.166 +    int channels,
   4.167 +    int mapping_family,
   4.168 +    int *streams,
   4.169 +    int *coupled_streams,
   4.170 +    int application,
   4.171 +    int *error
   4.172 +) OPUS_ARG_NONNULL(4) OPUS_ARG_NONNULL(5);
   4.173 +
   4.174 +
   4.175 +/** Initialize a previously allocated projection encoder state.
   4.176 +  * The memory pointed to by \a st must be at least the size returned by
   4.177 +  * opus_projection_ambisonics_encoder_get_size().
   4.178 +  * This is intended for applications which use their own allocator instead of
   4.179 +  * malloc.
   4.180 +  * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL.
   4.181 +  * @see opus_projection_ambisonics_encoder_create
   4.182 +  * @see opus_projection_ambisonics_encoder_get_size
   4.183 +  * @param st <tt>OpusProjectionEncoder*</tt>: Projection encoder state to initialize.
   4.184 +  * @param Fs <tt>opus_int32</tt>: Sampling rate of the input signal (in Hz).
   4.185 +  *                                This must be one of 8000, 12000, 16000,
   4.186 +  *                                24000, or 48000.
   4.187 +  * @param channels <tt>int</tt>: Number of channels in the input signal.
   4.188 +  *                               This must be at most 255.
   4.189 +  *                               It may be greater than the number of
   4.190 +  *                               coded channels (<code>streams +
   4.191 +  *                               coupled_streams</code>).
   4.192 +  * @param streams <tt>int</tt>: The total number of streams to encode from the
   4.193 +  *                              input.
   4.194 +  *                              This must be no more than the number of channels.
   4.195 +  * @param coupled_streams <tt>int</tt>: Number of coupled (2 channel) streams
   4.196 +  *                                      to encode.
   4.197 +  *                                      This must be no larger than the total
   4.198 +  *                                      number of streams.
   4.199 +  *                                      Additionally, The total number of
   4.200 +  *                                      encoded channels (<code>streams +
   4.201 +  *                                      coupled_streams</code>) must be no
   4.202 +  *                                      more than the number of input channels.
   4.203 +  * @param application <tt>int</tt>: The target encoder application.
   4.204 +  *                                  This must be one of the following:
   4.205 +  * <dl>
   4.206 +  * <dt>#OPUS_APPLICATION_VOIP</dt>
   4.207 +  * <dd>Process signal for improved speech intelligibility.</dd>
   4.208 +  * <dt>#OPUS_APPLICATION_AUDIO</dt>
   4.209 +  * <dd>Favor faithfulness to the original input.</dd>
   4.210 +  * <dt>#OPUS_APPLICATION_RESTRICTED_LOWDELAY</dt>
   4.211 +  * <dd>Configure the minimum possible coding delay by disabling certain modes
   4.212 +  * of operation.</dd>
   4.213 +  * </dl>
   4.214 +  * @returns #OPUS_OK on success, or an error code (see @ref opus_errorcodes)
   4.215 +  *          on failure.
   4.216 +  */
   4.217 +OPUS_EXPORT int opus_projection_ambisonics_encoder_init(
   4.218 +    OpusProjectionEncoder *st,
   4.219 +    opus_int32 Fs,
   4.220 +    int channels,
   4.221 +    int mapping_family,
   4.222 +    int *streams,
   4.223 +    int *coupled_streams,
   4.224 +    int application
   4.225 +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(5) OPUS_ARG_NONNULL(6);
   4.226 +
   4.227 +
   4.228 +/** Encodes a projection Opus frame.
   4.229 +  * @param st <tt>OpusProjectionEncoder*</tt>: Projection encoder state.
   4.230 +  * @param[in] pcm <tt>const opus_int16*</tt>: The input signal as interleaved
   4.231 +  *                                            samples.
   4.232 +  *                                            This must contain
   4.233 +  *                                            <code>frame_size*channels</code>
   4.234 +  *                                            samples.
   4.235 +  * @param frame_size <tt>int</tt>: Number of samples per channel in the input
   4.236 +  *                                 signal.
   4.237 +  *                                 This must be an Opus frame size for the
   4.238 +  *                                 encoder's sampling rate.
   4.239 +  *                                 For example, at 48 kHz the permitted values
   4.240 +  *                                 are 120, 240, 480, 960, 1920, and 2880.
   4.241 +  *                                 Passing in a duration of less than 10 ms
   4.242 +  *                                 (480 samples at 48 kHz) will prevent the
   4.243 +  *                                 encoder from using the LPC or hybrid modes.
   4.244 +  * @param[out] data <tt>unsigned char*</tt>: Output payload.
   4.245 +  *                                           This must contain storage for at
   4.246 +  *                                           least \a max_data_bytes.
   4.247 +  * @param [in] max_data_bytes <tt>opus_int32</tt>: Size of the allocated
   4.248 +  *                                                 memory for the output
   4.249 +  *                                                 payload. This may be
   4.250 +  *                                                 used to impose an upper limit on
   4.251 +  *                                                 the instant bitrate, but should
   4.252 +  *                                                 not be used as the only bitrate
   4.253 +  *                                                 control. Use #OPUS_SET_BITRATE to
   4.254 +  *                                                 control the bitrate.
   4.255 +  * @returns The length of the encoded packet (in bytes) on success or a
   4.256 +  *          negative error code (see @ref opus_errorcodes) on failure.
   4.257 +  */
   4.258 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_projection_encode(
   4.259 +    OpusProjectionEncoder *st,
   4.260 +    const opus_int16 *pcm,
   4.261 +    int frame_size,
   4.262 +    unsigned char *data,
   4.263 +    opus_int32 max_data_bytes
   4.264 +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4);
   4.265 +
   4.266 +
   4.267 +/** Encodes a projection Opus frame from floating point input.
   4.268 +  * @param st <tt>OpusProjectionEncoder*</tt>: Projection encoder state.
   4.269 +  * @param[in] pcm <tt>const float*</tt>: The input signal as interleaved
   4.270 +  *                                       samples with a normal range of
   4.271 +  *                                       +/-1.0.
   4.272 +  *                                       Samples with a range beyond +/-1.0
   4.273 +  *                                       are supported but will be clipped by
   4.274 +  *                                       decoders using the integer API and
   4.275 +  *                                       should only be used if it is known
   4.276 +  *                                       that the far end supports extended
   4.277 +  *                                       dynamic range.
   4.278 +  *                                       This must contain
   4.279 +  *                                       <code>frame_size*channels</code>
   4.280 +  *                                       samples.
   4.281 +  * @param frame_size <tt>int</tt>: Number of samples per channel in the input
   4.282 +  *                                 signal.
   4.283 +  *                                 This must be an Opus frame size for the
   4.284 +  *                                 encoder's sampling rate.
   4.285 +  *                                 For example, at 48 kHz the permitted values
   4.286 +  *                                 are 120, 240, 480, 960, 1920, and 2880.
   4.287 +  *                                 Passing in a duration of less than 10 ms
   4.288 +  *                                 (480 samples at 48 kHz) will prevent the
   4.289 +  *                                 encoder from using the LPC or hybrid modes.
   4.290 +  * @param[out] data <tt>unsigned char*</tt>: Output payload.
   4.291 +  *                                           This must contain storage for at
   4.292 +  *                                           least \a max_data_bytes.
   4.293 +  * @param [in] max_data_bytes <tt>opus_int32</tt>: Size of the allocated
   4.294 +  *                                                 memory for the output
   4.295 +  *                                                 payload. This may be
   4.296 +  *                                                 used to impose an upper limit on
   4.297 +  *                                                 the instant bitrate, but should
   4.298 +  *                                                 not be used as the only bitrate
   4.299 +  *                                                 control. Use #OPUS_SET_BITRATE to
   4.300 +  *                                                 control the bitrate.
   4.301 +  * @returns The length of the encoded packet (in bytes) on success or a
   4.302 +  *          negative error code (see @ref opus_errorcodes) on failure.
   4.303 +  */
   4.304 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_projection_encode_float(
   4.305 +    OpusProjectionEncoder *st,
   4.306 +    const float *pcm,
   4.307 +    int frame_size,
   4.308 +    unsigned char *data,
   4.309 +    opus_int32 max_data_bytes
   4.310 +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4);
   4.311 +
   4.312 +
   4.313 +/** Frees an <code>OpusProjectionEncoder</code> allocated by
   4.314 +  * opus_projection_ambisonics_encoder_create().
   4.315 +  * @param st <tt>OpusProjectionEncoder*</tt>: Projection encoder state to be freed.
   4.316 +  */
   4.317 +OPUS_EXPORT void opus_projection_encoder_destroy(OpusProjectionEncoder *st);
   4.318 +
   4.319 +
   4.320 +/** Perform a CTL function on a projection Opus encoder.
   4.321 +  *
   4.322 +  * Generally the request and subsequent arguments are generated by a
   4.323 +  * convenience macro.
   4.324 +  * @param st <tt>OpusProjectionEncoder*</tt>: Projection encoder state.
   4.325 +  * @param request This and all remaining parameters should be replaced by one
   4.326 +  *                of the convenience macros in @ref opus_genericctls,
   4.327 +  *                @ref opus_encoderctls, @ref opus_multistream_ctls, or
   4.328 +  *                @ref opus_projection_ctls
   4.329 +  * @see opus_genericctls
   4.330 +  * @see opus_encoderctls
   4.331 +  * @see opus_multistream_ctls
   4.332 +  * @see opus_projection_ctls
   4.333 +  */
   4.334 +OPUS_EXPORT int opus_projection_encoder_ctl(OpusProjectionEncoder *st, int request, ...) OPUS_ARG_NONNULL(1);
   4.335 +
   4.336 +
   4.337 +/**@}*/
   4.338 +
   4.339 +/**\name Projection decoder functions */
   4.340 +/**@{*/
   4.341 +
   4.342 +/** Gets the size of an <code>OpusProjectionDecoder</code> structure.
   4.343 +  * @param channels <tt>int</tt>: The total number of output channels.
   4.344 +  *                               This must be no more than 255.
   4.345 +  * @param streams <tt>int</tt>: The total number of streams coded in the
   4.346 +  *                              input.
   4.347 +  *                              This must be no more than 255.
   4.348 +  * @param coupled_streams <tt>int</tt>: Number streams to decode as coupled
   4.349 +  *                                      (2 channel) streams.
   4.350 +  *                                      This must be no larger than the total
   4.351 +  *                                      number of streams.
   4.352 +  *                                      Additionally, The total number of
   4.353 +  *                                      coded channels (<code>streams +
   4.354 +  *                                      coupled_streams</code>) must be no
   4.355 +  *                                      more than 255.
   4.356 +  * @returns The size in bytes on success, or a negative error code
   4.357 +  *          (see @ref opus_errorcodes) on error.
   4.358 +  */
   4.359 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_projection_decoder_get_size(
   4.360 +    int channels,
   4.361 +    int streams,
   4.362 +    int coupled_streams
   4.363 +);
   4.364 +
   4.365 +
   4.366 +/** Allocates and initializes a projection decoder state.
   4.367 +  * Call opus_projection_decoder_destroy() to release
   4.368 +  * this object when finished.
   4.369 +  * @param Fs <tt>opus_int32</tt>: Sampling rate to decode at (in Hz).
   4.370 +  *                                This must be one of 8000, 12000, 16000,
   4.371 +  *                                24000, or 48000.
   4.372 +  * @param channels <tt>int</tt>: Number of channels to output.
   4.373 +  *                               This must be at most 255.
   4.374 +  *                               It may be different from the number of coded
   4.375 +  *                               channels (<code>streams +
   4.376 +  *                               coupled_streams</code>).
   4.377 +  * @param streams <tt>int</tt>: The total number of streams coded in the
   4.378 +  *                              input.
   4.379 +  *                              This must be no more than 255.
   4.380 +  * @param coupled_streams <tt>int</tt>: Number of streams to decode as coupled
   4.381 +  *                                      (2 channel) streams.
   4.382 +  *                                      This must be no larger than the total
   4.383 +  *                                      number of streams.
   4.384 +  *                                      Additionally, The total number of
   4.385 +  *                                      coded channels (<code>streams +
   4.386 +  *                                      coupled_streams</code>) must be no
   4.387 +  *                                      more than 255.
   4.388 +  * @param[in] demixing_matrix <tt>const unsigned char[demixing_matrix_size]</tt>: Demixing matrix
   4.389 +  *                         that mapping from coded channels to output channels,
   4.390 +  *                         as described in @ref opus_projection and
   4.391 +  *                         @ref opus_projection_ctls.
   4.392 +  * @param demixing_matrix_size <tt>opus_int32</tt>: The size in bytes of the
   4.393 +  *                                                  demixing matrix, as
   4.394 +  *                                                  described in @ref
   4.395 +  *                                                  opus_projection_ctls.
   4.396 +  * @param[out] error <tt>int *</tt>: Returns #OPUS_OK on success, or an error
   4.397 +  *                                   code (see @ref opus_errorcodes) on
   4.398 +  *                                   failure.
   4.399 +  */
   4.400 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusProjectionDecoder *opus_projection_decoder_create(
   4.401 +    opus_int32 Fs,
   4.402 +    int channels,
   4.403 +    int streams,
   4.404 +    int coupled_streams,
   4.405 +    unsigned char *demixing_matrix,
   4.406 +    opus_int32 demixing_matrix_size,
   4.407 +    int *error
   4.408 +) OPUS_ARG_NONNULL(5);
   4.409 +
   4.410 +
   4.411 +/** Intialize a previously allocated projection decoder state object.
   4.412 +  * The memory pointed to by \a st must be at least the size returned by
   4.413 +  * opus_projection_decoder_get_size().
   4.414 +  * This is intended for applications which use their own allocator instead of
   4.415 +  * malloc.
   4.416 +  * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL.
   4.417 +  * @see opus_projection_decoder_create
   4.418 +  * @see opus_projection_deocder_get_size
   4.419 +  * @param st <tt>OpusProjectionDecoder*</tt>: Projection encoder state to initialize.
   4.420 +  * @param Fs <tt>opus_int32</tt>: Sampling rate to decode at (in Hz).
   4.421 +  *                                This must be one of 8000, 12000, 16000,
   4.422 +  *                                24000, or 48000.
   4.423 +  * @param channels <tt>int</tt>: Number of channels to output.
   4.424 +  *                               This must be at most 255.
   4.425 +  *                               It may be different from the number of coded
   4.426 +  *                               channels (<code>streams +
   4.427 +  *                               coupled_streams</code>).
   4.428 +  * @param streams <tt>int</tt>: The total number of streams coded in the
   4.429 +  *                              input.
   4.430 +  *                              This must be no more than 255.
   4.431 +  * @param coupled_streams <tt>int</tt>: Number of streams to decode as coupled
   4.432 +  *                                      (2 channel) streams.
   4.433 +  *                                      This must be no larger than the total
   4.434 +  *                                      number of streams.
   4.435 +  *                                      Additionally, The total number of
   4.436 +  *                                      coded channels (<code>streams +
   4.437 +  *                                      coupled_streams</code>) must be no
   4.438 +  *                                      more than 255.
   4.439 +  * @param[in] demixing_matrix <tt>const unsigned char[demixing_matrix_size]</tt>: Demixing matrix
   4.440 +  *                         that mapping from coded channels to output channels,
   4.441 +  *                         as described in @ref opus_projection and
   4.442 +  *                         @ref opus_projection_ctls.
   4.443 +  * @param demixing_matrix_size <tt>opus_int32</tt>: The size in bytes of the
   4.444 +  *                                                  demixing matrix, as
   4.445 +  *                                                  described in @ref
   4.446 +  *                                                  opus_projection_ctls.
   4.447 +  * @returns #OPUS_OK on success, or an error code (see @ref opus_errorcodes)
   4.448 +  *          on failure.
   4.449 +  */
   4.450 +OPUS_EXPORT int opus_projection_decoder_init(
   4.451 +    OpusProjectionDecoder *st,
   4.452 +    opus_int32 Fs,
   4.453 +    int channels,
   4.454 +    int streams,
   4.455 +    int coupled_streams,
   4.456 +    unsigned char *demixing_matrix,
   4.457 +    opus_int32 demixing_matrix_size
   4.458 +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6);
   4.459 +
   4.460 +
   4.461 +/** Decode a projection Opus packet.
   4.462 +  * @param st <tt>OpusProjectionDecoder*</tt>: Projection decoder state.
   4.463 +  * @param[in] data <tt>const unsigned char*</tt>: Input payload.
   4.464 +  *                                                Use a <code>NULL</code>
   4.465 +  *                                                pointer to indicate packet
   4.466 +  *                                                loss.
   4.467 +  * @param len <tt>opus_int32</tt>: Number of bytes in payload.
   4.468 +  * @param[out] pcm <tt>opus_int16*</tt>: Output signal, with interleaved
   4.469 +  *                                       samples.
   4.470 +  *                                       This must contain room for
   4.471 +  *                                       <code>frame_size*channels</code>
   4.472 +  *                                       samples.
   4.473 +  * @param frame_size <tt>int</tt>: The number of samples per channel of
   4.474 +  *                                 available space in \a pcm.
   4.475 +  *                                 If this is less than the maximum packet duration
   4.476 +  *                                 (120 ms; 5760 for 48kHz), this function will not be capable
   4.477 +  *                                 of decoding some packets. In the case of PLC (data==NULL)
   4.478 +  *                                 or FEC (decode_fec=1), then frame_size needs to be exactly
   4.479 +  *                                 the duration of audio that is missing, otherwise the
   4.480 +  *                                 decoder will not be in the optimal state to decode the
   4.481 +  *                                 next incoming packet. For the PLC and FEC cases, frame_size
   4.482 +  *                                 <b>must</b> be a multiple of 2.5 ms.
   4.483 +  * @param decode_fec <tt>int</tt>: Flag (0 or 1) to request that any in-band
   4.484 +  *                                 forward error correction data be decoded.
   4.485 +  *                                 If no such data is available, the frame is
   4.486 +  *                                 decoded as if it were lost.
   4.487 +  * @returns Number of samples decoded on success or a negative error code
   4.488 +  *          (see @ref opus_errorcodes) on failure.
   4.489 +  */
   4.490 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_projection_decode(
   4.491 +    OpusProjectionDecoder *st,
   4.492 +    const unsigned char *data,
   4.493 +    opus_int32 len,
   4.494 +    opus_int16 *pcm,
   4.495 +    int frame_size,
   4.496 +    int decode_fec
   4.497 +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4);
   4.498 +
   4.499 +
   4.500 +/** Decode a projection Opus packet with floating point output.
   4.501 +  * @param st <tt>OpusProjectionDecoder*</tt>: Projection decoder state.
   4.502 +  * @param[in] data <tt>const unsigned char*</tt>: Input payload.
   4.503 +  *                                                Use a <code>NULL</code>
   4.504 +  *                                                pointer to indicate packet
   4.505 +  *                                                loss.
   4.506 +  * @param len <tt>opus_int32</tt>: Number of bytes in payload.
   4.507 +  * @param[out] pcm <tt>opus_int16*</tt>: Output signal, with interleaved
   4.508 +  *                                       samples.
   4.509 +  *                                       This must contain room for
   4.510 +  *                                       <code>frame_size*channels</code>
   4.511 +  *                                       samples.
   4.512 +  * @param frame_size <tt>int</tt>: The number of samples per channel of
   4.513 +  *                                 available space in \a pcm.
   4.514 +  *                                 If this is less than the maximum packet duration
   4.515 +  *                                 (120 ms; 5760 for 48kHz), this function will not be capable
   4.516 +  *                                 of decoding some packets. In the case of PLC (data==NULL)
   4.517 +  *                                 or FEC (decode_fec=1), then frame_size needs to be exactly
   4.518 +  *                                 the duration of audio that is missing, otherwise the
   4.519 +  *                                 decoder will not be in the optimal state to decode the
   4.520 +  *                                 next incoming packet. For the PLC and FEC cases, frame_size
   4.521 +  *                                 <b>must</b> be a multiple of 2.5 ms.
   4.522 +  * @param decode_fec <tt>int</tt>: Flag (0 or 1) to request that any in-band
   4.523 +  *                                 forward error correction data be decoded.
   4.524 +  *                                 If no such data is available, the frame is
   4.525 +  *                                 decoded as if it were lost.
   4.526 +  * @returns Number of samples decoded on success or a negative error code
   4.527 +  *          (see @ref opus_errorcodes) on failure.
   4.528 +  */
   4.529 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_projection_decode_float(
   4.530 +    OpusProjectionDecoder *st,
   4.531 +    const unsigned char *data,
   4.532 +    opus_int32 len,
   4.533 +    float *pcm,
   4.534 +    int frame_size,
   4.535 +    int decode_fec
   4.536 +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4);
   4.537 +
   4.538 +
   4.539 +/** Perform a CTL function on a projection Opus decoder.
   4.540 +  *
   4.541 +  * Generally the request and subsequent arguments are generated by a
   4.542 +  * convenience macro.
   4.543 +  * @param st <tt>OpusProjectionDecoder*</tt>: Projection decoder state.
   4.544 +  * @param request This and all remaining parameters should be replaced by one
   4.545 +  *                of the convenience macros in @ref opus_genericctls,
   4.546 +  *                @ref opus_decoderctls, @ref opus_multistream_ctls, or
   4.547 +  *                @ref opus_projection_ctls.
   4.548 +  * @see opus_genericctls
   4.549 +  * @see opus_decoderctls
   4.550 +  * @see opus_multistream_ctls
   4.551 +  * @see opus_projection_ctls
   4.552 +  */
   4.553 +OPUS_EXPORT int opus_projection_decoder_ctl(OpusProjectionDecoder *st, int request, ...) OPUS_ARG_NONNULL(1);
   4.554 +
   4.555 +
   4.556 +/** Frees an <code>OpusProjectionDecoder</code> allocated by
   4.557 +  * opus_projection_decoder_create().
   4.558 +  * @param st <tt>OpusProjectionDecoder</tt>: Projection decoder state to be freed.
   4.559 +  */
   4.560 +OPUS_EXPORT void opus_projection_decoder_destroy(OpusProjectionDecoder *st);
   4.561 +
   4.562 +
   4.563 +/**@}*/
   4.564 +
   4.565 +/**@}*/
   4.566 +
   4.567 +#ifdef __cplusplus
   4.568 +}
   4.569 +#endif
   4.570 +
   4.571 +#endif /* OPUS_PROJECTION_H */
     5.1 --- a/VisualC/external/include/opus/opus_types.h	Sat Oct 05 10:33:14 2019 -0700
     5.2 +++ b/VisualC/external/include/opus/opus_types.h	Sun Oct 06 12:55:01 2019 +0300
     5.3 @@ -33,14 +33,29 @@
     5.4  #ifndef OPUS_TYPES_H
     5.5  #define OPUS_TYPES_H
     5.6  
     5.7 +#define opus_int         int                     /* used for counters etc; at least 16 bits */
     5.8 +#define opus_int64       long long
     5.9 +#define opus_int8        signed char
    5.10 +
    5.11 +#define opus_uint        unsigned int            /* used for counters etc; at least 16 bits */
    5.12 +#define opus_uint64      unsigned long long
    5.13 +#define opus_uint8       unsigned char
    5.14 +
    5.15  /* Use the real stdint.h if it's there (taken from Paul Hsieh's pstdint.h) */
    5.16 -#if (defined(__STDC__) && __STDC__ && __STDC_VERSION__ >= 199901L) || (defined(__GNUC__) && (defined(_STDINT_H) || defined(_STDINT_H_)) || defined (HAVE_STDINT_H))
    5.17 +#if (defined(__STDC__) && __STDC__ && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || (defined(__GNUC__) && (defined(_STDINT_H) || defined(_STDINT_H_)) || defined (HAVE_STDINT_H))
    5.18  #include <stdint.h>
    5.19 -
    5.20 +#  undef opus_int64
    5.21 +#  undef opus_int8
    5.22 +#  undef opus_uint64
    5.23 +#  undef opus_uint8
    5.24 +   typedef int8_t opus_int8;
    5.25 +   typedef uint8_t opus_uint8;
    5.26     typedef int16_t opus_int16;
    5.27     typedef uint16_t opus_uint16;
    5.28     typedef int32_t opus_int32;
    5.29     typedef uint32_t opus_uint32;
    5.30 +   typedef int64_t opus_int64;
    5.31 +   typedef uint64_t opus_uint64;
    5.32  #elif defined(_WIN32)
    5.33  
    5.34  #  if defined(__CYGWIN__)
    5.35 @@ -148,12 +163,4 @@
    5.36  
    5.37  #endif
    5.38  
    5.39 -#define opus_int         int                     /* used for counters etc; at least 16 bits */
    5.40 -#define opus_int64       long long
    5.41 -#define opus_int8        signed char
    5.42 -
    5.43 -#define opus_uint        unsigned int            /* used for counters etc; at least 16 bits */
    5.44 -#define opus_uint64      unsigned long long
    5.45 -#define opus_uint8       unsigned char
    5.46 -
    5.47  #endif  /* OPUS_TYPES_H */
     6.1 --- a/VisualC/external/lib/x64/LICENSE.opus.txt	Sat Oct 05 10:33:14 2019 -0700
     6.2 +++ b/VisualC/external/lib/x64/LICENSE.opus.txt	Sun Oct 06 12:55:01 2019 +0300
     6.3 @@ -18,7 +18,7 @@
     6.4  notice, this list of conditions and the following disclaimer in the
     6.5  documentation and/or other materials provided with the distribution.
     6.6  
     6.7 -- Neither the name of Internet Society, IETF or IETF Trust, nor the 
     6.8 +- Neither the name of Internet Society, IETF or IETF Trust, nor the
     6.9  names of specific contributors, may be used to endorse or promote
    6.10  products derived from this software without specific prior written
    6.11  permission.
     7.1 Binary file VisualC/external/lib/x64/libopus-0.dll has changed
     8.1 Binary file VisualC/external/lib/x64/libopusfile-0.dll has changed
     9.1 --- a/VisualC/external/lib/x86/LICENSE.opus.txt	Sat Oct 05 10:33:14 2019 -0700
     9.2 +++ b/VisualC/external/lib/x86/LICENSE.opus.txt	Sun Oct 06 12:55:01 2019 +0300
     9.3 @@ -18,7 +18,7 @@
     9.4  notice, this list of conditions and the following disclaimer in the
     9.5  documentation and/or other materials provided with the distribution.
     9.6  
     9.7 -- Neither the name of Internet Society, IETF or IETF Trust, nor the 
     9.8 +- Neither the name of Internet Society, IETF or IETF Trust, nor the
     9.9  names of specific contributors, may be used to endorse or promote
    9.10  products derived from this software without specific prior written
    9.11  permission.
    10.1 Binary file VisualC/external/lib/x86/libopus-0.dll has changed
    11.1 Binary file VisualC/external/lib/x86/libopusfile-0.dll has changed
    12.1 --- a/Xcode/Frameworks/Opus.framework/Versions/A/Headers/opus.h	Sat Oct 05 10:33:14 2019 -0700
    12.2 +++ b/Xcode/Frameworks/Opus.framework/Versions/A/Headers/opus.h	Sun Oct 06 12:55:01 2019 +0300
    12.3 @@ -142,7 +142,7 @@
    12.4    *
    12.5    * opus_encode() and opus_encode_float() return the number of bytes actually written to the packet.
    12.6    * The return value <b>can be negative</b>, which indicates that an error has occurred. If the return value
    12.7 -  * is 1 byte, then the packet does not need to be transmitted (DTX).
    12.8 +  * is 2 bytes or less, then the packet does not need to be transmitted (DTX).
    12.9    *
   12.10    * Once the encoder state if no longer needed, it can be destroyed with
   12.11    *
   12.12 @@ -531,7 +531,7 @@
   12.13     const unsigned char *frames[48],
   12.14     opus_int16 size[48],
   12.15     int *payload_offset
   12.16 -) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4);
   12.17 +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(5);
   12.18  
   12.19  /** Gets the bandwidth of an Opus packet.
   12.20    * @param [in] data <tt>char*</tt>: Opus packet
   12.21 @@ -592,6 +592,20 @@
   12.22    * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type
   12.23    */
   12.24  OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decoder_get_nb_samples(const OpusDecoder *dec, const unsigned char packet[], opus_int32 len) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2);
   12.25 +
   12.26 +/** Applies soft-clipping to bring a float signal within the [-1,1] range. If
   12.27 +  * the signal is already in that range, nothing is done. If there are values
   12.28 +  * outside of [-1,1], then the signal is clipped as smoothly as possible to
   12.29 +  * both fit in the range and avoid creating excessive distortion in the
   12.30 +  * process.
   12.31 +  * @param [in,out] pcm <tt>float*</tt>: Input PCM and modified PCM
   12.32 +  * @param [in] frame_size <tt>int</tt> Number of samples per channel to process
   12.33 +  * @param [in] channels <tt>int</tt>: Number of channels
   12.34 +  * @param [in,out] softclip_mem <tt>float*</tt>: State memory for the soft clipping process (one float per channel, initialized to zero)
   12.35 +  */
   12.36 +OPUS_EXPORT void opus_pcm_soft_clip(float *pcm, int frame_size, int channels, float *softclip_mem);
   12.37 +
   12.38 +
   12.39  /**@}*/
   12.40  
   12.41  /** @defgroup opus_repacketizer Repacketizer
   12.42 @@ -602,7 +616,10 @@
   12.43    * merged. Splitting valid Opus packets is always guaranteed to succeed,
   12.44    * whereas merging valid packets only succeeds if all frames have the same
   12.45    * mode, bandwidth, and frame size, and when the total duration of the merged
   12.46 -  * packet is no more than 120 ms.
   12.47 +  * packet is no more than 120 ms. The 120 ms limit comes from the
   12.48 +  * specification and limits decoder memory requirements at a point where
   12.49 +  * framing overhead becomes negligible.
   12.50 +  *
   12.51    * The repacketizer currently only operates on elementary Opus
   12.52    * streams. It will not manipualte multistream packets successfully, except in
   12.53    * the degenerate case where they consist of data from a single stream.
   12.54 @@ -897,6 +914,64 @@
   12.55    */
   12.56  OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_repacketizer_out(OpusRepacketizer *rp, unsigned char *data, opus_int32 maxlen) OPUS_ARG_NONNULL(1);
   12.57  
   12.58 +/** Pads a given Opus packet to a larger size (possibly changing the TOC sequence).
   12.59 +  * @param[in,out] data <tt>const unsigned char*</tt>: The buffer containing the
   12.60 +  *                                                   packet to pad.
   12.61 +  * @param len <tt>opus_int32</tt>: The size of the packet.
   12.62 +  *                                 This must be at least 1.
   12.63 +  * @param new_len <tt>opus_int32</tt>: The desired size of the packet after padding.
   12.64 +  *                                 This must be at least as large as len.
   12.65 +  * @returns an error code
   12.66 +  * @retval #OPUS_OK \a on success.
   12.67 +  * @retval #OPUS_BAD_ARG \a len was less than 1 or new_len was less than len.
   12.68 +  * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet.
   12.69 +  */
   12.70 +OPUS_EXPORT int opus_packet_pad(unsigned char *data, opus_int32 len, opus_int32 new_len);
   12.71 +
   12.72 +/** Remove all padding from a given Opus packet and rewrite the TOC sequence to
   12.73 +  * minimize space usage.
   12.74 +  * @param[in,out] data <tt>const unsigned char*</tt>: The buffer containing the
   12.75 +  *                                                   packet to strip.
   12.76 +  * @param len <tt>opus_int32</tt>: The size of the packet.
   12.77 +  *                                 This must be at least 1.
   12.78 +  * @returns The new size of the output packet on success, or an error code
   12.79 +  *          on failure.
   12.80 +  * @retval #OPUS_BAD_ARG \a len was less than 1.
   12.81 +  * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet.
   12.82 +  */
   12.83 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_packet_unpad(unsigned char *data, opus_int32 len);
   12.84 +
   12.85 +/** Pads a given Opus multi-stream packet to a larger size (possibly changing the TOC sequence).
   12.86 +  * @param[in,out] data <tt>const unsigned char*</tt>: The buffer containing the
   12.87 +  *                                                   packet to pad.
   12.88 +  * @param len <tt>opus_int32</tt>: The size of the packet.
   12.89 +  *                                 This must be at least 1.
   12.90 +  * @param new_len <tt>opus_int32</tt>: The desired size of the packet after padding.
   12.91 +  *                                 This must be at least 1.
   12.92 +  * @param nb_streams <tt>opus_int32</tt>: The number of streams (not channels) in the packet.
   12.93 +  *                                 This must be at least as large as len.
   12.94 +  * @returns an error code
   12.95 +  * @retval #OPUS_OK \a on success.
   12.96 +  * @retval #OPUS_BAD_ARG \a len was less than 1.
   12.97 +  * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet.
   12.98 +  */
   12.99 +OPUS_EXPORT int opus_multistream_packet_pad(unsigned char *data, opus_int32 len, opus_int32 new_len, int nb_streams);
  12.100 +
  12.101 +/** Remove all padding from a given Opus multi-stream packet and rewrite the TOC sequence to
  12.102 +  * minimize space usage.
  12.103 +  * @param[in,out] data <tt>const unsigned char*</tt>: The buffer containing the
  12.104 +  *                                                   packet to strip.
  12.105 +  * @param len <tt>opus_int32</tt>: The size of the packet.
  12.106 +  *                                 This must be at least 1.
  12.107 +  * @param nb_streams <tt>opus_int32</tt>: The number of streams (not channels) in the packet.
  12.108 +  *                                 This must be at least 1.
  12.109 +  * @returns The new size of the output packet on success, or an error code
  12.110 +  *          on failure.
  12.111 +  * @retval #OPUS_BAD_ARG \a len was less than 1 or new_len was less than len.
  12.112 +  * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet.
  12.113 +  */
  12.114 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_packet_unpad(unsigned char *data, opus_int32 len, int nb_streams);
  12.115 +
  12.116  /**@}*/
  12.117  
  12.118  #ifdef __cplusplus
    13.1 --- a/Xcode/Frameworks/Opus.framework/Versions/A/Headers/opus_defines.h	Sat Oct 05 10:33:14 2019 -0700
    13.2 +++ b/Xcode/Frameworks/Opus.framework/Versions/A/Headers/opus_defines.h	Sun Oct 06 12:55:01 2019 +0300
    13.3 @@ -46,7 +46,7 @@
    13.4  #define OPUS_OK                0
    13.5  /** One or more invalid/out of range arguments @hideinitializer*/
    13.6  #define OPUS_BAD_ARG          -1
    13.7 -/** The mode struct passed is invalid @hideinitializer*/
    13.8 +/** Not enough bytes allocated in the buffer @hideinitializer*/
    13.9  #define OPUS_BUFFER_TOO_SMALL -2
   13.10  /** An internal error was detected @hideinitializer*/
   13.11  #define OPUS_INTERNAL_ERROR   -3
   13.12 @@ -98,6 +98,18 @@
   13.13  # define OPUS_RESTRICT restrict
   13.14  #endif
   13.15  
   13.16 +#if (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) )
   13.17 +# if OPUS_GNUC_PREREQ(2,7)
   13.18 +#  define OPUS_INLINE __inline__
   13.19 +# elif (defined(_MSC_VER))
   13.20 +#  define OPUS_INLINE __inline
   13.21 +# else
   13.22 +#  define OPUS_INLINE
   13.23 +# endif
   13.24 +#else
   13.25 +# define OPUS_INLINE inline
   13.26 +#endif
   13.27 +
   13.28  /**Warning attributes for opus functions
   13.29    * NONNULL is not used in OPUS_BUILD to avoid the compiler optimizing out
   13.30    * some paranoid null checks. */
   13.31 @@ -148,15 +160,24 @@
   13.32  #define OPUS_GET_GAIN_REQUEST                4045 /* Should have been 4035 */
   13.33  #define OPUS_SET_LSB_DEPTH_REQUEST           4036
   13.34  #define OPUS_GET_LSB_DEPTH_REQUEST           4037
   13.35 +#define OPUS_GET_LAST_PACKET_DURATION_REQUEST 4039
   13.36 +#define OPUS_SET_EXPERT_FRAME_DURATION_REQUEST 4040
   13.37 +#define OPUS_GET_EXPERT_FRAME_DURATION_REQUEST 4041
   13.38 +#define OPUS_SET_PREDICTION_DISABLED_REQUEST 4042
   13.39 +#define OPUS_GET_PREDICTION_DISABLED_REQUEST 4043
   13.40 +/* Don't use 4045, it's already taken by OPUS_GET_GAIN_REQUEST */
   13.41 +#define OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST 4046
   13.42 +#define OPUS_GET_PHASE_INVERSION_DISABLED_REQUEST 4047
   13.43 +#define OPUS_GET_IN_DTX_REQUEST              4049
   13.44  
   13.45 -#define OPUS_GET_LAST_PACKET_DURATION_REQUEST 4039
   13.46 -
   13.47 -/* Don't use 4045, it's already taken by OPUS_GET_GAIN_REQUEST */
   13.48 +/** Defines for the presence of extended APIs. */
   13.49 +#define OPUS_HAVE_OPUS_PROJECTION_H
   13.50  
   13.51  /* Macros to trigger compilation errors when the wrong types are provided to a CTL */
   13.52  #define __opus_check_int(x) (((void)((x) == (opus_int32)0)), (opus_int32)(x))
   13.53  #define __opus_check_int_ptr(ptr) ((ptr) + ((ptr) - (opus_int32*)(ptr)))
   13.54  #define __opus_check_uint_ptr(ptr) ((ptr) + ((ptr) - (opus_uint32*)(ptr)))
   13.55 +#define __opus_check_val16_ptr(ptr) ((ptr) + ((ptr) - (opus_val16*)(ptr)))
   13.56  /** @endcond */
   13.57  
   13.58  /** @defgroup opus_ctlvalues Pre-defined values for CTL interface
   13.59 @@ -185,6 +206,17 @@
   13.60  #define OPUS_BANDWIDTH_SUPERWIDEBAND         1104 /**<12 kHz bandpass @hideinitializer*/
   13.61  #define OPUS_BANDWIDTH_FULLBAND              1105 /**<20 kHz bandpass @hideinitializer*/
   13.62  
   13.63 +#define OPUS_FRAMESIZE_ARG                   5000 /**< Select frame size from the argument (default) */
   13.64 +#define OPUS_FRAMESIZE_2_5_MS                5001 /**< Use 2.5 ms frames */
   13.65 +#define OPUS_FRAMESIZE_5_MS                  5002 /**< Use 5 ms frames */
   13.66 +#define OPUS_FRAMESIZE_10_MS                 5003 /**< Use 10 ms frames */
   13.67 +#define OPUS_FRAMESIZE_20_MS                 5004 /**< Use 20 ms frames */
   13.68 +#define OPUS_FRAMESIZE_40_MS                 5005 /**< Use 40 ms frames */
   13.69 +#define OPUS_FRAMESIZE_60_MS                 5006 /**< Use 60 ms frames */
   13.70 +#define OPUS_FRAMESIZE_80_MS                 5007 /**< Use 80 ms frames */
   13.71 +#define OPUS_FRAMESIZE_100_MS                5008 /**< Use 100 ms frames */
   13.72 +#define OPUS_FRAMESIZE_120_MS                5009 /**< Use 120 ms frames */
   13.73 +
   13.74  /**@}*/
   13.75  
   13.76  
   13.77 @@ -250,7 +282,6 @@
   13.78  /** Enables or disables variable bitrate (VBR) in the encoder.
   13.79    * The configured bitrate may not be met exactly because frames must
   13.80    * be an integer number of bytes in length.
   13.81 -  * @warning Only the MDCT mode of Opus can provide hard CBR behavior.
   13.82    * @see OPUS_GET_VBR
   13.83    * @see OPUS_SET_VBR_CONSTRAINT
   13.84    * @param[in] x <tt>opus_int32</tt>: Allowed values:
   13.85 @@ -430,14 +461,6 @@
   13.86    * @hideinitializer */
   13.87  #define OPUS_GET_APPLICATION(x) OPUS_GET_APPLICATION_REQUEST, __opus_check_int_ptr(x)
   13.88  
   13.89 -/** Gets the sampling rate the encoder or decoder was initialized with.
   13.90 -  * This simply returns the <code>Fs</code> value passed to opus_encoder_init()
   13.91 -  * or opus_decoder_init().
   13.92 -  * @param[out] x <tt>opus_int32 *</tt>: Sampling rate of encoder or decoder.
   13.93 -  * @hideinitializer
   13.94 -  */
   13.95 -#define OPUS_GET_SAMPLE_RATE(x) OPUS_GET_SAMPLE_RATE_REQUEST, __opus_check_int_ptr(x)
   13.96 -
   13.97  /** Gets the total samples of delay added by the entire codec.
   13.98    * This can be queried by the encoder and then the provided number of samples can be
   13.99    * skipped on from the start of the decoder's output to provide time aligned input
  13.100 @@ -474,9 +497,9 @@
  13.101  #define OPUS_GET_INBAND_FEC(x) OPUS_GET_INBAND_FEC_REQUEST, __opus_check_int_ptr(x)
  13.102  
  13.103  /** Configures the encoder's expected packet loss percentage.
  13.104 -  * Higher values with trigger progressively more loss resistant behavior in the encoder
  13.105 -  * at the expense of quality at a given bitrate in the lossless case, but greater quality
  13.106 -  * under loss.
  13.107 +  * Higher values trigger progressively more loss resistant behavior in the encoder
  13.108 +  * at the expense of quality at a given bitrate in the absence of packet loss, but
  13.109 +  * greater quality under loss.
  13.110    * @see OPUS_GET_PACKET_LOSS_PERC
  13.111    * @param[in] x <tt>opus_int32</tt>:   Loss percentage in the range 0-100, inclusive (default: 0).
  13.112    * @hideinitializer */
  13.113 @@ -508,7 +531,19 @@
  13.114    * @hideinitializer */
  13.115  #define OPUS_GET_DTX(x) OPUS_GET_DTX_REQUEST, __opus_check_int_ptr(x)
  13.116  /** Configures the depth of signal being encoded.
  13.117 +  *
  13.118    * This is a hint which helps the encoder identify silence and near-silence.
  13.119 +  * It represents the number of significant bits of linear intensity below
  13.120 +  * which the signal contains ignorable quantization or other noise.
  13.121 +  *
  13.122 +  * For example, OPUS_SET_LSB_DEPTH(14) would be an appropriate setting
  13.123 +  * for G.711 u-law input. OPUS_SET_LSB_DEPTH(16) would be appropriate
  13.124 +  * for 16-bit linear pcm input with opus_encode_float().
  13.125 +  *
  13.126 +  * When using opus_encode() instead of opus_encode_float(), or when libopus
  13.127 +  * is compiled for fixed-point, the encoder uses the minimum of the value
  13.128 +  * set here and the value 16.
  13.129 +  *
  13.130    * @see OPUS_GET_LSB_DEPTH
  13.131    * @param[in] x <tt>opus_int32</tt>: Input precision in bits, between 8 and 24
  13.132    *                                   (default: 24).
  13.133 @@ -521,10 +556,68 @@
  13.134    * @hideinitializer */
  13.135  #define OPUS_GET_LSB_DEPTH(x) OPUS_GET_LSB_DEPTH_REQUEST, __opus_check_int_ptr(x)
  13.136  
  13.137 -/** Gets the duration (in samples) of the last packet successfully decoded or concealed.
  13.138 -  * @param[out] x <tt>opus_int32 *</tt>: Number of samples (at current sampling rate).
  13.139 +/** Configures the encoder's use of variable duration frames.
  13.140 +  * When variable duration is enabled, the encoder is free to use a shorter frame
  13.141 +  * size than the one requested in the opus_encode*() call.
  13.142 +  * It is then the user's responsibility
  13.143 +  * to verify how much audio was encoded by checking the ToC byte of the encoded
  13.144 +  * packet. The part of the audio that was not encoded needs to be resent to the
  13.145 +  * encoder for the next call. Do not use this option unless you <b>really</b>
  13.146 +  * know what you are doing.
  13.147 +  * @see OPUS_GET_EXPERT_FRAME_DURATION
  13.148 +  * @param[in] x <tt>opus_int32</tt>: Allowed values:
  13.149 +  * <dl>
  13.150 +  * <dt>OPUS_FRAMESIZE_ARG</dt><dd>Select frame size from the argument (default).</dd>
  13.151 +  * <dt>OPUS_FRAMESIZE_2_5_MS</dt><dd>Use 2.5 ms frames.</dd>
  13.152 +  * <dt>OPUS_FRAMESIZE_5_MS</dt><dd>Use 5 ms frames.</dd>
  13.153 +  * <dt>OPUS_FRAMESIZE_10_MS</dt><dd>Use 10 ms frames.</dd>
  13.154 +  * <dt>OPUS_FRAMESIZE_20_MS</dt><dd>Use 20 ms frames.</dd>
  13.155 +  * <dt>OPUS_FRAMESIZE_40_MS</dt><dd>Use 40 ms frames.</dd>
  13.156 +  * <dt>OPUS_FRAMESIZE_60_MS</dt><dd>Use 60 ms frames.</dd>
  13.157 +  * <dt>OPUS_FRAMESIZE_80_MS</dt><dd>Use 80 ms frames.</dd>
  13.158 +  * <dt>OPUS_FRAMESIZE_100_MS</dt><dd>Use 100 ms frames.</dd>
  13.159 +  * <dt>OPUS_FRAMESIZE_120_MS</dt><dd>Use 120 ms frames.</dd>
  13.160 +  * </dl>
  13.161    * @hideinitializer */
  13.162 -#define OPUS_GET_LAST_PACKET_DURATION(x) OPUS_GET_LAST_PACKET_DURATION_REQUEST, __opus_check_int_ptr(x)
  13.163 +#define OPUS_SET_EXPERT_FRAME_DURATION(x) OPUS_SET_EXPERT_FRAME_DURATION_REQUEST, __opus_check_int(x)
  13.164 +/** Gets the encoder's configured use of variable duration frames.
  13.165 +  * @see OPUS_SET_EXPERT_FRAME_DURATION
  13.166 +  * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
  13.167 +  * <dl>
  13.168 +  * <dt>OPUS_FRAMESIZE_ARG</dt><dd>Select frame size from the argument (default).</dd>
  13.169 +  * <dt>OPUS_FRAMESIZE_2_5_MS</dt><dd>Use 2.5 ms frames.</dd>
  13.170 +  * <dt>OPUS_FRAMESIZE_5_MS</dt><dd>Use 5 ms frames.</dd>
  13.171 +  * <dt>OPUS_FRAMESIZE_10_MS</dt><dd>Use 10 ms frames.</dd>
  13.172 +  * <dt>OPUS_FRAMESIZE_20_MS</dt><dd>Use 20 ms frames.</dd>
  13.173 +  * <dt>OPUS_FRAMESIZE_40_MS</dt><dd>Use 40 ms frames.</dd>
  13.174 +  * <dt>OPUS_FRAMESIZE_60_MS</dt><dd>Use 60 ms frames.</dd>
  13.175 +  * <dt>OPUS_FRAMESIZE_80_MS</dt><dd>Use 80 ms frames.</dd>
  13.176 +  * <dt>OPUS_FRAMESIZE_100_MS</dt><dd>Use 100 ms frames.</dd>
  13.177 +  * <dt>OPUS_FRAMESIZE_120_MS</dt><dd>Use 120 ms frames.</dd>
  13.178 +  * </dl>
  13.179 +  * @hideinitializer */
  13.180 +#define OPUS_GET_EXPERT_FRAME_DURATION(x) OPUS_GET_EXPERT_FRAME_DURATION_REQUEST, __opus_check_int_ptr(x)
  13.181 +
  13.182 +/** If set to 1, disables almost all use of prediction, making frames almost
  13.183 +  * completely independent. This reduces quality.
  13.184 +  * @see OPUS_GET_PREDICTION_DISABLED
  13.185 +  * @param[in] x <tt>opus_int32</tt>: Allowed values:
  13.186 +  * <dl>
  13.187 +  * <dt>0</dt><dd>Enable prediction (default).</dd>
  13.188 +  * <dt>1</dt><dd>Disable prediction.</dd>
  13.189 +  * </dl>
  13.190 +  * @hideinitializer */
  13.191 +#define OPUS_SET_PREDICTION_DISABLED(x) OPUS_SET_PREDICTION_DISABLED_REQUEST, __opus_check_int(x)
  13.192 +/** Gets the encoder's configured prediction status.
  13.193 +  * @see OPUS_SET_PREDICTION_DISABLED
  13.194 +  * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
  13.195 +  * <dl>
  13.196 +  * <dt>0</dt><dd>Prediction enabled (default).</dd>
  13.197 +  * <dt>1</dt><dd>Prediction disabled.</dd>
  13.198 +  * </dl>
  13.199 +  * @hideinitializer */
  13.200 +#define OPUS_GET_PREDICTION_DISABLED(x) OPUS_GET_PREDICTION_DISABLED_REQUEST, __opus_check_int_ptr(x)
  13.201 +
  13.202  /**@}*/
  13.203  
  13.204  /** @defgroup opus_genericctls Generic CTLs
  13.205 @@ -578,18 +671,6 @@
  13.206    * @hideinitializer */
  13.207  #define OPUS_GET_FINAL_RANGE(x) OPUS_GET_FINAL_RANGE_REQUEST, __opus_check_uint_ptr(x)
  13.208  
  13.209 -/** Gets the pitch of the last decoded frame, if available.
  13.210 -  * This can be used for any post-processing algorithm requiring the use of pitch,
  13.211 -  * e.g. time stretching/shortening. If the last frame was not voiced, or if the
  13.212 -  * pitch was not coded in the frame, then zero is returned.
  13.213 -  *
  13.214 -  * This CTL is only implemented for decoder instances.
  13.215 -  *
  13.216 -  * @param[out] x <tt>opus_int32 *</tt>: pitch period at 48 kHz (or 0 if not available)
  13.217 -  *
  13.218 -  * @hideinitializer */
  13.219 -#define OPUS_GET_PITCH(x) OPUS_GET_PITCH_REQUEST, __opus_check_int_ptr(x)
  13.220 -
  13.221  /** Gets the encoder's configured bandpass or the decoder's last bandpass.
  13.222    * @see OPUS_SET_BANDWIDTH
  13.223    * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
  13.224 @@ -604,6 +685,48 @@
  13.225    * @hideinitializer */
  13.226  #define OPUS_GET_BANDWIDTH(x) OPUS_GET_BANDWIDTH_REQUEST, __opus_check_int_ptr(x)
  13.227  
  13.228 +/** Gets the sampling rate the encoder or decoder was initialized with.
  13.229 +  * This simply returns the <code>Fs</code> value passed to opus_encoder_init()
  13.230 +  * or opus_decoder_init().
  13.231 +  * @param[out] x <tt>opus_int32 *</tt>: Sampling rate of encoder or decoder.
  13.232 +  * @hideinitializer
  13.233 +  */
  13.234 +#define OPUS_GET_SAMPLE_RATE(x) OPUS_GET_SAMPLE_RATE_REQUEST, __opus_check_int_ptr(x)
  13.235 +
  13.236 +/** If set to 1, disables the use of phase inversion for intensity stereo,
  13.237 +  * improving the quality of mono downmixes, but slightly reducing normal
  13.238 +  * stereo quality. Disabling phase inversion in the decoder does not comply
  13.239 +  * with RFC 6716, although it does not cause any interoperability issue and
  13.240 +  * is expected to become part of the Opus standard once RFC 6716 is updated
  13.241 +  * by draft-ietf-codec-opus-update.
  13.242 +  * @see OPUS_GET_PHASE_INVERSION_DISABLED
  13.243 +  * @param[in] x <tt>opus_int32</tt>: Allowed values:
  13.244 +  * <dl>
  13.245 +  * <dt>0</dt><dd>Enable phase inversion (default).</dd>
  13.246 +  * <dt>1</dt><dd>Disable phase inversion.</dd>
  13.247 +  * </dl>
  13.248 +  * @hideinitializer */
  13.249 +#define OPUS_SET_PHASE_INVERSION_DISABLED(x) OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST, __opus_check_int(x)
  13.250 +/** Gets the encoder's configured phase inversion status.
  13.251 +  * @see OPUS_SET_PHASE_INVERSION_DISABLED
  13.252 +  * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
  13.253 +  * <dl>
  13.254 +  * <dt>0</dt><dd>Stereo phase inversion enabled (default).</dd>
  13.255 +  * <dt>1</dt><dd>Stereo phase inversion disabled.</dd>
  13.256 +  * </dl>
  13.257 +  * @hideinitializer */
  13.258 +#define OPUS_GET_PHASE_INVERSION_DISABLED(x) OPUS_GET_PHASE_INVERSION_DISABLED_REQUEST, __opus_check_int_ptr(x)
  13.259 +/** Gets the DTX state of the encoder.
  13.260 +  * Returns whether the last encoded frame was either a comfort noise update
  13.261 +  * during DTX or not encoded because of DTX.
  13.262 +  * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values:
  13.263 +  * <dl>
  13.264 +  * <dt>0</dt><dd>The encoder is not in DTX.</dd>
  13.265 +  * <dt>1</dt><dd>The encoder is in DTX.</dd>
  13.266 +  * </dl>
  13.267 +  * @hideinitializer */
  13.268 +#define OPUS_GET_IN_DTX(x) OPUS_GET_IN_DTX_REQUEST, __opus_check_int_ptr(x)
  13.269 +
  13.270  /**@}*/
  13.271  
  13.272  /** @defgroup opus_decoderctls Decoder related CTLs
  13.273 @@ -628,6 +751,23 @@
  13.274    * @hideinitializer */
  13.275  #define OPUS_GET_GAIN(x) OPUS_GET_GAIN_REQUEST, __opus_check_int_ptr(x)
  13.276  
  13.277 +/** Gets the duration (in samples) of the last packet successfully decoded or concealed.
  13.278 +  * @param[out] x <tt>opus_int32 *</tt>: Number of samples (at current sampling rate).
  13.279 +  * @hideinitializer */
  13.280 +#define OPUS_GET_LAST_PACKET_DURATION(x) OPUS_GET_LAST_PACKET_DURATION_REQUEST, __opus_check_int_ptr(x)
  13.281 +
  13.282 +/** Gets the pitch of the last decoded frame, if available.
  13.283 +  * This can be used for any post-processing algorithm requiring the use of pitch,
  13.284 +  * e.g. time stretching/shortening. If the last frame was not voiced, or if the
  13.285 +  * pitch was not coded in the frame, then zero is returned.
  13.286 +  *
  13.287 +  * This CTL is only implemented for decoder instances.
  13.288 +  *
  13.289 +  * @param[out] x <tt>opus_int32 *</tt>: pitch period at 48 kHz (or 0 if not available)
  13.290 +  *
  13.291 +  * @hideinitializer */
  13.292 +#define OPUS_GET_PITCH(x) OPUS_GET_PITCH_REQUEST, __opus_check_int_ptr(x)
  13.293 +
  13.294  /**@}*/
  13.295  
  13.296  /** @defgroup opus_libinfo Opus library information functions
  13.297 @@ -643,6 +783,10 @@
  13.298  
  13.299  /** Gets the libopus version string.
  13.300    *
  13.301 +  * Applications may look for the substring "-fixed" in the version string to
  13.302 +  * determine whether they have a fixed-point or floating-point build at
  13.303 +  * runtime.
  13.304 +  *
  13.305    * @returns Version string
  13.306    */
  13.307  OPUS_EXPORT const char *opus_get_version_string(void);
    14.1 --- a/Xcode/Frameworks/Opus.framework/Versions/A/Headers/opus_multistream.h	Sat Oct 05 10:33:14 2019 -0700
    14.2 +++ b/Xcode/Frameworks/Opus.framework/Versions/A/Headers/opus_multistream.h	Sun Oct 06 12:55:01 2019 +0300
    14.3 @@ -110,10 +110,10 @@
    14.4    * packets produced by the encoder. Some basic information, such as packet
    14.5    * duration, can be computed without any special negotiation.
    14.6    *
    14.7 -  * The format for multistream Opus packets is defined in the
    14.8 -  * <a href="http://tools.ietf.org/html/draft-terriberry-oggopus">Ogg
    14.9 -  * encapsulation specification</a> and is based on the self-delimited Opus
   14.10 -  * framing described in Appendix B of <a href="http://tools.ietf.org/html/rfc6716">RFC 6716</a>.
   14.11 +  * The format for multistream Opus packets is defined in
   14.12 +  * <a href="https://tools.ietf.org/html/rfc7845">RFC 7845</a>
   14.13 +  * and is based on the self-delimited Opus framing described in Appendix B of
   14.14 +  * <a href="https://tools.ietf.org/html/rfc6716">RFC 6716</a>.
   14.15    * Normal Opus packets are just a degenerate case of multistream Opus packets,
   14.16    * and can be encoded or decoded with the multistream API by setting
   14.17    * <code>streams</code> to <code>1</code> when initializing the encoder or
   14.18 @@ -140,7 +140,7 @@
   14.19    *
   14.20    * The output channels specified by the encoder
   14.21    * should use the
   14.22 -  * <a href="http://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-800004.3.9">Vorbis
   14.23 +  * <a href="https://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-810004.3.9">Vorbis
   14.24    * channel ordering</a>. A decoder may wish to apply an additional permutation
   14.25    * to the mapping the encoder used to achieve a different output channel
   14.26    * order (e.g. for outputing in WAV order).
   14.27 @@ -273,7 +273,7 @@
   14.28        unsigned char *mapping,
   14.29        int application,
   14.30        int *error
   14.31 -) OPUS_ARG_NONNULL(5);
   14.32 +) OPUS_ARG_NONNULL(4) OPUS_ARG_NONNULL(5) OPUS_ARG_NONNULL(6);
   14.33  
   14.34  /** Initialize a previously allocated multistream encoder state.
   14.35    * The memory pointed to by \a st must be at least the size returned by
   14.36 @@ -342,7 +342,7 @@
   14.37        int *coupled_streams,
   14.38        unsigned char *mapping,
   14.39        int application
   14.40 -) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6);
   14.41 +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(5) OPUS_ARG_NONNULL(6) OPUS_ARG_NONNULL(7);
   14.42  
   14.43  /** Encodes a multistream Opus frame.
   14.44    * @param st <tt>OpusMSEncoder*</tt>: Multistream encoder state.
    15.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.2 +++ b/Xcode/Frameworks/Opus.framework/Versions/A/Headers/opus_projection.h	Sun Oct 06 12:55:01 2019 +0300
    15.3 @@ -0,0 +1,568 @@
    15.4 +/* Copyright (c) 2017 Google Inc.
    15.5 +   Written by Andrew Allen */
    15.6 +/*
    15.7 +   Redistribution and use in source and binary forms, with or without
    15.8 +   modification, are permitted provided that the following conditions
    15.9 +   are met:
   15.10 +
   15.11 +   - Redistributions of source code must retain the above copyright
   15.12 +   notice, this list of conditions and the following disclaimer.
   15.13 +
   15.14 +   - Redistributions in binary form must reproduce the above copyright
   15.15 +   notice, this list of conditions and the following disclaimer in the
   15.16 +   documentation and/or other materials provided with the distribution.
   15.17 +
   15.18 +   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   15.19 +   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   15.20 +   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   15.21 +   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
   15.22 +   OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   15.23 +   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   15.24 +   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   15.25 +   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   15.26 +   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   15.27 +   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   15.28 +   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   15.29 +*/
   15.30 +
   15.31 +/**
   15.32 + * @file opus_projection.h
   15.33 + * @brief Opus projection reference API
   15.34 + */
   15.35 +
   15.36 +#ifndef OPUS_PROJECTION_H
   15.37 +#define OPUS_PROJECTION_H
   15.38 +
   15.39 +#include "opus_multistream.h"
   15.40 +
   15.41 +#ifdef __cplusplus
   15.42 +extern "C" {
   15.43 +#endif
   15.44 +
   15.45 +/** @cond OPUS_INTERNAL_DOC */
   15.46 +
   15.47 +/** These are the actual encoder and decoder CTL ID numbers.
   15.48 +  * They should not be used directly by applications.c
   15.49 +  * In general, SETs should be even and GETs should be odd.*/
   15.50 +/**@{*/
   15.51 +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_GAIN_REQUEST    6001
   15.52 +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_SIZE_REQUEST    6003
   15.53 +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_REQUEST         6005
   15.54 +/**@}*/
   15.55 +
   15.56 +
   15.57 +/** @endcond */
   15.58 +
   15.59 +/** @defgroup opus_projection_ctls Projection specific encoder and decoder CTLs
   15.60 +  *
   15.61 +  * These are convenience macros that are specific to the
   15.62 +  * opus_projection_encoder_ctl() and opus_projection_decoder_ctl()
   15.63 +  * interface.
   15.64 +  * The CTLs from @ref opus_genericctls, @ref opus_encoderctls,
   15.65 +  * @ref opus_decoderctls, and @ref opus_multistream_ctls may be applied to a
   15.66 +  * projection encoder or decoder as well.
   15.67 +  */
   15.68 +/**@{*/
   15.69 +
   15.70 +/** Gets the gain (in dB. S7.8-format) of the demixing matrix from the encoder.
   15.71 +  * @param[out] x <tt>opus_int32 *</tt>: Returns the gain (in dB. S7.8-format)
   15.72 +  *                                      of the demixing matrix.
   15.73 +  * @hideinitializer
   15.74 +  */
   15.75 +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_GAIN(x) OPUS_PROJECTION_GET_DEMIXING_MATRIX_GAIN_REQUEST, __opus_check_int_ptr(x)
   15.76 +
   15.77 +
   15.78 +/** Gets the size in bytes of the demixing matrix from the encoder.
   15.79 +  * @param[out] x <tt>opus_int32 *</tt>: Returns the size in bytes of the
   15.80 +  *                                      demixing matrix.
   15.81 +  * @hideinitializer
   15.82 +  */
   15.83 +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_SIZE(x) OPUS_PROJECTION_GET_DEMIXING_MATRIX_SIZE_REQUEST, __opus_check_int_ptr(x)
   15.84 +
   15.85 +
   15.86 +/** Copies the demixing matrix to the supplied pointer location.
   15.87 +  * @param[out] x <tt>unsigned char *</tt>: Returns the demixing matrix to the
   15.88 +  *                                         supplied pointer location.
   15.89 +  * @param y <tt>opus_int32</tt>: The size in bytes of the reserved memory at the
   15.90 +  *                              pointer location.
   15.91 +  * @hideinitializer
   15.92 +  */
   15.93 +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX(x,y) OPUS_PROJECTION_GET_DEMIXING_MATRIX_REQUEST, x, __opus_check_int(y)
   15.94 +
   15.95 +
   15.96 +/**@}*/
   15.97 +
   15.98 +/** Opus projection encoder state.
   15.99 + * This contains the complete state of a projection Opus encoder.
  15.100 + * It is position independent and can be freely copied.
  15.101 + * @see opus_projection_ambisonics_encoder_create
  15.102 + */
  15.103 +typedef struct OpusProjectionEncoder OpusProjectionEncoder;
  15.104 +
  15.105 +
  15.106 +/** Opus projection decoder state.
  15.107 +  * This contains the complete state of a projection Opus decoder.
  15.108 +  * It is position independent and can be freely copied.
  15.109 +  * @see opus_projection_decoder_create
  15.110 +  * @see opus_projection_decoder_init
  15.111 +  */
  15.112 +typedef struct OpusProjectionDecoder OpusProjectionDecoder;
  15.113 +
  15.114 +
  15.115 +/**\name Projection encoder functions */
  15.116 +/**@{*/
  15.117 +
  15.118 +/** Gets the size of an OpusProjectionEncoder structure.
  15.119 +  * @param channels <tt>int</tt>: The total number of input channels to encode.
  15.120 +  *                               This must be no more than 255.
  15.121 +  * @param mapping_family <tt>int</tt>: The mapping family to use for selecting
  15.122 +  *                                     the appropriate projection.
  15.123 +  * @returns The size in bytes on success, or a negative error code
  15.124 +  *          (see @ref opus_errorcodes) on error.
  15.125 +  */
  15.126 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_projection_ambisonics_encoder_get_size(
  15.127 +    int channels,
  15.128 +    int mapping_family
  15.129 +);
  15.130 +
  15.131 +
  15.132 +/** Allocates and initializes a projection encoder state.
  15.133 +  * Call opus_projection_encoder_destroy() to release
  15.134 +  * this object when finished.
  15.135 +  * @param Fs <tt>opus_int32</tt>: Sampling rate of the input signal (in Hz).
  15.136 +  *                                This must be one of 8000, 12000, 16000,
  15.137 +  *                                24000, or 48000.
  15.138 +  * @param channels <tt>int</tt>: Number of channels in the input signal.
  15.139 +  *                               This must be at most 255.
  15.140 +  *                               It may be greater than the number of
  15.141 +  *                               coded channels (<code>streams +
  15.142 +  *                               coupled_streams</code>).
  15.143 +  * @param mapping_family <tt>int</tt>: The mapping family to use for selecting
  15.144 +  *                                     the appropriate projection.
  15.145 +  * @param[out] streams <tt>int *</tt>: The total number of streams that will
  15.146 +  *                                     be encoded from the input.
  15.147 +  * @param[out] coupled_streams <tt>int *</tt>: Number of coupled (2 channel)
  15.148 +  *                                 streams that will be encoded from the input.
  15.149 +  * @param application <tt>int</tt>: The target encoder application.
  15.150 +  *                                  This must be one of the following:
  15.151 +  * <dl>
  15.152 +  * <dt>#OPUS_APPLICATION_VOIP</dt>
  15.153 +  * <dd>Process signal for improved speech intelligibility.</dd>
  15.154 +  * <dt>#OPUS_APPLICATION_AUDIO</dt>
  15.155 +  * <dd>Favor faithfulness to the original input.</dd>
  15.156 +  * <dt>#OPUS_APPLICATION_RESTRICTED_LOWDELAY</dt>
  15.157 +  * <dd>Configure the minimum possible coding delay by disabling certain modes
  15.158 +  * of operation.</dd>
  15.159 +  * </dl>
  15.160 +  * @param[out] error <tt>int *</tt>: Returns #OPUS_OK on success, or an error
  15.161 +  *                                   code (see @ref opus_errorcodes) on
  15.162 +  *                                   failure.
  15.163 +  */
  15.164 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusProjectionEncoder *opus_projection_ambisonics_encoder_create(
  15.165 +    opus_int32 Fs,
  15.166 +    int channels,
  15.167 +    int mapping_family,
  15.168 +    int *streams,
  15.169 +    int *coupled_streams,
  15.170 +    int application,
  15.171 +    int *error
  15.172 +) OPUS_ARG_NONNULL(4) OPUS_ARG_NONNULL(5);
  15.173 +
  15.174 +
  15.175 +/** Initialize a previously allocated projection encoder state.
  15.176 +  * The memory pointed to by \a st must be at least the size returned by
  15.177 +  * opus_projection_ambisonics_encoder_get_size().
  15.178 +  * This is intended for applications which use their own allocator instead of
  15.179 +  * malloc.
  15.180 +  * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL.
  15.181 +  * @see opus_projection_ambisonics_encoder_create
  15.182 +  * @see opus_projection_ambisonics_encoder_get_size
  15.183 +  * @param st <tt>OpusProjectionEncoder*</tt>: Projection encoder state to initialize.
  15.184 +  * @param Fs <tt>opus_int32</tt>: Sampling rate of the input signal (in Hz).
  15.185 +  *                                This must be one of 8000, 12000, 16000,
  15.186 +  *                                24000, or 48000.
  15.187 +  * @param channels <tt>int</tt>: Number of channels in the input signal.
  15.188 +  *                               This must be at most 255.
  15.189 +  *                               It may be greater than the number of
  15.190 +  *                               coded channels (<code>streams +
  15.191 +  *                               coupled_streams</code>).
  15.192 +  * @param streams <tt>int</tt>: The total number of streams to encode from the
  15.193 +  *                              input.
  15.194 +  *                              This must be no more than the number of channels.
  15.195 +  * @param coupled_streams <tt>int</tt>: Number of coupled (2 channel) streams
  15.196 +  *                                      to encode.
  15.197 +  *                                      This must be no larger than the total
  15.198 +  *                                      number of streams.
  15.199 +  *                                      Additionally, The total number of
  15.200 +  *                                      encoded channels (<code>streams +
  15.201 +  *                                      coupled_streams</code>) must be no
  15.202 +  *                                      more than the number of input channels.
  15.203 +  * @param application <tt>int</tt>: The target encoder application.
  15.204 +  *                                  This must be one of the following:
  15.205 +  * <dl>
  15.206 +  * <dt>#OPUS_APPLICATION_VOIP</dt>
  15.207 +  * <dd>Process signal for improved speech intelligibility.</dd>
  15.208 +  * <dt>#OPUS_APPLICATION_AUDIO</dt>
  15.209 +  * <dd>Favor faithfulness to the original input.</dd>
  15.210 +  * <dt>#OPUS_APPLICATION_RESTRICTED_LOWDELAY</dt>
  15.211 +  * <dd>Configure the minimum possible coding delay by disabling certain modes
  15.212 +  * of operation.</dd>
  15.213 +  * </dl>
  15.214 +  * @returns #OPUS_OK on success, or an error code (see @ref opus_errorcodes)
  15.215 +  *          on failure.
  15.216 +  */
  15.217 +OPUS_EXPORT int opus_projection_ambisonics_encoder_init(
  15.218 +    OpusProjectionEncoder *st,
  15.219 +    opus_int32 Fs,
  15.220 +    int channels,
  15.221 +    int mapping_family,
  15.222 +    int *streams,
  15.223 +    int *coupled_streams,
  15.224 +    int application
  15.225 +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(5) OPUS_ARG_NONNULL(6);
  15.226 +
  15.227 +
  15.228 +/** Encodes a projection Opus frame.
  15.229 +  * @param st <tt>OpusProjectionEncoder*</tt>: Projection encoder state.
  15.230 +  * @param[in] pcm <tt>const opus_int16*</tt>: The input signal as interleaved
  15.231 +  *                                            samples.
  15.232 +  *                                            This must contain
  15.233 +  *                                            <code>frame_size*channels</code>
  15.234 +  *                                            samples.
  15.235 +  * @param frame_size <tt>int</tt>: Number of samples per channel in the input
  15.236 +  *                                 signal.
  15.237 +  *                                 This must be an Opus frame size for the
  15.238 +  *                                 encoder's sampling rate.
  15.239 +  *                                 For example, at 48 kHz the permitted values
  15.240 +  *                                 are 120, 240, 480, 960, 1920, and 2880.
  15.241 +  *                                 Passing in a duration of less than 10 ms
  15.242 +  *                                 (480 samples at 48 kHz) will prevent the
  15.243 +  *                                 encoder from using the LPC or hybrid modes.
  15.244 +  * @param[out] data <tt>unsigned char*</tt>: Output payload.
  15.245 +  *                                           This must contain storage for at
  15.246 +  *                                           least \a max_data_bytes.
  15.247 +  * @param [in] max_data_bytes <tt>opus_int32</tt>: Size of the allocated
  15.248 +  *                                                 memory for the output
  15.249 +  *                                                 payload. This may be
  15.250 +  *                                                 used to impose an upper limit on
  15.251 +  *                                                 the instant bitrate, but should
  15.252 +  *                                                 not be used as the only bitrate
  15.253 +  *                                                 control. Use #OPUS_SET_BITRATE to
  15.254 +  *                                                 control the bitrate.
  15.255 +  * @returns The length of the encoded packet (in bytes) on success or a
  15.256 +  *          negative error code (see @ref opus_errorcodes) on failure.
  15.257 +  */
  15.258 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_projection_encode(
  15.259 +    OpusProjectionEncoder *st,
  15.260 +    const opus_int16 *pcm,
  15.261 +    int frame_size,
  15.262 +    unsigned char *data,
  15.263 +    opus_int32 max_data_bytes
  15.264 +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4);
  15.265 +
  15.266 +
  15.267 +/** Encodes a projection Opus frame from floating point input.
  15.268 +  * @param st <tt>OpusProjectionEncoder*</tt>: Projection encoder state.
  15.269 +  * @param[in] pcm <tt>const float*</tt>: The input signal as interleaved
  15.270 +  *                                       samples with a normal range of
  15.271 +  *                                       +/-1.0.
  15.272 +  *                                       Samples with a range beyond +/-1.0
  15.273 +  *                                       are supported but will be clipped by
  15.274 +  *                                       decoders using the integer API and
  15.275 +  *                                       should only be used if it is known
  15.276 +  *                                       that the far end supports extended
  15.277 +  *                                       dynamic range.
  15.278 +  *                                       This must contain
  15.279 +  *                                       <code>frame_size*channels</code>
  15.280 +  *                                       samples.
  15.281 +  * @param frame_size <tt>int</tt>: Number of samples per channel in the input
  15.282 +  *                                 signal.
  15.283 +  *                                 This must be an Opus frame size for the
  15.284 +  *                                 encoder's sampling rate.
  15.285 +  *                                 For example, at 48 kHz the permitted values
  15.286 +  *                                 are 120, 240, 480, 960, 1920, and 2880.
  15.287 +  *                                 Passing in a duration of less than 10 ms
  15.288 +  *                                 (480 samples at 48 kHz) will prevent the
  15.289 +  *                                 encoder from using the LPC or hybrid modes.
  15.290 +  * @param[out] data <tt>unsigned char*</tt>: Output payload.
  15.291 +  *                                           This must contain storage for at
  15.292 +  *                                           least \a max_data_bytes.
  15.293 +  * @param [in] max_data_bytes <tt>opus_int32</tt>: Size of the allocated
  15.294 +  *                                                 memory for the output
  15.295 +  *                                                 payload. This may be
  15.296 +  *                                                 used to impose an upper limit on
  15.297 +  *                                                 the instant bitrate, but should
  15.298 +  *                                                 not be used as the only bitrate
  15.299 +  *                                                 control. Use #OPUS_SET_BITRATE to
  15.300 +  *                                                 control the bitrate.
  15.301 +  * @returns The length of the encoded packet (in bytes) on success or a
  15.302 +  *          negative error code (see @ref opus_errorcodes) on failure.
  15.303 +  */
  15.304 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_projection_encode_float(
  15.305 +    OpusProjectionEncoder *st,
  15.306 +    const float *pcm,
  15.307 +    int frame_size,
  15.308 +    unsigned char *data,
  15.309 +    opus_int32 max_data_bytes
  15.310 +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4);
  15.311 +
  15.312 +
  15.313 +/** Frees an <code>OpusProjectionEncoder</code> allocated by
  15.314 +  * opus_projection_ambisonics_encoder_create().
  15.315 +  * @param st <tt>OpusProjectionEncoder*</tt>: Projection encoder state to be freed.
  15.316 +  */
  15.317 +OPUS_EXPORT void opus_projection_encoder_destroy(OpusProjectionEncoder *st);
  15.318 +
  15.319 +
  15.320 +/** Perform a CTL function on a projection Opus encoder.
  15.321 +  *
  15.322 +  * Generally the request and subsequent arguments are generated by a
  15.323 +  * convenience macro.
  15.324 +  * @param st <tt>OpusProjectionEncoder*</tt>: Projection encoder state.
  15.325 +  * @param request This and all remaining parameters should be replaced by one
  15.326 +  *                of the convenience macros in @ref opus_genericctls,
  15.327 +  *                @ref opus_encoderctls, @ref opus_multistream_ctls, or
  15.328 +  *                @ref opus_projection_ctls
  15.329 +  * @see opus_genericctls
  15.330 +  * @see opus_encoderctls
  15.331 +  * @see opus_multistream_ctls
  15.332 +  * @see opus_projection_ctls
  15.333 +  */
  15.334 +OPUS_EXPORT int opus_projection_encoder_ctl(OpusProjectionEncoder *st, int request, ...) OPUS_ARG_NONNULL(1);
  15.335 +
  15.336 +
  15.337 +/**@}*/
  15.338 +
  15.339 +/**\name Projection decoder functions */
  15.340 +/**@{*/
  15.341 +
  15.342 +/** Gets the size of an <code>OpusProjectionDecoder</code> structure.
  15.343 +  * @param channels <tt>int</tt>: The total number of output channels.
  15.344 +  *                               This must be no more than 255.
  15.345 +  * @param streams <tt>int</tt>: The total number of streams coded in the
  15.346 +  *                              input.
  15.347 +  *                              This must be no more than 255.
  15.348 +  * @param coupled_streams <tt>int</tt>: Number streams to decode as coupled
  15.349 +  *                                      (2 channel) streams.
  15.350 +  *                                      This must be no larger than the total
  15.351 +  *                                      number of streams.
  15.352 +  *                                      Additionally, The total number of
  15.353 +  *                                      coded channels (<code>streams +
  15.354 +  *                                      coupled_streams</code>) must be no
  15.355 +  *                                      more than 255.
  15.356 +  * @returns The size in bytes on success, or a negative error code
  15.357 +  *          (see @ref opus_errorcodes) on error.
  15.358 +  */
  15.359 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_projection_decoder_get_size(
  15.360 +    int channels,
  15.361 +    int streams,
  15.362 +    int coupled_streams
  15.363 +);
  15.364 +
  15.365 +
  15.366 +/** Allocates and initializes a projection decoder state.
  15.367 +  * Call opus_projection_decoder_destroy() to release
  15.368 +  * this object when finished.
  15.369 +  * @param Fs <tt>opus_int32</tt>: Sampling rate to decode at (in Hz).
  15.370 +  *                                This must be one of 8000, 12000, 16000,
  15.371 +  *                                24000, or 48000.
  15.372 +  * @param channels <tt>int</tt>: Number of channels to output.
  15.373 +  *                               This must be at most 255.
  15.374 +  *                               It may be different from the number of coded
  15.375 +  *                               channels (<code>streams +
  15.376 +  *                               coupled_streams</code>).
  15.377 +  * @param streams <tt>int</tt>: The total number of streams coded in the
  15.378 +  *                              input.
  15.379 +  *                              This must be no more than 255.
  15.380 +  * @param coupled_streams <tt>int</tt>: Number of streams to decode as coupled
  15.381 +  *                                      (2 channel) streams.
  15.382 +  *                                      This must be no larger than the total
  15.383 +  *                                      number of streams.
  15.384 +  *                                      Additionally, The total number of
  15.385 +  *                                      coded channels (<code>streams +
  15.386 +  *                                      coupled_streams</code>) must be no
  15.387 +  *                                      more than 255.
  15.388 +  * @param[in] demixing_matrix <tt>const unsigned char[demixing_matrix_size]</tt>: Demixing matrix
  15.389 +  *                         that mapping from coded channels to output channels,
  15.390 +  *                         as described in @ref opus_projection and
  15.391 +  *                         @ref opus_projection_ctls.
  15.392 +  * @param demixing_matrix_size <tt>opus_int32</tt>: The size in bytes of the
  15.393 +  *                                                  demixing matrix, as
  15.394 +  *                                                  described in @ref
  15.395 +  *                                                  opus_projection_ctls.
  15.396 +  * @param[out] error <tt>int *</tt>: Returns #OPUS_OK on success, or an error
  15.397 +  *                                   code (see @ref opus_errorcodes) on
  15.398 +  *                                   failure.
  15.399 +  */
  15.400 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusProjectionDecoder *opus_projection_decoder_create(
  15.401 +    opus_int32 Fs,
  15.402 +    int channels,
  15.403 +    int streams,
  15.404 +    int coupled_streams,
  15.405 +    unsigned char *demixing_matrix,
  15.406 +    opus_int32 demixing_matrix_size,
  15.407 +    int *error
  15.408 +) OPUS_ARG_NONNULL(5);
  15.409 +
  15.410 +
  15.411 +/** Intialize a previously allocated projection decoder state object.
  15.412 +  * The memory pointed to by \a st must be at least the size returned by
  15.413 +  * opus_projection_decoder_get_size().
  15.414 +  * This is intended for applications which use their own allocator instead of
  15.415 +  * malloc.
  15.416 +  * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL.
  15.417 +  * @see opus_projection_decoder_create
  15.418 +  * @see opus_projection_deocder_get_size
  15.419 +  * @param st <tt>OpusProjectionDecoder*</tt>: Projection encoder state to initialize.
  15.420 +  * @param Fs <tt>opus_int32</tt>: Sampling rate to decode at (in Hz).
  15.421 +  *                                This must be one of 8000, 12000, 16000,
  15.422 +  *                                24000, or 48000.
  15.423 +  * @param channels <tt>int</tt>: Number of channels to output.
  15.424 +  *                               This must be at most 255.
  15.425 +  *                               It may be different from the number of coded
  15.426 +  *                               channels (<code>streams +
  15.427 +  *                               coupled_streams</code>).
  15.428 +  * @param streams <tt>int</tt>: The total number of streams coded in the
  15.429 +  *                              input.
  15.430 +  *                              This must be no more than 255.
  15.431 +  * @param coupled_streams <tt>int</tt>: Number of streams to decode as coupled
  15.432 +  *                                      (2 channel) streams.
  15.433 +  *                                      This must be no larger than the total
  15.434 +  *                                      number of streams.
  15.435 +  *                                      Additionally, The total number of
  15.436 +  *                                      coded channels (<code>streams +
  15.437 +  *                                      coupled_streams</code>) must be no
  15.438 +  *                                      more than 255.
  15.439 +  * @param[in] demixing_matrix <tt>const unsigned char[demixing_matrix_size]</tt>: Demixing matrix
  15.440 +  *                         that mapping from coded channels to output channels,
  15.441 +  *                         as described in @ref opus_projection and
  15.442 +  *                         @ref opus_projection_ctls.
  15.443 +  * @param demixing_matrix_size <tt>opus_int32</tt>: The size in bytes of the
  15.444 +  *                                                  demixing matrix, as
  15.445 +  *                                                  described in @ref
  15.446 +  *                                                  opus_projection_ctls.
  15.447 +  * @returns #OPUS_OK on success, or an error code (see @ref opus_errorcodes)
  15.448 +  *          on failure.
  15.449 +  */
  15.450 +OPUS_EXPORT int opus_projection_decoder_init(
  15.451 +    OpusProjectionDecoder *st,
  15.452 +    opus_int32 Fs,
  15.453 +    int channels,
  15.454 +    int streams,
  15.455 +    int coupled_streams,
  15.456 +    unsigned char *demixing_matrix,
  15.457 +    opus_int32 demixing_matrix_size
  15.458 +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6);
  15.459 +
  15.460 +
  15.461 +/** Decode a projection Opus packet.
  15.462 +  * @param st <tt>OpusProjectionDecoder*</tt>: Projection decoder state.
  15.463 +  * @param[in] data <tt>const unsigned char*</tt>: Input payload.
  15.464 +  *                                                Use a <code>NULL</code>
  15.465 +  *                                                pointer to indicate packet
  15.466 +  *                                                loss.
  15.467 +  * @param len <tt>opus_int32</tt>: Number of bytes in payload.
  15.468 +  * @param[out] pcm <tt>opus_int16*</tt>: Output signal, with interleaved
  15.469 +  *                                       samples.
  15.470 +  *                                       This must contain room for
  15.471 +  *                                       <code>frame_size*channels</code>
  15.472 +  *                                       samples.
  15.473 +  * @param frame_size <tt>int</tt>: The number of samples per channel of
  15.474 +  *                                 available space in \a pcm.
  15.475 +  *                                 If this is less than the maximum packet duration
  15.476 +  *                                 (120 ms; 5760 for 48kHz), this function will not be capable
  15.477 +  *                                 of decoding some packets. In the case of PLC (data==NULL)
  15.478 +  *                                 or FEC (decode_fec=1), then frame_size needs to be exactly
  15.479 +  *                                 the duration of audio that is missing, otherwise the
  15.480 +  *                                 decoder will not be in the optimal state to decode the
  15.481 +  *                                 next incoming packet. For the PLC and FEC cases, frame_size
  15.482 +  *                                 <b>must</b> be a multiple of 2.5 ms.
  15.483 +  * @param decode_fec <tt>int</tt>: Flag (0 or 1) to request that any in-band
  15.484 +  *                                 forward error correction data be decoded.
  15.485 +  *                                 If no such data is available, the frame is
  15.486 +  *                                 decoded as if it were lost.
  15.487 +  * @returns Number of samples decoded on success or a negative error code
  15.488 +  *          (see @ref opus_errorcodes) on failure.
  15.489 +  */
  15.490 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_projection_decode(
  15.491 +    OpusProjectionDecoder *st,
  15.492 +    const unsigned char *data,
  15.493 +    opus_int32 len,
  15.494 +    opus_int16 *pcm,
  15.495 +    int frame_size,
  15.496 +    int decode_fec
  15.497 +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4);
  15.498 +
  15.499 +
  15.500 +/** Decode a projection Opus packet with floating point output.
  15.501 +  * @param st <tt>OpusProjectionDecoder*</tt>: Projection decoder state.
  15.502 +  * @param[in] data <tt>const unsigned char*</tt>: Input payload.
  15.503 +  *                                                Use a <code>NULL</code>
  15.504 +  *                                                pointer to indicate packet
  15.505 +  *                                                loss.
  15.506 +  * @param len <tt>opus_int32</tt>: Number of bytes in payload.
  15.507 +  * @param[out] pcm <tt>opus_int16*</tt>: Output signal, with interleaved
  15.508 +  *                                       samples.
  15.509 +  *                                       This must contain room for
  15.510 +  *                                       <code>frame_size*channels</code>
  15.511 +  *                                       samples.
  15.512 +  * @param frame_size <tt>int</tt>: The number of samples per channel of
  15.513 +  *                                 available space in \a pcm.
  15.514 +  *                                 If this is less than the maximum packet duration
  15.515 +  *                                 (120 ms; 5760 for 48kHz), this function will not be capable
  15.516 +  *                                 of decoding some packets. In the case of PLC (data==NULL)
  15.517 +  *                                 or FEC (decode_fec=1), then frame_size needs to be exactly
  15.518 +  *                                 the duration of audio that is missing, otherwise the
  15.519 +  *                                 decoder will not be in the optimal state to decode the
  15.520 +  *                                 next incoming packet. For the PLC and FEC cases, frame_size
  15.521 +  *                                 <b>must</b> be a multiple of 2.5 ms.
  15.522 +  * @param decode_fec <tt>int</tt>: Flag (0 or 1) to request that any in-band
  15.523 +  *                                 forward error correction data be decoded.
  15.524 +  *                                 If no such data is available, the frame is
  15.525 +  *                                 decoded as if it were lost.
  15.526 +  * @returns Number of samples decoded on success or a negative error code
  15.527 +  *          (see @ref opus_errorcodes) on failure.
  15.528 +  */
  15.529 +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_projection_decode_float(
  15.530 +    OpusProjectionDecoder *st,
  15.531 +    const unsigned char *data,
  15.532 +    opus_int32 len,
  15.533 +    float *pcm,
  15.534 +    int frame_size,
  15.535 +    int decode_fec
  15.536 +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4);
  15.537 +
  15.538 +
  15.539 +/** Perform a CTL function on a projection Opus decoder.
  15.540 +  *
  15.541 +  * Generally the request and subsequent arguments are generated by a
  15.542 +  * convenience macro.
  15.543 +  * @param st <tt>OpusProjectionDecoder*</tt>: Projection decoder state.
  15.544 +  * @param request This and all remaining parameters should be replaced by one
  15.545 +  *                of the convenience macros in @ref opus_genericctls,
  15.546 +  *                @ref opus_decoderctls, @ref opus_multistream_ctls, or
  15.547 +  *                @ref opus_projection_ctls.
  15.548 +  * @see opus_genericctls
  15.549 +  * @see opus_decoderctls
  15.550 +  * @see opus_multistream_ctls
  15.551 +  * @see opus_projection_ctls
  15.552 +  */
  15.553 +OPUS_EXPORT int opus_projection_decoder_ctl(OpusProjectionDecoder *st, int request, ...) OPUS_ARG_NONNULL(1);
  15.554 +
  15.555 +
  15.556 +/** Frees an <code>OpusProjectionDecoder</code> allocated by
  15.557 +  * opus_projection_decoder_create().
  15.558 +  * @param st <tt>OpusProjectionDecoder</tt>: Projection decoder state to be freed.
  15.559 +  */
  15.560 +OPUS_EXPORT void opus_projection_decoder_destroy(OpusProjectionDecoder *st);
  15.561 +
  15.562 +
  15.563 +/**@}*/
  15.564 +
  15.565 +/**@}*/
  15.566 +
  15.567 +#ifdef __cplusplus
  15.568 +}
  15.569 +#endif
  15.570 +
  15.571 +#endif /* OPUS_PROJECTION_H */
    16.1 --- a/Xcode/Frameworks/Opus.framework/Versions/A/Headers/opus_types.h	Sat Oct 05 10:33:14 2019 -0700
    16.2 +++ b/Xcode/Frameworks/Opus.framework/Versions/A/Headers/opus_types.h	Sun Oct 06 12:55:01 2019 +0300
    16.3 @@ -33,14 +33,29 @@
    16.4  #ifndef OPUS_TYPES_H
    16.5  #define OPUS_TYPES_H
    16.6  
    16.7 +#define opus_int         int                     /* used for counters etc; at least 16 bits */
    16.8 +#define opus_int64       long long
    16.9 +#define opus_int8        signed char
   16.10 +
   16.11 +#define opus_uint        unsigned int            /* used for counters etc; at least 16 bits */
   16.12 +#define opus_uint64      unsigned long long
   16.13 +#define opus_uint8       unsigned char
   16.14 +
   16.15  /* Use the real stdint.h if it's there (taken from Paul Hsieh's pstdint.h) */
   16.16 -#if (defined(__STDC__) && __STDC__ && __STDC_VERSION__ >= 199901L) || (defined(__GNUC__) && (defined(_STDINT_H) || defined(_STDINT_H_)) || defined (HAVE_STDINT_H))
   16.17 +#if (defined(__STDC__) && __STDC__ && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || (defined(__GNUC__) && (defined(_STDINT_H) || defined(_STDINT_H_)) || defined (HAVE_STDINT_H))
   16.18  #include <stdint.h>
   16.19 -
   16.20 +#  undef opus_int64
   16.21 +#  undef opus_int8
   16.22 +#  undef opus_uint64
   16.23 +#  undef opus_uint8
   16.24 +   typedef int8_t opus_int8;
   16.25 +   typedef uint8_t opus_uint8;
   16.26     typedef int16_t opus_int16;
   16.27     typedef uint16_t opus_uint16;
   16.28     typedef int32_t opus_int32;
   16.29     typedef uint32_t opus_uint32;
   16.30 +   typedef int64_t opus_int64;
   16.31 +   typedef uint64_t opus_uint64;
   16.32  #elif defined(_WIN32)
   16.33  
   16.34  #  if defined(__CYGWIN__)
   16.35 @@ -148,12 +163,4 @@
   16.36  
   16.37  #endif
   16.38  
   16.39 -#define opus_int         int                     /* used for counters etc; at least 16 bits */
   16.40 -#define opus_int64       long long
   16.41 -#define opus_int8        signed char
   16.42 -
   16.43 -#define opus_uint        unsigned int            /* used for counters etc; at least 16 bits */
   16.44 -#define opus_uint64      unsigned long long
   16.45 -#define opus_uint8       unsigned char
   16.46 -
   16.47  #endif  /* OPUS_TYPES_H */
    17.1 Binary file Xcode/Frameworks/Opus.framework/Versions/A/Opus has changed
    18.1 --- a/Xcode/Frameworks/Opus.framework/Versions/A/Resources/Info.plist	Sat Oct 05 10:33:14 2019 -0700
    18.2 +++ b/Xcode/Frameworks/Opus.framework/Versions/A/Resources/Info.plist	Sun Oct 06 12:55:01 2019 +0300
    18.3 @@ -7,7 +7,7 @@
    18.4  	<key>CFBundleExecutable</key>
    18.5  	<string>Opus</string>
    18.6  	<key>CFBundleGetInfoString</key>
    18.7 -	<string>libopus 1.0.3</string>
    18.8 +	<string>libopus 1.3.1</string>
    18.9  	<key>CFBundleInfoDictionaryVersion</key>
   18.10  	<string>6.0</string>
   18.11  	<key>CFBundleName</key>
   18.12 @@ -15,10 +15,10 @@
   18.13  	<key>CFBundlePackageType</key>
   18.14  	<string>FMWK</string>
   18.15  	<key>CFBundleShortVersionString</key>
   18.16 -	<string>1.0.3</string>
   18.17 +	<string>1.3.1</string>
   18.18  	<key>CFBundleSignature</key>
   18.19  	<string>????</string>
   18.20  	<key>CFBundleVersion</key>
   18.21 -	<string>1.0.3</string>
   18.22 +	<string>1.3.1</string>
   18.23  </dict>
   18.24  </plist>
    19.1 --- a/Xcode/Frameworks/Opus.framework/Versions/A/Resources/LICENSE.opus.txt	Sat Oct 05 10:33:14 2019 -0700
    19.2 +++ b/Xcode/Frameworks/Opus.framework/Versions/A/Resources/LICENSE.opus.txt	Sun Oct 06 12:55:01 2019 +0300
    19.3 @@ -14,7 +14,7 @@
    19.4  notice, this list of conditions and the following disclaimer in the
    19.5  documentation and/or other materials provided with the distribution.
    19.6  
    19.7 -- Neither the name of Internet Society, IETF or IETF Trust, nor the 
    19.8 +- Neither the name of Internet Society, IETF or IETF Trust, nor the
    19.9  names of specific contributors, may be used to endorse or promote
   19.10  products derived from this software without specific prior written
   19.11  permission.
    20.1 Binary file Xcode/Frameworks/OpusFile.framework/Versions/A/OpusFile has changed
    21.1 --- a/Xcode/Frameworks/OpusFile.framework/Versions/A/Resources/Info.plist	Sat Oct 05 10:33:14 2019 -0700
    21.2 +++ b/Xcode/Frameworks/OpusFile.framework/Versions/A/Resources/Info.plist	Sun Oct 06 12:55:01 2019 +0300
    21.3 @@ -7,7 +7,7 @@
    21.4  	<key>CFBundleExecutable</key>
    21.5  	<string>OpusFile</string>
    21.6  	<key>CFBundleGetInfoString</key>
    21.7 -	<string>libopusfile 0.10</string>
    21.8 +	<string>libopusfile 0.11</string>
    21.9  	<key>CFBundleInfoDictionaryVersion</key>
   21.10  	<string>6.0</string>
   21.11  	<key>CFBundleName</key>
   21.12 @@ -15,10 +15,10 @@
   21.13  	<key>CFBundlePackageType</key>
   21.14  	<string>FMWK</string>
   21.15  	<key>CFBundleShortVersionString</key>
   21.16 -	<string>1.0.3</string>
   21.17 +	<string>0.11</string>
   21.18  	<key>CFBundleSignature</key>
   21.19  	<string>????</string>
   21.20  	<key>CFBundleVersion</key>
   21.21 -	<string>0.10</string>
   21.22 +	<string>0.11</string>
   21.23  </dict>
   21.24  </plist>
    22.1 --- a/external/opus-1.0.3/001-opus.git-9c7193e4.patch	Sat Oct 05 10:33:14 2019 -0700
    22.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.3 @@ -1,115 +0,0 @@
    22.4 -From 9c7193e4f956e230d919f604df27ea4b13b62370 Mon Sep 17 00:00:00 2001
    22.5 -From: Koen Vos <koenvos74@gmail.com>
    22.6 -Date: Thu, 19 Jun 2014 20:07:55 -0400
    22.7 -Subject: [PATCH] Fixes CNG to address the DTX issue reported by Gonzalo Mariano
    22.8 -
    22.9 -- Bug fix: the CNG synthesis filter output consisted of only the prediction
   22.10 -  values, now added the input to that.
   22.11 -- CNG excitation level now takes into account the level from the PLC (since
   22.12 -  both PLC and CNG can be active at the same time).
   22.13 -- CNG is now called before PLC_glue() to smoothen the transition out of CNG.
   22.14 -
   22.15 -Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
   22.16 ----
   22.17 - silk/CNG.c          |   15 ++++++++++-----
   22.18 - silk/decode_frame.c |   10 +++++-----
   22.19 - 2 files changed, 15 insertions(+), 10 deletions(-)
   22.20 -
   22.21 -From f662fd42eba24a3f3ba4a4f0a0f238516aa44221 Mon Sep 17 00:00:00 2001
   22.22 -From: Koen Vos <koenvos74@gmail.com>
   22.23 -Date: Fri, 20 Jun 2014 01:42:49 -0400
   22.24 -Subject: [PATCH] Fixes CNG overflows from the previous commit
   22.25 -
   22.26 -Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
   22.27 ----
   22.28 - silk/CNG.c |   14 +++++++++-----
   22.29 - 1 files changed, 9 insertions(+), 5 deletions(-)
   22.30 -
   22.31 -diff --git a/silk/CNG.c b/silk/CNG.c
   22.32 -index 8481d95..cd15001 100644
   22.33 ---- a/silk/CNG.c
   22.34 -+++ b/silk/CNG.c
   22.35 -@@ -33,7 +33,7 @@ POSSIBILITY OF SUCH DAMAGE.
   22.36 - 
   22.37 - /* Generates excitation for CNG LPC synthesis */
   22.38 - static inline void silk_CNG_exc(
   22.39 --    opus_int32                       residual_Q10[],     /* O    CNG residual signal Q10                     */
   22.40 -+    opus_int32                       exc_Q10[],          /* O    CNG excitation signal Q10                   */
   22.41 -     opus_int32                       exc_buf_Q14[],      /* I    Random samples buffer Q10                   */
   22.42 -     opus_int32                       Gain_Q16,           /* I    Gain to apply                               */
   22.43 -     opus_int                         length,             /* I    Length                                      */
   22.44 -@@ -54,7 +54,7 @@ static inline void silk_CNG_exc(
   22.45 -         idx = (opus_int)( silk_RSHIFT( seed, 24 ) & exc_mask );
   22.46 -         silk_assert( idx >= 0 );
   22.47 -         silk_assert( idx <= CNG_BUF_MASK_MAX );
   22.48 --        residual_Q10[ i ] = (opus_int16)silk_SAT16( silk_SMULWW( exc_buf_Q14[ idx ], Gain_Q16 >> 4 ) );
   22.49 -+        exc_Q10[ i ] = (opus_int16)silk_SAT16( silk_SMULWW( exc_buf_Q14[ idx ], Gain_Q16 >> 4 ) );
   22.50 -     }
   22.51 -     *rand_seed = seed;
   22.52 - }
   22.53 -@@ -84,7 +84,7 @@ void silk_CNG(
   22.54 - )
   22.55 - {
   22.56 -     opus_int   i, subfr;
   22.57 --    opus_int32 sum_Q6, max_Gain_Q16;
   22.58 -+    opus_int32 sum_Q6, max_Gain_Q16, gain_Q16;
   22.59 -     opus_int16 A_Q12[ MAX_LPC_ORDER ];
   22.60 -     opus_int32 CNG_sig_Q10[ MAX_FRAME_LENGTH + MAX_LPC_ORDER ];
   22.61 -     silk_CNG_struct *psCNG = &psDec->sCNG;
   22.62 -@@ -125,7 +125,17 @@ void silk_CNG(
   22.63 -     if( psDec->lossCnt ) {
   22.64 - 
   22.65 -         /* Generate CNG excitation */
   22.66 --        silk_CNG_exc( CNG_sig_Q10 + MAX_LPC_ORDER, psCNG->CNG_exc_buf_Q14, psCNG->CNG_smth_Gain_Q16, length, &psCNG->rand_seed );
   22.67 -+		gain_Q16 = silk_SMULWW( psDec->sPLC.randScale_Q14, psDec->sPLC.prevGain_Q16[1] );
   22.68 -+		if( gain_Q16 >= (1 << 21) || psCNG->CNG_smth_Gain_Q16 > (1 << 23) ) {
   22.69 -+			gain_Q16 = silk_SMULTT( gain_Q16, gain_Q16 );
   22.70 -+			gain_Q16 = silk_SUB_LSHIFT32(silk_SMULTT( psCNG->CNG_smth_Gain_Q16, psCNG->CNG_smth_Gain_Q16 ), gain_Q16, 5 );
   22.71 -+			gain_Q16 = silk_LSHIFT32( silk_SQRT_APPROX( gain_Q16 ), 16 );
   22.72 -+		} else {
   22.73 -+			gain_Q16 = silk_SMULWW( gain_Q16, gain_Q16 );
   22.74 -+			gain_Q16 = silk_SUB_LSHIFT32(silk_SMULWW( psCNG->CNG_smth_Gain_Q16, psCNG->CNG_smth_Gain_Q16 ), gain_Q16, 5 );
   22.75 -+			gain_Q16 = silk_LSHIFT32( silk_SQRT_APPROX( gain_Q16 ), 8 );
   22.76 -+		}
   22.77 -+        silk_CNG_exc( CNG_sig_Q10 + MAX_LPC_ORDER, psCNG->CNG_exc_buf_Q14, gain_Q16, length, &psCNG->rand_seed );
   22.78 - 
   22.79 -         /* Convert CNG NLSF to filter representation */
   22.80 -         silk_NLSF2A( A_Q12, psCNG->CNG_smth_NLSF_Q15, psDec->LPC_order );
   22.81 -@@ -158,7 +168,7 @@ void silk_CNG(
   22.82 -             /* Update states */
   22.83 -             CNG_sig_Q10[ MAX_LPC_ORDER + i ] = silk_ADD_LSHIFT( CNG_sig_Q10[ MAX_LPC_ORDER + i ], sum_Q6, 4 );
   22.84 - 
   22.85 --            frame[ i ] = silk_ADD_SAT16( frame[ i ], silk_RSHIFT_ROUND( sum_Q6, 6 ) );
   22.86 -+            frame[ i ] = silk_ADD_SAT16( frame[ i ], silk_RSHIFT_ROUND( CNG_sig_Q10[ MAX_LPC_ORDER + i ], 10 ) );
   22.87 -         }
   22.88 -         silk_memcpy( psCNG->CNG_synth_state, &CNG_sig_Q10[ length ], MAX_LPC_ORDER * sizeof( opus_int32 ) );
   22.89 -     } else {
   22.90 -diff --git a/silk/decode_frame.c b/silk/decode_frame.c
   22.91 -index 37459a3..6a7cffb 100644
   22.92 ---- a/silk/decode_frame.c
   22.93 -+++ b/silk/decode_frame.c
   22.94 -@@ -107,16 +107,16 @@ opus_int silk_decode_frame(
   22.95 -     silk_memmove( psDec->outBuf, &psDec->outBuf[ psDec->frame_length ], mv_len * sizeof(opus_int16) );
   22.96 -     silk_memcpy( &psDec->outBuf[ mv_len ], pOut, psDec->frame_length * sizeof( opus_int16 ) );
   22.97 - 
   22.98 --    /****************************************************************/
   22.99 --    /* Ensure smooth connection of extrapolated and good frames     */
  22.100 --    /****************************************************************/
  22.101 --    silk_PLC_glue_frames( psDec, pOut, L );
  22.102 --
  22.103 -     /************************************************/
  22.104 -     /* Comfort noise generation / estimation        */
  22.105 -     /************************************************/
  22.106 -     silk_CNG( psDec, psDecCtrl, pOut, L );
  22.107 - 
  22.108 -+    /****************************************************************/
  22.109 -+    /* Ensure smooth connection of extrapolated and good frames     */
  22.110 -+    /****************************************************************/
  22.111 -+    silk_PLC_glue_frames( psDec, pOut, L );
  22.112 -+
  22.113 -     /* Update some decoder state variables */
  22.114 -     psDec->lagPrev = psDecCtrl->pitchL[ psDec->nb_subfr - 1 ];
  22.115 - 
  22.116 --- 
  22.117 -1.7.2.5
  22.118 -
    23.1 --- a/external/opus-1.0.3/002-opus.git-a88d8365.patch	Sat Oct 05 10:33:14 2019 -0700
    23.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.3 @@ -1,28 +0,0 @@
    23.4 -From a88d8365d42e5369777afa496b43ea88a1aa9106 Mon Sep 17 00:00:00 2001
    23.5 -From: Jean-Marc Valin <jmvalin@jmvalin.ca>
    23.6 -Date: Wed, 18 Jun 2014 17:06:32 -0400
    23.7 -Subject: [PATCH] Fixes a bug in silk_sum_sqr_shift() that was causing issues with Burg.
    23.8 -
    23.9 -When an overflow happened in silk_sum_sqr_shift(), the sample pair causing
   23.10 -the overflow would be counted twice. This would lead to the C0 in
   23.11 -silk_burg_modified() being too large and cause problems on loud, tonal
   23.12 -signals. Thanks to Marcello Caramma for tracking down the problem.
   23.13 ----
   23.14 - silk/sum_sqr_shift.c |    1 +
   23.15 - 1 files changed, 1 insertions(+), 0 deletions(-)
   23.16 -
   23.17 -diff --git a/silk/sum_sqr_shift.c b/silk/sum_sqr_shift.c
   23.18 -index 12514c9..129df19 100644
   23.19 ---- a/silk/sum_sqr_shift.c
   23.20 -+++ b/silk/sum_sqr_shift.c
   23.21 -@@ -53,6 +53,7 @@ void silk_sum_sqr_shift(
   23.22 -             /* Scale down */
   23.23 -             nrg = (opus_int32)silk_RSHIFT_uint( (opus_uint32)nrg, 2 );
   23.24 -             shft = 2;
   23.25 -+            i+=2;
   23.26 -             break;
   23.27 -         }
   23.28 -     }
   23.29 --- 
   23.30 -1.7.2.5
   23.31 -
    24.1 --- a/external/opus-1.0.3/003-opus.git-25b27a9c.patch	Sat Oct 05 10:33:14 2019 -0700
    24.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.3 @@ -1,78 +0,0 @@
    24.4 -From 25b27a9c167302769db512a9e32c66323bc7904c Mon Sep 17 00:00:00 2001
    24.5 -From: Mark Harris <mark.hsj@gmail.com>
    24.6 -Date: Thu, 27 Nov 2014 08:48:09 -0800
    24.7 -Subject: [PATCH] multistream: improve arg check
    24.8 -
    24.9 -Avoid undefined behavior (signed arithmetic overflow) or
   24.10 -implementation-defined behavior (malloc(0)) on out-of-range arguments,
   24.11 -e.g. opus_multistream_encoder_create(48000, 2, 2147483647, 1, ...)
   24.12 -or opus_multistream_surround_encoder_create(48000, 3, 0, ...).
   24.13 -
   24.14 -Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
   24.15 ----
   24.16 - src/opus_multistream_decoder.c |  4 ++--
   24.17 - src/opus_multistream_encoder.c | 14 +++++++++++---
   24.18 - 2 files changed, 13 insertions(+), 5 deletions(-)
   24.19 -
   24.20 ---- opus-1.0.3/src/opus_multistream.c~	2013-07-11 07:16:52.000000000 +0300
   24.21 -+++ opus-1.0.3/src/opus_multistream.c	2014-12-20 12:20:10.000000000 +0200
   24.22 -@@ -215,7 +215,7 @@ static int opus_multistream_encoder_init
   24.23 -    char *ptr;
   24.24 - 
   24.25 -    if ((channels>255) || (channels<1) || (coupled_streams>streams) ||
   24.26 --       (coupled_streams+streams>255) || (streams<1) || (coupled_streams<0))
   24.27 -+       (streams<1) || (coupled_streams<0) || (streams>255-coupled_streams))
   24.28 -       return OPUS_BAD_ARG;
   24.29 - 
   24.30 -    st->layout.nb_channels = channels;
   24.31 -@@ -325,7 +325,7 @@ OpusMSEncoder *opus_multistream_encoder_
   24.32 -    int ret;
   24.33 -    OpusMSEncoder *st;
   24.34 -    if ((channels>255) || (channels<1) || (coupled_streams>streams) ||
   24.35 --       (coupled_streams+streams>255) || (streams<1) || (coupled_streams<0))
   24.36 -+       (streams<1) || (coupled_streams<0) || (streams>255-coupled_streams))
   24.37 -    {
   24.38 -       if (error)
   24.39 -          *error = OPUS_BAD_ARG;
   24.40 -@@ -361,6 +361,7 @@ OpusMSEncoder *opus_multistream_surround
   24.41 - )
   24.42 - {
   24.43 -    int ret;
   24.44 -+   opus_int32 size;
   24.45 -    OpusMSEncoder *st;
   24.46 -    if ((channels>255) || (channels<1))
   24.47 -    {
   24.48 -@@ -368,7 +369,14 @@ OpusMSEncoder *opus_multistream_surround
   24.49 -          *error = OPUS_BAD_ARG;
   24.50 -       return NULL;
   24.51 -    }
   24.52 --   st = (OpusMSEncoder *)opus_alloc(opus_multistream_surround_encoder_get_size(channels, mapping_family));
   24.53 -+   size = opus_multistream_surround_encoder_get_size(channels, mapping_family);
   24.54 -+   if (!size)
   24.55 -+   {
   24.56 -+      if (error)
   24.57 -+         *error = OPUS_UNIMPLEMENTED;
   24.58 -+      return NULL;
   24.59 -+   }
   24.60 -+   st = (OpusMSEncoder *)opus_alloc(size);
   24.61 -    if (st==NULL)
   24.62 -    {
   24.63 -       if (error)
   24.64 -@@ -856,7 +864,7 @@ int opus_multistream_decoder_init(
   24.65 -    char *ptr;
   24.66 - 
   24.67 -    if ((channels>255) || (channels<1) || (coupled_streams>streams) ||
   24.68 --       (coupled_streams+streams>255) || (streams<1) || (coupled_streams<0))
   24.69 -+       (streams<1) || (coupled_streams<0) || (streams>255-coupled_streams))
   24.70 -       return OPUS_BAD_ARG;
   24.71 - 
   24.72 -    st->layout.nb_channels = channels;
   24.73 -@@ -900,7 +908,7 @@ OpusMSDecoder *opus_multistream_decoder_
   24.74 -    int ret;
   24.75 -    OpusMSDecoder *st;
   24.76 -    if ((channels>255) || (channels<1) || (coupled_streams>streams) ||
   24.77 --       (coupled_streams+streams>255) || (streams<1) || (coupled_streams<0))
   24.78 -+       (streams<1) || (coupled_streams<0) || (streams>255-coupled_streams))
   24.79 -    {
   24.80 -       if (error)
   24.81 -          *error = OPUS_BAD_ARG;
    25.1 --- a/external/opus-1.0.3/004-opus.git-3499e78b.patch	Sat Oct 05 10:33:14 2019 -0700
    25.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.3 @@ -1,169 +0,0 @@
    25.4 -From: Koen Vos <koenvos74@gmail.com>
    25.5 -Date: Mon, 10 Aug 2015 16:22:25 +0000 (-0400)
    25.6 -Subject: Fix for flutter with FEC
    25.7 -X-Git-Url: http://git.xiph.org/?p=opus.git;a=commitdiff_plain;h=3499e78bd5a93edcef80f6cbd88e7fc1e1666d9b
    25.8 -
    25.9 -Fix for flutter with FEC
   25.10 -
   25.11 -The bug was caused by an improper feedback of the per-frame bitrate, causing
   25.12 -the bitrate to jump up and down from frame to frame, within a packet.
   25.13 -The patch avoids this, and also gives a slight improvement in general for
   25.14 -multi-frame packets, even without FEC.
   25.15 -
   25.16 -Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
   25.17 ----
   25.18 -
   25.19 -diff --git a/silk/control_SNR.c b/silk/control_SNR.c
   25.20 -index f04e69f..cee87eb 100644
   25.21 ---- a/silk/control_SNR.c
   25.22 -+++ b/silk/control_SNR.c
   25.23 -@@ -66,16 +66,11 @@ opus_int silk_control_SNR(
   25.24 -             if( TargetRate_bps <= rateTable[ k ] ) {
   25.25 -                 frac_Q6 = silk_DIV32( silk_LSHIFT( TargetRate_bps - rateTable[ k - 1 ], 6 ),
   25.26 -                                                  rateTable[ k ] - rateTable[ k - 1 ] );
   25.27 -                 psEncC->SNR_dB_Q7 = silk_LSHIFT( silk_SNR_table_Q1[ k - 1 ], 6 ) + silk_MUL( frac_Q6, silk_SNR_table_Q1[ k ] - silk_SNR_table_Q1[ k - 1 ] );
   25.28 -                 break;
   25.29 -             }
   25.30 -         }
   25.31 --
   25.32 --        /* Reduce coding quality whenever LBRR is enabled, to free up some bits */
   25.33 --        if( psEncC->LBRR_enabled ) {
   25.34 --            psEncC->SNR_dB_Q7 = silk_SMLABB( psEncC->SNR_dB_Q7, 12 - psEncC->LBRR_GainIncreases, SILK_FIX_CONST( -0.25, 7 ) );
   25.35 --        }
   25.36 -     }
   25.37 - 
   25.38 -     return ret;
   25.39 - }
   25.40 -diff --git a/silk/control_codec.c b/silk/control_codec.c
   25.41 -index 1f674bd..044eea3 100644
   25.42 ---- a/silk/control_codec.c
   25.43 -+++ b/silk/control_codec.c
   25.44 -@@ -393,30 +393,36 @@ static opus_int silk_setup_complexity(
   25.45 - }
   25.46 - 
   25.47 - static inline opus_int silk_setup_LBRR(
   25.48 -     silk_encoder_state          *psEncC,            /* I/O                      */
   25.49 -     const opus_int32            TargetRate_bps      /* I                        */
   25.50 - )
   25.51 - {
   25.52 --    opus_int   ret = SILK_NO_ERROR;
   25.53 -+    opus_int   LBRR_in_previous_packet, ret = SILK_NO_ERROR;
   25.54 -     opus_int32 LBRR_rate_thres_bps;
   25.55 - 
   25.56 -+    LBRR_in_previous_packet = psEncC->LBRR_enabled;
   25.57 -     psEncC->LBRR_enabled = 0;
   25.58 -     if( psEncC->useInBandFEC && psEncC->PacketLoss_perc > 0 ) {
   25.59 -         if( psEncC->fs_kHz == 8 ) {
   25.60 -             LBRR_rate_thres_bps = LBRR_NB_MIN_RATE_BPS;
   25.61 -         } else if( psEncC->fs_kHz == 12 ) {
   25.62 -             LBRR_rate_thres_bps = LBRR_MB_MIN_RATE_BPS;
   25.63 -         } else {
   25.64 -             LBRR_rate_thres_bps = LBRR_WB_MIN_RATE_BPS;
   25.65 -         }
   25.66 -         LBRR_rate_thres_bps = silk_SMULWB( silk_MUL( LBRR_rate_thres_bps, 125 - silk_min( psEncC->PacketLoss_perc, 25 ) ), SILK_FIX_CONST( 0.01, 16 ) );
   25.67 - 
   25.68 -         if( TargetRate_bps > LBRR_rate_thres_bps ) {
   25.69 -             /* Set gain increase for coding LBRR excitation */
   25.70 -+            if( LBRR_in_previous_packet == 0 ) {
   25.71 -+                /* Previous packet did not have LBRR, and was therefore coded at a higher bitrate */
   25.72 -+                psEncC->LBRR_GainIncreases = 7;
   25.73 -+            } else {
   25.74 -+                psEncC->LBRR_GainIncreases = silk_max_int( 7 - silk_SMULWB( (opus_int32)psEncC->PacketLoss_perc, SILK_FIX_CONST( 0.4, 16 ) ), 2 );
   25.75 -+            }
   25.76 -             psEncC->LBRR_enabled = 1;
   25.77 --            psEncC->LBRR_GainIncreases = silk_max_int( 7 - silk_SMULWB( (opus_int32)psEncC->PacketLoss_perc, SILK_FIX_CONST( 0.4, 16 ) ), 2 );
   25.78 -         }
   25.79 -     }
   25.80 - 
   25.81 -     return ret;
   25.82 - }
   25.83 -diff --git a/silk/enc_API.c b/silk/enc_API.c
   25.84 -index f1993ad..f806028 100644
   25.85 ---- a/silk/enc_API.c
   25.86 -+++ b/silk/enc_API.c
   25.87 -@@ -372,34 +372,41 @@ opus_int silk_Encode(                                   /* O    Returns error co
   25.88 -                     }
   25.89 -                 }
   25.90 - 
   25.91 -                 /* Reset LBRR flags */
   25.92 -                 for( n = 0; n < encControl->nChannelsInternal; n++ ) {
   25.93 -                     silk_memset( psEnc->state_Fxx[ n ].sCmn.LBRR_flags, 0, sizeof( psEnc->state_Fxx[ n ].sCmn.LBRR_flags ) );
   25.94 -                 }
   25.95 -+
   25.96 -+                psEnc->nBitsUsedLBRR = ec_tell( psRangeEnc );
   25.97 -             }
   25.98 - 
   25.99 -             silk_HP_variable_cutoff( psEnc->state_Fxx );
  25.100 - 
  25.101 -             /* Total target bits for packet */
  25.102 -             nBits = silk_DIV32_16( silk_MUL( encControl->bitRate, encControl->payloadSize_ms ), 1000 );
  25.103 --            /* Subtract half of the bits already used */
  25.104 -+            /* Subtract bits used for LBRR */
  25.105 -             if( !prefillFlag ) {
  25.106 --                nBits -= ec_tell( psRangeEnc ) >> 1;
  25.107 -+                nBits -= psEnc->nBitsUsedLBRR;
  25.108 -             }
  25.109 -             /* Divide by number of uncoded frames left in packet */
  25.110 --            nBits = silk_DIV32_16( nBits, psEnc->state_Fxx[ 0 ].sCmn.nFramesPerPacket - psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded );
  25.111 -+            nBits = silk_DIV32_16( nBits, psEnc->state_Fxx[ 0 ].sCmn.nFramesPerPacket );
  25.112 -             /* Convert to bits/second */
  25.113 -             if( encControl->payloadSize_ms == 10 ) {
  25.114 -                 TargetRate_bps = silk_SMULBB( nBits, 100 );
  25.115 -             } else {
  25.116 -                 TargetRate_bps = silk_SMULBB( nBits, 50 );
  25.117 -             }
  25.118 --            /* Subtract fraction of bits in excess of target in previous packets */
  25.119 -+            /* Subtract fraction of bits in excess of target in previous frames and packets */
  25.120 -             TargetRate_bps -= silk_DIV32_16( silk_MUL( psEnc->nBitsExceeded, 1000 ), BITRESERVOIR_DECAY_TIME_MS );
  25.121 -+            if( !prefillFlag && psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded > 0 ) {
  25.122 -+                /* Compare actual vs target bits so far in this packet */
  25.123 -+                opus_int32 bitsBalance = ec_tell( psRangeEnc ) - psEnc->nBitsUsedLBRR - nBits * psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded;
  25.124 -+                TargetRate_bps -= silk_DIV32_16( silk_MUL( bitsBalance, 1000 ), BITRESERVOIR_DECAY_TIME_MS );
  25.125 -+            }
  25.126 -             /* Never exceed input bitrate */
  25.127 -             TargetRate_bps = silk_LIMIT( TargetRate_bps, encControl->bitRate, 5000 );
  25.128 - 
  25.129 -             /* Convert Left/Right to Mid/Side */
  25.130 -             if( encControl->nChannelsInternal == 2 ) {
  25.131 -                 silk_stereo_LR_to_MS( &psEnc->sStereo, &psEnc->state_Fxx[ 0 ].sCmn.inputBuf[ 2 ], &psEnc->state_Fxx[ 1 ].sCmn.inputBuf[ 2 ],
  25.132 -                     psEnc->sStereo.predIx[ psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded ], &psEnc->sStereo.mid_only_flags[ psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded ],
  25.133 -diff --git a/silk/fixed/structs_FIX.h b/silk/fixed/structs_FIX.h
  25.134 -index 244b479..3294b25 100644
  25.135 ---- a/silk/fixed/structs_FIX.h
  25.136 -+++ b/silk/fixed/structs_FIX.h
  25.137 -@@ -112,14 +112,15 @@ typedef struct {
  25.138 - 
  25.139 - /************************/
  25.140 - /* Encoder Super Struct */
  25.141 - /************************/
  25.142 - typedef struct {
  25.143 -     silk_encoder_state_FIX      state_Fxx[ ENCODER_NUM_CHANNELS ];
  25.144 -     stereo_enc_state            sStereo;
  25.145 -+    opus_int32                  nBitsUsedLBRR;
  25.146 -     opus_int32                  nBitsExceeded;
  25.147 -     opus_int                    nChannelsAPI;
  25.148 -     opus_int                    nChannelsInternal;
  25.149 -     opus_int                    nPrevChannelsInternal;
  25.150 -     opus_int                    timeSinceSwitchAllowed_ms;
  25.151 -     opus_int                    allowBandwidthSwitch;
  25.152 -     opus_int                    prev_decode_only_middle;
  25.153 -diff --git a/silk/float/structs_FLP.h b/silk/float/structs_FLP.h
  25.154 -index bb529e7..14d647c 100644
  25.155 ---- a/silk/float/structs_FLP.h
  25.156 -+++ b/silk/float/structs_FLP.h
  25.157 -@@ -111,14 +111,15 @@ typedef struct {
  25.158 - 
  25.159 - /************************/
  25.160 - /* Encoder Super Struct */
  25.161 - /************************/
  25.162 - typedef struct {
  25.163 -     silk_encoder_state_FLP      state_Fxx[ ENCODER_NUM_CHANNELS ];
  25.164 -     stereo_enc_state            sStereo;
  25.165 -+    opus_int32                  nBitsUsedLBRR;
  25.166 -     opus_int32                  nBitsExceeded;
  25.167 -     opus_int                    nChannelsAPI;
  25.168 -     opus_int                    nChannelsInternal;
  25.169 -     opus_int                    nPrevChannelsInternal;
  25.170 -     opus_int                    timeSinceSwitchAllowed_ms;
  25.171 -     opus_int                    allowBandwidthSwitch;
  25.172 -     opus_int                    prev_decode_only_middle;
    26.1 --- a/external/opus-1.0.3/005-opus.git-70a3d641.patch	Sat Oct 05 10:33:14 2019 -0700
    26.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.3 @@ -1,49 +0,0 @@
    26.4 -From: Felicia Lim <flim@google.com>
    26.5 -Date: Thu, 28 Jul 2016 13:21:19 +0000 (+0200)
    26.6 -Subject: Ensure that NLSF cannot be negative when computing a min distance between them
    26.7 -X-Git-Tag: v1.1.4~1
    26.8 -X-Git-Url: http://git.xiph.org/?p=opus.git;a=commitdiff_plain;h=70a3d641b760b3d313b6025f82aed93a460720e5
    26.9 -
   26.10 -Ensure that NLSF cannot be negative when computing a min distance between them
   26.11 -
   26.12 -Without the fix, very large NLSF values could cause the stabilization code
   26.13 -in silk/NLSF_stabilize.c to wrap-around and have the last value in
   26.14 -NLSF_Q15[] to be negative, close to -32768. That value would then be
   26.15 -used in silk_NLSF2A() to compute f_int, which would be equal to -128. Since
   26.16 -f_int is used to look up into constant table silk_LSFCosTab_FIX_Q12[], it
   26.17 -would cause two 16-bit reads, 256 bytes and 254 bytes before the constant
   26.18 -table. In nornal circumstances the code will simply read from the wrong
   26.19 -table, resulting in an unstable LPC filter. The filter would then go
   26.20 -through the LPC stabilization code at the end of silk_NLSF2A(). Ultimately
   26.21 -the output audio would be garbage, but no worse than with any other harmless
   26.22 -bad packet.
   26.23 -
   26.24 -For this bug to cause a crash, the linker would have to put the relevant
   26.25 -at the very beginning of the segment, with unaddressable memory just before it.
   26.26 -Alternatively, if the code is compiled with assertions enable, then it will
   26.27 -abort. The only way this could cause a data leak would be for the linker to
   26.28 -put the silk_LSFCosTab_FIX_Q12[] within 256 bytes after sensitive process
   26.29 -information, which is highly unlikely. Even in that circumstance, only 32 bits
   26.30 -of data could be read, at location outside of the attacker's control. The
   26.31 -output would be in the form of audio that would have to be mapped back to
   26.32 -the original 32-bit data.
   26.33 -
   26.34 -This was reported as CVE-2017-0381. Contrary to that report, we do not believe
   26.35 -that any remote code execution is possible.
   26.36 -
   26.37 -Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
   26.38 ----
   26.39 -
   26.40 -diff --git a/silk/NLSF_stabilize.c b/silk/NLSF_stabilize.c
   26.41 -index 1fa1ea3..8f3426b 100644
   26.42 ---- a/silk/NLSF_stabilize.c
   26.43 -+++ b/silk/NLSF_stabilize.c
   26.44 -@@ -130,7 +130,7 @@ void silk_NLSF_stabilize(
   26.45 - 
   26.46 -         /* Keep delta_min distance between the NLSFs */
   26.47 -         for( i = 1; i < L; i++ )
   26.48 --            NLSF_Q15[i] = silk_max_int( NLSF_Q15[i], NLSF_Q15[i-1] + NDeltaMin_Q15[i] );
   26.49 -+            NLSF_Q15[i] = silk_max_int( NLSF_Q15[i], silk_ADD_SAT16( NLSF_Q15[i-1], NDeltaMin_Q15[i] ) );
   26.50 - 
   26.51 -         /* Last NLSF should be no higher than 1 - NDeltaMin[L] */
   26.52 -         NLSF_Q15[L-1] = silk_min_int( NLSF_Q15[L-1], (1<<15) - NDeltaMin_Q15[L] );
    27.1 --- a/external/opus-1.0.3/006-opus.git-6e961737.patch	Sat Oct 05 10:33:14 2019 -0700
    27.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.3 @@ -1,32 +0,0 @@
    27.4 -From: Daniel Verkamp <daniel@drv.nu>
    27.5 -Date: Thu, 22 Oct 2015 00:24:41 +0000 (-0700)
    27.6 -Subject: win32: only use dllexport when building DLL
    27.7 -X-Git-Tag: v1.1.3~76
    27.8 -X-Git-Url: http://git.xiph.org/?p=opus.git;a=commitdiff_plain;h=6e9617371f7cf3f669a60d9540723a01f1128fc8
    27.9 -
   27.10 -win32: only use dllexport when building DLL
   27.11 -
   27.12 -If building a static library, marking symbols as dllexport causes them
   27.13 -to be exported from the final executable. For example, run
   27.14 -objdump -x opus_demo.exe on a --disabled-shared build and look for the
   27.15 -export table; there should not be one in a normal Win32 .exe file, but
   27.16 -when linking static libopus, the exe exports all of the opus_* public
   27.17 -functions.
   27.18 -
   27.19 -Use the libtool-defined DLL_EXPORT flag to determine whether we are
   27.20 -building a DLL and only specify __declspec(dllexport) in that case.
   27.21 ----
   27.22 -
   27.23 -diff --git a/include/opus_defines.h b/include/opus_defines.h
   27.24 -index 647ed5d..315412d 100644
   27.25 ---- a/include/opus_defines.h
   27.26 -+++ b/include/opus_defines.h
   27.27 -@@ -65,7 +65,7 @@ extern "C" {
   27.28 - 
   27.29 - #ifndef OPUS_EXPORT
   27.30 - # if defined(WIN32)
   27.31 --#  ifdef OPUS_BUILD
   27.32 -+#  if defined(OPUS_BUILD) && defined(DLL_EXPORT)
   27.33 - #   define OPUS_EXPORT __declspec(dllexport)
   27.34 - #  else
   27.35 - #   define OPUS_EXPORT
    28.1 --- a/external/opus-1.0.3/030-opus-1.0.3-decoder-only.diff	Sat Oct 05 10:33:14 2019 -0700
    28.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.3 @@ -1,716 +0,0 @@
    28.4 -diff -urNp opus-1.0.3/celt/bands.c opus-1.0.3-dec/celt/bands.c
    28.5 ---- opus-1.0.3/celt/bands.c	2013-07-11 07:16:52.000000000 +0300
    28.6 -+++ opus-1.0.3-dec/celt/bands.c	2017-03-03 08:10:00.000000000 +0300
    28.7 -@@ -295,6 +295,7 @@ void anti_collapse(const CELTMode *m, ce
    28.8 -    }
    28.9 - }
   28.10 - 
   28.11 -+#ifdef OPUS_ENABLE_ENCODER
   28.12 - static void intensity_stereo(const CELTMode *m, celt_norm *X, celt_norm *Y, const celt_ener *bandE, int bandID, int N)
   28.13 - {
   28.14 -    int i = bandID;
   28.15 -@@ -332,6 +333,7 @@ static void stereo_split(celt_norm *X, c
   28.16 -       Y[j] = r-l;
   28.17 -    }
   28.18 - }
   28.19 -+#endif /* OPUS_ENABLE_ENCODER */
   28.20 - 
   28.21 - static void stereo_merge(celt_norm *X, celt_norm *Y, opus_val16 mid, int N)
   28.22 - {
   28.23 -@@ -675,11 +677,14 @@ static unsigned quant_band(int encode, c
   28.24 -          int sign=0;
   28.25 -          if (*remaining_bits>=1<<BITRES)
   28.26 -          {
   28.27 -+            #ifdef OPUS_ENABLE_ENCODER
   28.28 -             if (encode)
   28.29 -             {
   28.30 -                sign = x[0]<0;
   28.31 -                ec_enc_bits(ec, sign, 1);
   28.32 --            } else {
   28.33 -+            } else
   28.34 -+            #endif
   28.35 -+            {
   28.36 -                sign = ec_dec_bits(ec, 1);
   28.37 -             }
   28.38 -             *remaining_bits -= 1<<BITRES;
   28.39 -@@ -714,8 +719,10 @@ static unsigned quant_band(int encode, c
   28.40 -          static const unsigned char bit_interleave_table[16]={
   28.41 -            0,1,1,1,2,3,3,3,2,3,3,3,2,3,3,3
   28.42 -          };
   28.43 -+         #ifdef OPUS_ENABLE_ENCODER
   28.44 -          if (encode)
   28.45 -             haar1(X, N>>k, 1<<k);
   28.46 -+         #endif
   28.47 -          if (lowband)
   28.48 -             haar1(lowband, N>>k, 1<<k);
   28.49 -          fill = bit_interleave_table[fill&0xF]|bit_interleave_table[fill>>4]<<2;
   28.50 -@@ -726,8 +733,10 @@ static unsigned quant_band(int encode, c
   28.51 -       /* Increasing the time resolution */
   28.52 -       while ((N_B&1) == 0 && tf_change<0)
   28.53 -       {
   28.54 -+         #ifdef OPUS_ENABLE_ENCODER
   28.55 -          if (encode)
   28.56 -             haar1(X, N_B, B);
   28.57 -+         #endif
   28.58 -          if (lowband)
   28.59 -             haar1(lowband, N_B, B);
   28.60 -          fill |= fill<<B;
   28.61 -@@ -742,8 +751,10 @@ static unsigned quant_band(int encode, c
   28.62 -       /* Reorganize the samples in time order instead of frequency order */
   28.63 -       if (B0>1)
   28.64 -       {
   28.65 -+         #ifdef OPUS_ENABLE_ENCODER
   28.66 -          if (encode)
   28.67 -             deinterleave_hadamard(X, N_B>>recombine, B0<<recombine, longBlocks);
   28.68 -+         #endif
   28.69 -          if (lowband)
   28.70 -             deinterleave_hadamard(lowband, N_B>>recombine, B0<<recombine, longBlocks);
   28.71 -       }
   28.72 -@@ -779,6 +790,7 @@ static unsigned quant_band(int encode, c
   28.73 -       qn = compute_qn(N, b, offset, pulse_cap, stereo);
   28.74 -       if (stereo && i>=intensity)
   28.75 -          qn = 1;
   28.76 -+      #ifdef OPUS_ENABLE_ENCODER
   28.77 -       if (encode)
   28.78 -       {
   28.79 -          /* theta is the atan() of the ratio between the (normalized)
   28.80 -@@ -787,11 +799,14 @@ static unsigned quant_band(int encode, c
   28.81 -             2) they are orthogonal. */
   28.82 -          itheta = stereo_itheta(X, Y, stereo, N);
   28.83 -       }
   28.84 -+      #endif
   28.85 -       tell = ec_tell_frac(ec);
   28.86 -       if (qn!=1)
   28.87 -       {
   28.88 -+         #ifdef OPUS_ENABLE_ENCODER
   28.89 -          if (encode)
   28.90 -             itheta = (itheta*qn+8192)>>14;
   28.91 -+         #endif
   28.92 - 
   28.93 -          /* Entropy coding of the angle. We use a uniform pdf for the
   28.94 -             time split, a step for stereo, and a triangular one for the rest. */
   28.95 -@@ -802,10 +817,13 @@ static unsigned quant_band(int encode, c
   28.96 -             int x0 = qn/2;
   28.97 -             int ft = p0*(x0+1) + x0;
   28.98 -             /* Use a probability of p0 up to itheta=8192 and then use 1 after */
   28.99 -+            #ifdef OPUS_ENABLE_ENCODER
  28.100 -             if (encode)
  28.101 -             {
  28.102 -                ec_encode(ec,x<=x0?p0*x:(x-1-x0)+(x0+1)*p0,x<=x0?p0*(x+1):(x-x0)+(x0+1)*p0,ft);
  28.103 --            } else {
  28.104 -+            } else
  28.105 -+            #endif
  28.106 -+            {
  28.107 -                int fs;
  28.108 -                fs=ec_decode(ec,ft);
  28.109 -                if (fs<(x0+1)*p0)
  28.110 -@@ -817,13 +835,16 @@ static unsigned quant_band(int encode, c
  28.111 -             }
  28.112 -          } else if (B0>1 || stereo) {
  28.113 -             /* Uniform pdf */
  28.114 -+            #ifdef OPUS_ENABLE_ENCODER
  28.115 -             if (encode)
  28.116 -                ec_enc_uint(ec, itheta, qn+1);
  28.117 -             else
  28.118 -+            #endif
  28.119 -                itheta = ec_dec_uint(ec, qn+1);
  28.120 -          } else {
  28.121 -             int fs=1, ft;
  28.122 -             ft = ((qn>>1)+1)*((qn>>1)+1);
  28.123 -+            #ifdef OPUS_ENABLE_ENCODER
  28.124 -             if (encode)
  28.125 -             {
  28.126 -                int fl;
  28.127 -@@ -833,7 +854,9 @@ static unsigned quant_band(int encode, c
  28.128 -                 ft - ((qn + 1 - itheta)*(qn + 2 - itheta)>>1);
  28.129 - 
  28.130 -                ec_encode(ec, fl, fl+fs, ft);
  28.131 --            } else {
  28.132 -+            } else
  28.133 -+            #endif
  28.134 -+            {
  28.135 -                /* Triangular pdf */
  28.136 -                int fl=0;
  28.137 -                int fm;
  28.138 -@@ -857,6 +880,7 @@ static unsigned quant_band(int encode, c
  28.139 -             }
  28.140 -          }
  28.141 -          itheta = (opus_int32)itheta*16384/qn;
  28.142 -+         #ifdef OPUS_ENABLE_ENCODER
  28.143 -          if (encode && stereo)
  28.144 -          {
  28.145 -             if (itheta==0)
  28.146 -@@ -864,9 +888,11 @@ static unsigned quant_band(int encode, c
  28.147 -             else
  28.148 -                stereo_split(X, Y, N);
  28.149 -          }
  28.150 -+         #endif
  28.151 -          /* NOTE: Renormalising X and Y *may* help fixed-point a bit at very high rate.
  28.152 -                   Let's do that at higher complexity */
  28.153 -       } else if (stereo) {
  28.154 -+         #ifdef OPUS_ENABLE_ENCODER
  28.155 -          if (encode)
  28.156 -          {
  28.157 -             inv = itheta > 8192;
  28.158 -@@ -878,11 +904,14 @@ static unsigned quant_band(int encode, c
  28.159 -             }
  28.160 -             intensity_stereo(m, X, Y, bandE, i, N);
  28.161 -          }
  28.162 -+         #endif
  28.163 -          if (b>2<<BITRES && *remaining_bits > 2<<BITRES)
  28.164 -          {
  28.165 -+            #ifdef OPUS_ENABLE_ENCODER
  28.166 -             if (encode)
  28.167 -                ec_enc_bit_logp(ec, inv, 2);
  28.168 -             else
  28.169 -+            #endif
  28.170 -                inv = ec_dec_bit_logp(ec, 2);
  28.171 -          } else
  28.172 -             inv = 0;
  28.173 -@@ -941,12 +970,15 @@ static unsigned quant_band(int encode, c
  28.174 -          y2 = c ? X : Y;
  28.175 -          if (sbits)
  28.176 -          {
  28.177 -+            #ifdef OPUS_ENABLE_ENCODER
  28.178 -             if (encode)
  28.179 -             {
  28.180 -                /* Here we only need to encode a sign for the side */
  28.181 -                sign = x2[0]*y2[1] - x2[1]*y2[0] < 0;
  28.182 -                ec_enc_bits(ec, sign, 1);
  28.183 --            } else {
  28.184 -+            } else
  28.185 -+            #endif
  28.186 -+            {
  28.187 -                sign = ec_dec_bits(ec, 1);
  28.188 -             }
  28.189 -          }
  28.190 -@@ -1057,6 +1089,7 @@ static unsigned quant_band(int encode, c
  28.191 -          int K = get_pulses(q);
  28.192 - 
  28.193 -          /* Finally do the actual quantization */
  28.194 -+         #ifdef OPUS_ENABLE_ENCODER
  28.195 -          if (encode)
  28.196 -          {
  28.197 -             cm = alg_quant(X, N, K, spread, B, ec
  28.198 -@@ -1064,7 +1097,9 @@ static unsigned quant_band(int encode, c
  28.199 -                  , gain
  28.200 - #endif
  28.201 -                  );
  28.202 --         } else {
  28.203 -+         } else
  28.204 -+         #endif
  28.205 -+         {
  28.206 -             cm = alg_unquant(X, N, K, spread, B, ec, gain);
  28.207 -          }
  28.208 -       } else {
  28.209 -diff -urNp opus-1.0.3/celt/celt.c opus-1.0.3-dec/celt/celt.c
  28.210 ---- opus-1.0.3/celt/celt.c	2013-07-11 07:16:52.000000000 +0300
  28.211 -+++ opus-1.0.3-dec/celt/celt.c	2017-03-03 08:10:00.000000000 +0300
  28.212 -@@ -135,6 +135,7 @@ static int resampling_factor(opus_int32 
  28.213 -    return ret;
  28.214 - }
  28.215 - 
  28.216 -+#ifdef OPUS_ENABLE_ENCODER
  28.217 - /** Encoder state
  28.218 -  @brief Encoder state
  28.219 -  */
  28.220 -@@ -282,6 +283,7 @@ OPUS_CUSTOM_NOSTATIC int opus_custom_enc
  28.221 - 
  28.222 -    return OPUS_OK;
  28.223 - }
  28.224 -+#endif /* OPUS_ENABLE_ENCODER */
  28.225 - 
  28.226 - #ifdef CUSTOM_MODES
  28.227 - void opus_custom_encoder_destroy(CELTEncoder *st)
  28.228 -@@ -302,6 +304,7 @@ static inline opus_val16 SIG2WORD16(celt
  28.229 - #endif
  28.230 - }
  28.231 - 
  28.232 -+#ifdef OPUS_ENABLE_ENCODER
  28.233 - static int transient_analysis(const opus_val32 * OPUS_RESTRICT in, int len, int C,
  28.234 -                               int overlap)
  28.235 - {
  28.236 -@@ -419,6 +422,7 @@ static void compute_mdcts(const CELTMode
  28.237 -       } while (++c<C);
  28.238 -    }
  28.239 - }
  28.240 -+#endif /* OPUS_ENABLE_ENCODER */
  28.241 - 
  28.242 - /** Compute the IMDCT and apply window for all sub-frames and
  28.243 -     all channels in a frame */
  28.244 -@@ -545,6 +549,7 @@ static const signed char tf_select_table
  28.245 -       {0, -2, 0, -3,    3, 0, 1,-1},
  28.246 - };
  28.247 - 
  28.248 -+#ifdef OPUS_ENABLE_ENCODER
  28.249 - static opus_val32 l1_metric(const celt_norm *tmp, int N, int LM, int width)
  28.250 - {
  28.251 -    int i, j;
  28.252 -@@ -746,6 +751,7 @@ static void tf_encode(int start, int end
  28.253 -       tf_res[i] = tf_select_table[LM][4*isTransient+2*tf_select+tf_res[i]];
  28.254 -    /*printf("%d %d ", isTransient, tf_select); for(i=0;i<end;i++)printf("%d ", tf_res[i]);printf("\n");*/
  28.255 - }
  28.256 -+#endif /* OPUS_ENABLE_ENCODER */
  28.257 - 
  28.258 - static void tf_decode(int start, int end, int isTransient, int *tf_res, int LM, ec_dec *dec)
  28.259 - {
  28.260 -@@ -797,6 +803,7 @@ static void init_caps(const CELTMode *m,
  28.261 -    }
  28.262 - }
  28.263 - 
  28.264 -+#ifdef OPUS_ENABLE_ENCODER
  28.265 - static int alloc_trim_analysis(const CELTMode *m, const celt_norm *X,
  28.266 -       const opus_val16 *bandLogE, int end, int LM, int C, int N0)
  28.267 - {
  28.268 -@@ -1912,6 +1919,7 @@ bad_request:
  28.269 -    va_end(ap);
  28.270 -    return OPUS_UNIMPLEMENTED;
  28.271 - }
  28.272 -+#endif /* OPUS_ENABLE_ENCODER */
  28.273 - 
  28.274 - /**********************************************************************/
  28.275 - /*                                                                    */
  28.276 -diff -urNp opus-1.0.3/celt/cwrs.c opus-1.0.3-dec/celt/cwrs.c
  28.277 ---- opus-1.0.3/celt/cwrs.c	2013-07-11 07:16:52.000000000 +0300
  28.278 -+++ opus-1.0.3-dec/celt/cwrs.c	2017-03-03 08:10:00.000000000 +0300
  28.279 -@@ -587,6 +587,7 @@ void get_required_bits(opus_int16 *_bits
  28.280 - }
  28.281 - #endif /* CUSTOM_MODES */
  28.282 - 
  28.283 -+#ifdef OPUS_ENABLE_ENCODER
  28.284 - void encode_pulses(const int *_y,int _n,int _k,ec_enc *_enc){
  28.285 -   opus_uint32 i;
  28.286 -   celt_assert(_k>0);
  28.287 -@@ -620,6 +621,7 @@ void encode_pulses(const int *_y,int _n,
  28.288 -   }
  28.289 - #endif
  28.290 - }
  28.291 -+#endif /* OPUS_ENABLE_ENCODER */
  28.292 - 
  28.293 - void decode_pulses(int *_y,int _n,int _k,ec_dec *_dec)
  28.294 - {
  28.295 -diff -urNp opus-1.0.3/celt/laplace.c opus-1.0.3-dec/celt/laplace.c
  28.296 ---- opus-1.0.3/celt/laplace.c	2013-03-12 19:43:58.000000000 +0200
  28.297 -+++ opus-1.0.3-dec/celt/laplace.c	2017-03-03 08:10:00.000000000 +0300
  28.298 -@@ -48,6 +48,7 @@ static unsigned ec_laplace_get_freq1(uns
  28.299 -    return ft*(opus_int32)(16384-decay)>>15;
  28.300 - }
  28.301 - 
  28.302 -+#ifdef OPUS_ENABLE_ENCODER
  28.303 - void ec_laplace_encode(ec_enc *enc, int *value, unsigned fs, int decay)
  28.304 - {
  28.305 -    unsigned fl;
  28.306 -@@ -90,6 +91,7 @@ void ec_laplace_encode(ec_enc *enc, int 
  28.307 -    }
  28.308 -    ec_encode_bin(enc, fl, fl+fs, 15);
  28.309 - }
  28.310 -+#endif /* OPUS_ENABLE_ENCODER */
  28.311 - 
  28.312 - int ec_laplace_decode(ec_dec *dec, unsigned fs, int decay)
  28.313 - {
  28.314 -diff -urNp opus-1.0.3/celt/quant_bands.c opus-1.0.3-dec/celt/quant_bands.c
  28.315 ---- opus-1.0.3/celt/quant_bands.c	2013-07-11 07:16:52.000000000 +0300
  28.316 -+++ opus-1.0.3-dec/celt/quant_bands.c	2017-03-03 08:10:00.000000000 +0300
  28.317 -@@ -139,6 +139,7 @@ static const unsigned char e_prob_model[
  28.318 - 
  28.319 - static const unsigned char small_energy_icdf[3]={2,1,0};
  28.320 - 
  28.321 -+#ifdef OPUS_ENABLE_ENCODER
  28.322 - static opus_val32 loss_distortion(const opus_val16 *eBands, opus_val16 *oldEBands, int start, int end, int len, int C)
  28.323 - {
  28.324 -    int c, i;
  28.325 -@@ -418,6 +419,7 @@ void quant_energy_finalise(const CELTMod
  28.326 -       }
  28.327 -    }
  28.328 - }
  28.329 -+#endif /* OPUS_ENABLE_ENCODER */
  28.330 - 
  28.331 - void unquant_coarse_energy(const CELTMode *m, int start, int end, opus_val16 *oldEBands, int intra, ec_dec *dec, int C, int LM)
  28.332 - {
  28.333 -diff -urNp opus-1.0.3/celt/rate.c opus-1.0.3-dec/celt/rate.c
  28.334 ---- opus-1.0.3/celt/rate.c	2013-07-11 07:16:52.000000000 +0300
  28.335 -+++ opus-1.0.3-dec/celt/rate.c	2017-03-03 08:10:00.000000000 +0300
  28.336 -@@ -343,6 +343,7 @@ static inline int interp_bits2pulses(con
  28.337 -         This ensures that we have enough bits to code the skip flag.*/
  28.338 -       if (band_bits >= IMAX(thresh[j], alloc_floor+(1<<BITRES)))
  28.339 -       {
  28.340 -+         #ifdef OPUS_ENABLE_ENCODER
  28.341 -          if (encode)
  28.342 -          {
  28.343 -             /*This if() block is the only part of the allocation function that
  28.344 -@@ -360,7 +361,9 @@ static inline int interp_bits2pulses(con
  28.345 -                break;
  28.346 -             }
  28.347 -             ec_enc_bit_logp(ec, 0, 1);
  28.348 --         } else if (ec_dec_bit_logp(ec, 1)) {
  28.349 -+         } else
  28.350 -+         #endif /* OPUS_ENABLE_ENCODER */
  28.351 -+         if (ec_dec_bit_logp(ec, 1)) {
  28.352 -             break;
  28.353 -          }
  28.354 -          /*We used a bit to skip this band.*/
  28.355 -@@ -387,12 +390,14 @@ static inline int interp_bits2pulses(con
  28.356 -    /* Code the intensity and dual stereo parameters. */
  28.357 -    if (intensity_rsv > 0)
  28.358 -    {
  28.359 -+      #ifdef OPUS_ENABLE_ENCODER
  28.360 -       if (encode)
  28.361 -       {
  28.362 -          *intensity = IMIN(*intensity, codedBands);
  28.363 -          ec_enc_uint(ec, *intensity-start, codedBands+1-start);
  28.364 -       }
  28.365 -       else
  28.366 -+      #endif
  28.367 -          *intensity = start+ec_dec_uint(ec, codedBands+1-start);
  28.368 -    }
  28.369 -    else
  28.370 -@@ -404,9 +409,11 @@ static inline int interp_bits2pulses(con
  28.371 -    }
  28.372 -    if (dual_stereo_rsv > 0)
  28.373 -    {
  28.374 -+      #ifdef OPUS_ENABLE_ENCODER
  28.375 -       if (encode)
  28.376 -          ec_enc_bit_logp(ec, *dual_stereo, 1);
  28.377 -       else
  28.378 -+      #endif
  28.379 -          *dual_stereo = ec_dec_bit_logp(ec, 1);
  28.380 -    }
  28.381 -    else
  28.382 -diff -urNp opus-1.0.3/celt/vq.c opus-1.0.3-dec/celt/vq.c
  28.383 ---- opus-1.0.3/celt/vq.c	2013-05-27 01:54:05.000000000 +0300
  28.384 -+++ opus-1.0.3-dec/celt/vq.c	2017-03-03 08:10:00.000000000 +0300
  28.385 -@@ -151,6 +151,7 @@ static unsigned extract_collapse_mask(in
  28.386 -    return collapse_mask;
  28.387 - }
  28.388 - 
  28.389 -+#ifdef OPUS_ENABLE_ENCODER
  28.390 - unsigned alg_quant(celt_norm *X, int N, int K, int spread, int B, ec_enc *enc
  28.391 - #ifdef RESYNTH
  28.392 -    , opus_val16 gain
  28.393 -@@ -316,6 +317,7 @@ unsigned alg_quant(celt_norm *X, int N, 
  28.394 -    RESTORE_STACK;
  28.395 -    return collapse_mask;
  28.396 - }
  28.397 -+#endif /* OPUS_ENABLE_ENCODER */
  28.398 - 
  28.399 - /** Decode pulse vector and combine the result with the pitch vector to produce
  28.400 -     the final normalised signal in the current band. */
  28.401 -diff -urNp opus-1.0.3/celt_sources.mk opus-1.0.3-dec/celt_sources.mk
  28.402 ---- opus-1.0.3/celt_sources.mk	2013-07-11 07:16:52.000000000 +0300
  28.403 -+++ opus-1.0.3-dec/celt_sources.mk	2017-03-03 08:10:00.000000000 +0300
  28.404 -@@ -3,7 +3,6 @@ celt/celt.c \
  28.405 - celt/cwrs.c \
  28.406 - celt/entcode.c \
  28.407 - celt/entdec.c \
  28.408 --celt/entenc.c \
  28.409 - celt/kiss_fft.c \
  28.410 - celt/laplace.c \
  28.411 - celt/mathops.c \
  28.412 -@@ -14,3 +13,5 @@ celt/celt_lpc.c \
  28.413 - celt/quant_bands.c \
  28.414 - celt/rate.c \
  28.415 - celt/vq.c
  28.416 -+
  28.417 -+CELT_SOURCES_ENC = celt/entenc.c
  28.418 -diff -urNp opus-1.0.3/opus_sources.mk opus-1.0.3-dec/opus_sources.mk
  28.419 ---- opus-1.0.3/opus_sources.mk	2013-07-11 07:16:52.000000000 +0300
  28.420 -+++ opus-1.0.3-dec/opus_sources.mk	2017-03-03 08:10:00.000000000 +0300
  28.421 -@@ -1,5 +1,6 @@
  28.422 --OPUS_SOURCES = src/opus.c \
  28.423 --src/opus_decoder.c \
  28.424 -+OPUS_SOURCES = src/opus_decoder.c \
  28.425 -+src/opus_multistream.c
  28.426 -+
  28.427 -+OPUS_SOURCES_ENC = src/opus.c \
  28.428 - src/opus_encoder.c \
  28.429 --src/opus_multistream.c \
  28.430 - src/repacketizer.c
  28.431 -diff -urNp opus-1.0.3/silk/code_signs.c opus-1.0.3-dec/silk/code_signs.c
  28.432 ---- opus-1.0.3/silk/code_signs.c	2013-07-11 07:16:52.000000000 +0300
  28.433 -+++ opus-1.0.3-dec/silk/code_signs.c	2017-03-03 08:10:00.000000000 +0300
  28.434 -@@ -37,6 +37,7 @@ POSSIBILITY OF SUCH DAMAGE.
  28.435 - #define silk_enc_map(a)                  ( silk_RSHIFT( (a), 15 ) + 1 )
  28.436 - #define silk_dec_map(a)                  ( silk_LSHIFT( (a),  1 ) - 1 )
  28.437 - 
  28.438 -+#ifdef OPUS_ENABLE_ENCODER
  28.439 - /* Encodes signs of excitation */
  28.440 - void silk_encode_signs(
  28.441 -     ec_enc                      *psRangeEnc,                        /* I/O  Compressor data structure                   */
  28.442 -@@ -70,6 +71,7 @@ void silk_encode_signs(
  28.443 -         q_ptr += SHELL_CODEC_FRAME_LENGTH;
  28.444 -     }
  28.445 - }
  28.446 -+#endif /* OPUS_ENABLE_ENCODER */
  28.447 - 
  28.448 - /* Decodes signs of excitation */
  28.449 - void silk_decode_signs(
  28.450 -diff -urNp opus-1.0.3/silk/shell_coder.c opus-1.0.3-dec/silk/shell_coder.c
  28.451 ---- opus-1.0.3/silk/shell_coder.c	2013-07-11 07:16:52.000000000 +0300
  28.452 -+++ opus-1.0.3-dec/silk/shell_coder.c	2017-03-03 08:10:00.000000000 +0300
  28.453 -@@ -45,6 +45,7 @@ static inline void combine_pulses(
  28.454 -     }
  28.455 - }
  28.456 - 
  28.457 -+#ifdef OPUS_ENABLE_ENCODER
  28.458 - static inline void encode_split(
  28.459 -     ec_enc                      *psRangeEnc,    /* I/O  compressor data structure                   */
  28.460 -     const opus_int              p_child1,       /* I    pulse amplitude of first child subframe     */
  28.461 -@@ -56,6 +57,7 @@ static inline void encode_split(
  28.462 -         ec_enc_icdf( psRangeEnc, p_child1, &shell_table[ silk_shell_code_table_offsets[ p ] ], 8 );
  28.463 -     }
  28.464 - }
  28.465 -+#endif /* OPUS_ENABLE_ENCODER */
  28.466 - 
  28.467 - static inline void decode_split(
  28.468 -     opus_int                    *p_child1,      /* O    pulse amplitude of first child subframe     */
  28.469 -@@ -74,6 +76,7 @@ static inline void decode_split(
  28.470 -     }
  28.471 - }
  28.472 - 
  28.473 -+#ifdef OPUS_ENABLE_ENCODER
  28.474 - /* Shell encoder, operates on one shell code frame of 16 pulses */
  28.475 - void silk_shell_encoder(
  28.476 -     ec_enc                      *psRangeEnc,                    /* I/O  compressor data structure                   */
  28.477 -@@ -113,7 +116,7 @@ void silk_shell_encoder(
  28.478 -     encode_split( psRangeEnc, pulses0[ 12 ], pulses1[ 6 ], silk_shell_code_table0 );
  28.479 -     encode_split( psRangeEnc, pulses0[ 14 ], pulses1[ 7 ], silk_shell_code_table0 );
  28.480 - }
  28.481 --
  28.482 -+#endif /* OPUS_ENABLE_ENCODER */
  28.483 - 
  28.484 - /* Shell decoder, operates on one shell code frame of 16 pulses */
  28.485 - void silk_shell_decoder(
  28.486 -diff -urNp opus-1.0.3/silk_sources.mk opus-1.0.3-dec/silk_sources.mk
  28.487 ---- opus-1.0.3/silk_sources.mk	2013-03-12 19:43:58.000000000 +0200
  28.488 -+++ opus-1.0.3-dec/silk_sources.mk	2017-03-03 08:10:00.000000000 +0300
  28.489 -@@ -9,15 +9,8 @@ silk/decode_indices.c \
  28.490 - silk/decode_pulses.c \
  28.491 - silk/decoder_set_fs.c \
  28.492 - silk/dec_API.c \
  28.493 --silk/enc_API.c \
  28.494 --silk/encode_indices.c \
  28.495 --silk/encode_pulses.c \
  28.496 - silk/gain_quant.c \
  28.497 --silk/interpolate.c \
  28.498 --silk/LP_variable_cutoff.c \
  28.499 - silk/NLSF_decode.c \
  28.500 --silk/NSQ.c \
  28.501 --silk/NSQ_del_dec.c \
  28.502 - silk/PLC.c \
  28.503 - silk/shell_coder.c \
  28.504 - silk/tables_gain.c \
  28.505 -@@ -27,25 +20,8 @@ silk/tables_NLSF_CB_WB.c \
  28.506 - silk/tables_other.c \
  28.507 - silk/tables_pitch_lag.c \
  28.508 - silk/tables_pulses_per_block.c \
  28.509 --silk/VAD.c \
  28.510 --silk/control_audio_bandwidth.c \
  28.511 --silk/quant_LTP_gains.c \
  28.512 --silk/VQ_WMat_EC.c \
  28.513 --silk/HP_variable_cutoff.c \
  28.514 --silk/NLSF_encode.c \
  28.515 --silk/NLSF_VQ.c \
  28.516 - silk/NLSF_unpack.c \
  28.517 --silk/NLSF_del_dec_quant.c \
  28.518 --silk/process_NLSFs.c \
  28.519 --silk/stereo_LR_to_MS.c \
  28.520 - silk/stereo_MS_to_LR.c \
  28.521 --silk/check_control_input.c \
  28.522 --silk/control_SNR.c \
  28.523 --silk/init_encoder.c \
  28.524 --silk/control_codec.c \
  28.525 --silk/A2NLSF.c \
  28.526 --silk/ana_filt_bank_1.c \
  28.527 --silk/biquad_alt.c \
  28.528 - silk/bwexpander_32.c \
  28.529 - silk/bwexpander.c \
  28.530 - silk/debug.c \
  28.531 -@@ -61,22 +37,47 @@ silk/NLSF_stabilize.c \
  28.532 - silk/NLSF_VQ_weights_laroia.c \
  28.533 - silk/pitch_est_tables.c \
  28.534 - silk/resampler.c \
  28.535 --silk/resampler_down2_3.c \
  28.536 --silk/resampler_down2.c \
  28.537 - silk/resampler_private_AR2.c \
  28.538 - silk/resampler_private_down_FIR.c \
  28.539 - silk/resampler_private_IIR_FIR.c \
  28.540 - silk/resampler_private_up2_HQ.c \
  28.541 - silk/resampler_rom.c \
  28.542 --silk/sigm_Q15.c \
  28.543 - silk/sort.c \
  28.544 - silk/sum_sqr_shift.c \
  28.545 --silk/stereo_decode_pred.c \
  28.546 -+silk/stereo_decode_pred.c
  28.547 -+
  28.548 -+SILK_SOURCES_ENC = \
  28.549 -+silk/enc_API.c \
  28.550 -+silk/encode_indices.c \
  28.551 -+silk/encode_pulses.c \
  28.552 -+silk/interpolate.c \
  28.553 -+silk/LP_variable_cutoff.c \
  28.554 -+silk/NSQ.c \
  28.555 -+silk/NSQ_del_dec.c \
  28.556 -+silk/VAD.c \
  28.557 -+silk/control_audio_bandwidth.c \
  28.558 -+silk/quant_LTP_gains.c \
  28.559 -+silk/VQ_WMat_EC.c \
  28.560 -+silk/HP_variable_cutoff.c \
  28.561 -+silk/NLSF_encode.c \
  28.562 -+silk/NLSF_VQ.c \
  28.563 -+silk/NLSF_del_dec_quant.c \
  28.564 -+silk/process_NLSFs.c \
  28.565 -+silk/stereo_LR_to_MS.c \
  28.566 -+silk/check_control_input.c \
  28.567 -+silk/control_SNR.c \
  28.568 -+silk/init_encoder.c \
  28.569 -+silk/control_codec.c \
  28.570 -+silk/A2NLSF.c \
  28.571 -+silk/ana_filt_bank_1.c \
  28.572 -+silk/biquad_alt.c \
  28.573 -+silk/resampler_down2_3.c \
  28.574 -+silk/resampler_down2.c \
  28.575 -+silk/sigm_Q15.c \
  28.576 - silk/stereo_encode_pred.c \
  28.577 - silk/stereo_find_predictor.c \
  28.578 - silk/stereo_quant_pred.c
  28.579 - 
  28.580 --
  28.581 - SILK_SOURCES_FIXED = \
  28.582 - silk/fixed/LTP_analysis_filter_FIX.c \
  28.583 - silk/fixed/LTP_scale_ctrl_FIX.c \
  28.584 -diff -urNp opus-1.0.3/src/opus_multistream.c opus-1.0.3-dec/src/opus_multistream.c
  28.585 ---- opus-1.0.3/src/opus_multistream.c	2017-03-02 05:51:10.000000000 +0300
  28.586 -+++ opus-1.0.3-dec/src/opus_multistream.c	2017-03-03 08:10:00.000000000 +0300
  28.587 -@@ -50,6 +50,7 @@ typedef struct {
  28.588 -    unsigned char mapping[8];
  28.589 - } VorbisLayout;
  28.590 - 
  28.591 -+#ifdef OPUS_ENABLE_ENCODER
  28.592 - /* Index is nb_channel-1*/
  28.593 - static const VorbisLayout vorbis_mappings[8] = {
  28.594 -       {1, 0, {0}},                      /* 1: mono */
  28.595 -@@ -69,6 +70,7 @@ struct OpusMSEncoder {
  28.596 -    int lfe_stream;
  28.597 -    /* Encoder states go here */
  28.598 - };
  28.599 -+#endif /* OPUS_ENABLE_ENCODER */
  28.600 - 
  28.601 - struct OpusMSDecoder {
  28.602 -    ChannelLayout layout;
  28.603 -@@ -133,6 +135,7 @@ static int get_mono_channel(const Channe
  28.604 -    return -1;
  28.605 - }
  28.606 - 
  28.607 -+#ifdef OPUS_ENABLE_ENCODER
  28.608 - static int validate_encoder_layout(const ChannelLayout *layout)
  28.609 - {
  28.610 -    int s;
  28.611 -@@ -832,6 +835,7 @@ void opus_multistream_encoder_destroy(Op
  28.612 - {
  28.613 -     opus_free(st);
  28.614 - }
  28.615 -+#endif /* OPUS_ENABLE_ENCODER */
  28.616 - 
  28.617 - 
  28.618 - /* DECODER */
  28.619 -diff -urNp opus-1.0.3-dec/configure.ac~ opus-1.0.3-dec/configure.ac
  28.620 ---- opus-1.0.3-dec/configure.ac~	2013-07-11 07:20:57.000000000 +0300
  28.621 -+++ opus-1.0.3-dec/configure.ac	2017-03-03 08:11:00.000000000 +0300
  28.622 -@@ -180,6 +180,13 @@ if test "$HAVE_DOXYGEN" != "yes" -o "$ac
  28.623 - fi
  28.624 - AM_CONDITIONAL(HAVE_DOXYGEN, [test $HAVE_DOXYGEN = yes])
  28.625 - 
  28.626 -+ac_enable_encoder="no";
  28.627 -+AC_ARG_ENABLE(encoder, [  --enable-encoder           compile with encoder support],
  28.628 -+[if test "$enableval" = yes; then
  28.629 -+  ac_enable_encoder="yes";
  28.630 -+  AC_DEFINE([OPUS_ENABLE_ENCODER], [1], [Compile with encoder support])
  28.631 -+fi])
  28.632 -+
  28.633 - saved_CFLAGS="$CFLAGS"
  28.634 - CFLAGS="$CFLAGS -fvisibility=hidden"
  28.635 - AC_MSG_CHECKING([if ${CC} supports -fvisibility=hidden])
  28.636 -@@ -241,6 +248,7 @@ AC_SUBST(SIZE32)
  28.637 - 
  28.638 - AM_CONDITIONAL([FIXED_POINT], [test x$ac_enable_fixed = xyes])
  28.639 - AM_CONDITIONAL([CUSTOM_MODES], [test x$ac_enable_custom_modes = xyes])
  28.640 -+AM_CONDITIONAL([USE_ENCODER], [test x$ac_enable_encoder = xyes])
  28.641 - 
  28.642 - dnl subsitutions for the pkg-config files
  28.643 - if test x$ac_enable_float = xyes; then
  28.644 -@@ -280,6 +288,7 @@ AC_MSG_RESULT([
  28.645 -       Floating point support: ........ ${ac_enable_float}
  28.646 -       Fast float approximations: ..... ${float_approx}
  28.647 -       Fixed point debugging: ......... ${ac_enable_fixed_debug}
  28.648 -+      Encoder support: ............... ${ac_enable_encoder}
  28.649 -       Custom modes: .................. ${ac_enable_custom_modes}
  28.650 -       Assertion checking: ............ ${ac_enable_assertions}
  28.651 -       Fuzzing: ....................... ${ac_enable_fuzzing}
  28.652 -diff -urNp opus-1.0.3-dec/Makefile.unix~ opus-1.0.3-dec/Makefile.unix
  28.653 ---- opus-1.0.3-dec/Makefile.unix~	2013-07-11 07:16:52.000000000 +0300
  28.654 -+++ opus-1.0.3-dec/Makefile.unix	2017-03-03 08:11:00.000000000 +0300
  28.655 -@@ -3,6 +3,9 @@
  28.656 - # Uncomment this for fixed-point build
  28.657 - #FIXED_POINT=1
  28.658 - 
  28.659 -+# Uncomment this to include the opus encoder
  28.660 -+#USE_ENCODER=1
  28.661 -+
  28.662 - # It is strongly recommended to uncomment one of these
  28.663 - # VAR_ARRAYS: Use C99 variable-length arrays for stack allocation
  28.664 - # USE_ALLOCA: Use alloca() for stack allocation
  28.665 -@@ -26,11 +29,17 @@ include silk_sources.mk
  28.666 - include celt_sources.mk
  28.667 - include opus_sources.mk
  28.668 - 
  28.669 -+ifdef USE_ENCODER
  28.670 -+CFLAGS := -DOPUS_ENABLE_ENCODER $(CFLAGS)
  28.671 -+CELT_SOURCES += $(CELT_SOURCES_ENC)
  28.672 -+SILK_SOURCES += $(SILK_SOURCES_ENC)
  28.673 -+OPUS_SOURCES += $(OPUS_SOURCES_ENC)
  28.674 - ifdef FIXED_POINT
  28.675 - SILK_SOURCES += $(SILK_SOURCES_FIXED)
  28.676 - else
  28.677 - SILK_SOURCES += $(SILK_SOURCES_FLOAT)
  28.678 - endif
  28.679 -+endif
  28.680 - 
  28.681 - EXESUFFIX =
  28.682 - LIBPREFIX = lib
  28.683 -diff -urNp opus-1.0.3-dec/Makefile.am~ opus-1.0.3-dec/Makefile.am
  28.684 ---- opus-1.0.3-dec/Makefile.am~	2013-07-11 07:16:52.000000000 +0300
  28.685 -+++ opus-1.0.3-dec/Makefile.am	2017-03-03 08:11:00.000000000 +0300
  28.686 -@@ -10,11 +10,16 @@ include celt_sources.mk
  28.687 - include silk_sources.mk
  28.688 - include opus_sources.mk
  28.689 - 
  28.690 -+if USE_ENCODER
  28.691 -+CELT_SOURCES += $(CELT_SOURCES_ENC)
  28.692 -+SILK_SOURCES += $(SILK_SOURCES_ENC)
  28.693 -+OPUS_SOURCES += $(OPUS_SOURCES_ENC)
  28.694 - if FIXED_POINT
  28.695 - SILK_SOURCES += $(SILK_SOURCES_FIXED)
  28.696 - else
  28.697 - SILK_SOURCES += $(SILK_SOURCES_FLOAT)
  28.698 - endif
  28.699 -+endif
  28.700 - 
  28.701 - include celt_headers.mk
  28.702 - include silk_headers.mk
  28.703 -@@ -27,6 +32,8 @@ pkginclude_HEADERS = include/opus.h incl
  28.704 - 
  28.705 - noinst_HEADERS = $(OPUS_HEAD) $(SILK_HEAD) $(CELT_HEAD)
  28.706 - 
  28.707 -+# many demo/test programs rely on encoder, ifdef is a lazy way around
  28.708 -+if USE_ENCODER
  28.709 - noinst_PROGRAMS = opus_demo repacketizer_demo opus_compare tests/test_opus_api tests/test_opus_encode tests/test_opus_decode celt/tests/test_unit_cwrs32 celt/tests/test_unit_dft celt/tests/test_unit_entropy celt/tests/test_unit_laplace celt/tests/test_unit_mathops celt/tests/test_unit_mdct celt/tests/test_unit_rotation celt/tests/test_unit_types
  28.710 - 
  28.711 - TESTS = celt/tests/test_unit_types celt/tests/test_unit_mathops celt/tests/test_unit_entropy celt/tests/test_unit_laplace celt/tests/test_unit_dft celt/tests/test_unit_mdct celt/tests/test_unit_rotation celt/tests/test_unit_cwrs32 tests/test_opus_api tests/test_opus_decode tests/test_opus_encode
  28.712 -@@ -81,6 +88,7 @@ noinst_PROGRAMS += opus_custom_demo
  28.713 - opus_custom_demo_SOURCES = celt/opus_custom_demo.c
  28.714 - opus_custom_demo_LDADD = libopus.la -lm
  28.715 - endif
  28.716 -+endif
  28.717 - 
  28.718 - EXTRA_DIST = version.mk \
  28.719 - 	     opus.pc.in \
    29.1 --- a/external/opus-1.0.3/050-opus-1.0.3-misc-port0.patch	Sat Oct 05 10:33:14 2019 -0700
    29.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.3 @@ -1,33 +0,0 @@
    29.4 -diff -u a/include/opus_defines.h b/include/opus_defines.h
    29.5 ---- a/include/opus_defines.h
    29.6 -+++ b/include/opus_defines.h
    29.7 -@@ -64,7 +64,7 @@ extern "C" {
    29.8 - /**Export control for opus functions */
    29.9 - 
   29.10 - #ifndef OPUS_EXPORT
   29.11 --# if defined(WIN32)
   29.12 -+# if defined(_WIN32)
   29.13 - #  if defined(OPUS_BUILD) && defined(DLL_EXPORT)
   29.14 - #   define OPUS_EXPORT __declspec(dllexport)
   29.15 - #  else
   29.16 -diff -u a/silk/debug.c b/silk/debug.c
   29.17 ---- a/silk/debug.c
   29.18 -+++ b/silk/debug.c
   29.19 -@@ -65,7 +65,7 @@
   29.20 - int           silk_Timer_nTimers = 0;
   29.21 - int           silk_Timer_depth_ctr = 0;
   29.22 - char          silk_Timer_tags[silk_NUM_TIMERS_MAX][silk_NUM_TIMERS_MAX_TAG_LEN];
   29.23 --#ifdef WIN32
   29.24 -+#ifdef _WIN32
   29.25 - LARGE_INTEGER silk_Timer_start[silk_NUM_TIMERS_MAX];
   29.26 - #else
   29.27 - unsigned long silk_Timer_start[silk_NUM_TIMERS_MAX];
   29.28 -@@ -76,7 +76,7 @@
   29.29 - opus_int64     silk_Timer_max[silk_NUM_TIMERS_MAX];
   29.30 - opus_int64     silk_Timer_depth[silk_NUM_TIMERS_MAX];
   29.31 - 
   29.32 --#ifdef WIN32
   29.33 -+#ifdef _WIN32
   29.34 - void silk_TimerSave(char *file_name)
   29.35 - {
   29.36 -     if( silk_Timer_nTimers > 0 )
    30.1 --- a/external/opus-1.0.3/051-opus-1.0.3-misc-port1.patch	Sat Oct 05 10:33:14 2019 -0700
    30.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.3 @@ -1,22 +0,0 @@
    30.4 -use xmm intrinsics for lrintf with x86_64-w64-mingw32
    30.5 -
    30.6 -c.f.: http://git.xiph.org/?p=opus.git;a=commit;h=cd159fd1ec8ae64e6cd1b69854034560b5f1c419
    30.7 -
    30.8 ---- opus-1.0.3/celt/float_cast.h~
    30.9 -+++ opus-1.0.3/celt/float_cast.h
   30.10 -@@ -61,7 +61,14 @@
   30.11 - **      the config.h file.
   30.12 - */
   30.13 - 
   30.14 --#if (HAVE_LRINTF)
   30.15 -+#if (defined(__GNUC__) && defined(_WIN64))
   30.16 -+        #include <xmmintrin.h>
   30.17 -+        static __inline long int float2int(float value)
   30.18 -+        {
   30.19 -+                return _mm_cvtss_si32(_mm_load_ss(&value));
   30.20 -+        }
   30.21 -+
   30.22 -+#elif (HAVE_LRINTF)
   30.23 - 
   30.24 - /*      These defines enable functionality introduced with the 1999 ISO C
   30.25 - **      standard. They must be defined before the inclusion of math.h to
    31.1 --- a/external/opus-1.0.3/AUTHORS	Sat Oct 05 10:33:14 2019 -0700
    31.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.3 @@ -1,6 +0,0 @@
    31.4 -Jean-Marc Valin (jmvalin@jmvalin.ca)
    31.5 -Koen Vos (koenvos74@gmail.com)
    31.6 -Timothy Terriberry (tterribe@xiph.org)
    31.7 -Karsten Vandborg Sorensen (karsten.vandborg.sorensen@skype.net)
    31.8 -Soren Skak Jensen (ssjensen@gn.com)
    31.9 -Gregory Maxwell (greg@xiph.org)
    32.1 --- a/external/opus-1.0.3/COPYING	Sat Oct 05 10:33:14 2019 -0700
    32.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.3 @@ -1,44 +0,0 @@
    32.4 -Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic,
    32.5 -                    Jean-Marc Valin, Timothy B. Terriberry,
    32.6 -                    CSIRO, Gregory Maxwell, Mark Borgerding,
    32.7 -                    Erik de Castro Lopo
    32.8 -
    32.9 -Redistribution and use in source and binary forms, with or without
   32.10 -modification, are permitted provided that the following conditions
   32.11 -are met:
   32.12 -
   32.13 -- Redistributions of source code must retain the above copyright
   32.14 -notice, this list of conditions and the following disclaimer.
   32.15 -
   32.16 -- Redistributions in binary form must reproduce the above copyright
   32.17 -notice, this list of conditions and the following disclaimer in the
   32.18 -documentation and/or other materials provided with the distribution.
   32.19 -
   32.20 -- Neither the name of Internet Society, IETF or IETF Trust, nor the 
   32.21 -names of specific contributors, may be used to endorse or promote
   32.22 -products derived from this software without specific prior written
   32.23 -permission.
   32.24 -
   32.25 -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   32.26 -``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   32.27 -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   32.28 -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
   32.29 -OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   32.30 -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   32.31 -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   32.32 -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   32.33 -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   32.34 -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   32.35 -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   32.36 -
   32.37 -Opus is subject to the royalty-free patent licenses which are
   32.38 -specified at:
   32.39 -
   32.40 -Xiph.Org Foundation:
   32.41 -https://datatracker.ietf.org/ipr/1524/
   32.42 -
   32.43 -Microsoft Corporation:
   32.44 -https://datatracker.ietf.org/ipr/1914/
   32.45 -
   32.46 -Broadcom Corporation:
   32.47 -https://datatracker.ietf.org/ipr/1526/
    33.1 --- a/external/opus-1.0.3/INSTALL	Sat Oct 05 10:33:14 2019 -0700
    33.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    33.3 @@ -1,1 +0,0 @@
    33.4 -See README file for details
    34.1 --- a/external/opus-1.0.3/Makefile.am	Sat Oct 05 10:33:14 2019 -0700
    34.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    34.3 @@ -1,193 +0,0 @@
    34.4 -AUTOMAKE_OPTIONS = subdir-objects
    34.5 -
    34.6 -lib_LTLIBRARIES = libopus.la
    34.7 -
    34.8 -DIST_SUBDIRS = doc
    34.9 -
   34.10 -INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/celt -I$(top_srcdir)/silk -I$(top_srcdir)/silk/float -I$(top_srcdir)/silk/fixed
   34.11 -
   34.12 -include celt_sources.mk
   34.13 -include silk_sources.mk
   34.14 -include opus_sources.mk
   34.15 -
   34.16 -if USE_ENCODER
   34.17 -CELT_SOURCES += $(CELT_SOURCES_ENC)
   34.18 -SILK_SOURCES += $(SILK_SOURCES_ENC)
   34.19 -OPUS_SOURCES += $(OPUS_SOURCES_ENC)
   34.20 -if FIXED_POINT
   34.21 -SILK_SOURCES += $(SILK_SOURCES_FIXED)
   34.22 -else
   34.23 -SILK_SOURCES += $(SILK_SOURCES_FLOAT)
   34.24 -endif
   34.25 -endif
   34.26 -
   34.27 -include celt_headers.mk
   34.28 -include silk_headers.mk
   34.29 -include opus_headers.mk
   34.30 -
   34.31 -libopus_la_SOURCES = $(CELT_SOURCES) $(SILK_SOURCES) $(OPUS_SOURCES)
   34.32 -libopus_la_LDFLAGS = -no-undefined -version-info @OPUS_LT_CURRENT@:@OPUS_LT_REVISION@:@OPUS_LT_AGE@
   34.33 -
   34.34 -pkginclude_HEADERS = include/opus.h include/opus_multistream.h include/opus_types.h include/opus_defines.h
   34.35 -
   34.36 -noinst_HEADERS = $(OPUS_HEAD) $(SILK_HEAD) $(CELT_HEAD)
   34.37 -
   34.38 -# many demo/test programs rely on encoder, ifdef is a lazy way around
   34.39 -if USE_ENCODER
   34.40 -noinst_PROGRAMS = opus_demo repacketizer_demo opus_compare tests/test_opus_api tests/test_opus_encode tests/test_opus_decode celt/tests/test_unit_cwrs32 celt/tests/test_unit_dft celt/tests/test_unit_entropy celt/tests/test_unit_laplace celt/tests/test_unit_mathops celt/tests/test_unit_mdct celt/tests/test_unit_rotation celt/tests/test_unit_types
   34.41 -
   34.42 -TESTS = celt/tests/test_unit_types celt/tests/test_unit_mathops celt/tests/test_unit_entropy celt/tests/test_unit_laplace celt/tests/test_unit_dft celt/tests/test_unit_mdct celt/tests/test_unit_rotation celt/tests/test_unit_cwrs32 tests/test_opus_api tests/test_opus_decode tests/test_opus_encode
   34.43 -
   34.44 -opus_demo_SOURCES = src/opus_demo.c
   34.45 -
   34.46 -opus_demo_LDADD = libopus.la -lm
   34.47 -
   34.48 -repacketizer_demo_SOURCES = src/repacketizer_demo.c
   34.49 -
   34.50 -repacketizer_demo_LDADD = libopus.la -lm
   34.51 -
   34.52 -opus_compare_SOURCES = src/opus_compare.c
   34.53 -opus_compare_LDADD = -lm
   34.54 -
   34.55 -tests_test_opus_api_SOURCES = tests/test_opus_api.c tests/test_opus_common.h
   34.56 -tests_test_opus_api_LDADD = libopus.la -lm
   34.57 -
   34.58 -tests_test_opus_encode_SOURCES = tests/test_opus_encode.c tests/test_opus_common.h
   34.59 -tests_test_opus_encode_LDADD = libopus.la -lm
   34.60 -
   34.61 -tests_test_opus_decode_SOURCES = tests/test_opus_decode.c tests/test_opus_common.h
   34.62 -tests_test_opus_decode_LDADD = libopus.la -lm
   34.63 -
   34.64 -celt_tests_test_unit_cwrs32_SOURCES = celt/tests/test_unit_cwrs32.c
   34.65 -celt_tests_test_unit_cwrs32_LDADD = -lm
   34.66 -
   34.67 -celt_tests_test_unit_dft_SOURCES = celt/tests/test_unit_dft.c
   34.68 -celt_tests_test_unit_dft_LDADD = -lm
   34.69 -
   34.70 -celt_tests_test_unit_entropy_SOURCES = celt/tests/test_unit_entropy.c
   34.71 -celt_tests_test_unit_entropy_LDADD = -lm
   34.72 -
   34.73 -celt_tests_test_unit_laplace_SOURCES = celt/tests/test_unit_laplace.c
   34.74 -celt_tests_test_unit_laplace_LDADD = -lm
   34.75 -
   34.76 -celt_tests_test_unit_mathops_SOURCES = celt/tests/test_unit_mathops.c
   34.77 -celt_tests_test_unit_mathops_LDADD = -lm
   34.78 -
   34.79 -celt_tests_test_unit_mdct_SOURCES = celt/tests/test_unit_mdct.c
   34.80 -celt_tests_test_unit_mdct_LDADD = -lm
   34.81 -
   34.82 -celt_tests_test_unit_rotation_SOURCES = celt/tests/test_unit_rotation.c
   34.83 -celt_tests_test_unit_rotation_LDADD = -lm
   34.84 -
   34.85 -celt_tests_test_unit_types_SOURCES = celt/tests/test_unit_types.c
   34.86 -celt_tests_test_unit_types_LDADD = -lm
   34.87 -
   34.88 -if CUSTOM_MODES
   34.89 -pkginclude_HEADERS += include/opus_custom.h
   34.90 -noinst_PROGRAMS += opus_custom_demo
   34.91 -opus_custom_demo_SOURCES = celt/opus_custom_demo.c
   34.92 -opus_custom_demo_LDADD = libopus.la -lm
   34.93 -endif
   34.94 -endif
   34.95 -
   34.96 -EXTRA_DIST = version.mk \
   34.97 -	     opus.pc.in \
   34.98 -             opus-uninstalled.pc.in \
   34.99 -             opus.m4 \
  34.100 -             Makefile.unix \
  34.101 -             tests/run_vectors.sh \
  34.102 -             opus.sln \
  34.103 -             celt/celt.vcxproj \
  34.104 -             celt/celt.vcxproj.filters \
  34.105 -             src/opus_demo.vcxproj \
  34.106 -             src/opus.vcxproj \
  34.107 -             src/opus.vcxproj.filters \
  34.108 -             src/opus_demo.vcxproj.filters \
  34.109 -             tests/test_opus_decode.vcxproj.filters \
  34.110 -             tests/test_opus_decode.vcxproj \
  34.111 -             tests/test_opus_encode.vcxproj.filters \
  34.112 -             tests/test_opus_encode.vcxproj \
  34.113 -             tests/test_opus_api.vcxproj.filters \
  34.114 -             tests/test_opus_api.vcxproj \
  34.115 -             silk/float/silk_float.vcxproj.filters \
  34.116 -             silk/float/silk_float.vcxproj \
  34.117 -             silk/fixed/silk_fixed.vcxproj.filters \
  34.118 -             silk/fixed/silk_fixed.vcxproj \
  34.119 -             silk/silk_common.vcxproj \
  34.120 -             silk/silk_common.vcxproj.filters \
  34.121 -             win32/genversion.bat \
  34.122 -             win32/config.h
  34.123 -
  34.124 -pkgconfigdir = $(libdir)/pkgconfig
  34.125 -pkgconfig_DATA = opus.pc
  34.126 -
  34.127 -m4datadir = $(datadir)/aclocal
  34.128 -m4data_DATA = opus.m4
  34.129 -
  34.130 -# Targets to build and install just the library without the docs
  34.131 -opus check-opus install-opus: export NO_DOXYGEN = 1
  34.132 -
  34.133 -opus: all
  34.134 -check-opus: check
  34.135 -install-opus: install
  34.136 -
  34.137 -
  34.138 -# Or just the docs
  34.139 -docs:
  34.140 -	( cd doc && $(MAKE) $(AM_MAKEFLAGS) )
  34.141 -
  34.142 -install-docs:
  34.143 -	( cd doc && $(MAKE) $(AM_MAKEFLAGS) install )
  34.144 -
  34.145 -
  34.146 -# Or everything (by default)
  34.147 -all-local:
  34.148 -	@[ -n "$(NO_DOXYGEN)" ] || ( cd doc && $(MAKE) $(AM_MAKEFLAGS) )
  34.149 -
  34.150 -install-data-local:
  34.151 -	@[ -n "$(NO_DOXYGEN)" ] || ( cd doc && $(MAKE) $(AM_MAKEFLAGS) install )
  34.152 -
  34.153 -clean-local:
  34.154 -	-( cd doc && $(MAKE) $(AM_MAKEFLAGS) clean )
  34.155 -
  34.156 -uninstall-local:
  34.157 -	( cd doc && $(MAKE) $(AM_MAKEFLAGS) uninstall )
  34.158 -
  34.159 -
  34.160 -# We check this every time make is run, with configure.ac being touched to
  34.161 -# trigger an update of the build system files if update_version changes the
  34.162 -# current PACKAGE_VERSION (or if package_version was modified manually by a
  34.163 -# user with either AUTO_UPDATE=no or no update_version script present - the
  34.164 -# latter being the normal case for tarball releases).
  34.165 -#
  34.166 -# We can't just add the package_version file to CONFIGURE_DEPENDENCIES since
  34.167 -# simply running autoconf will not actually regenerate configure for us when
  34.168 -# the content of that file changes (due to autoconf dependency checking not
  34.169 -# knowing about that without us creating yet another file for it to include).
  34.170 -#
  34.171 -# The MAKECMDGOALS check is a gnu-make'ism, but will degrade 'gracefully' for
  34.172 -# makes that don't support it.  The only loss of functionality is not forcing
  34.173 -# an update of package_version for `make dist` if AUTO_UPDATE=no, but that is
  34.174 -# unlikely to be a real problem for any real user.
  34.175 -$(top_srcdir)/configure.ac: force
  34.176 -	@case "$(MAKECMDGOALS)" in \
  34.177 -	    dist-hook)                             exit 0       ;; \
  34.178 -	    dist-* | dist | distcheck | distclean) _arg=release ;; \
  34.179 -	esac; \
  34.180 -	if ! $(top_srcdir)/update_version $$_arg 2> /dev/null; then \
  34.181 -	    if [ ! -e $(top_srcdir)/package_version ]; then \
  34.182 -		echo 'PACKAGE_VERSION="unknown"' > $(top_srcdir)/package_version; \
  34.183 -	    fi; \
  34.184 -	    . $(top_srcdir)/package_version || exit 1; \
  34.185 -	    [ "$(PACKAGE_VERSION)" != "$$PACKAGE_VERSION" ] || exit 0; \
  34.186 -	fi; \
  34.187 -	touch $@
  34.188 -
  34.189 -force:
  34.190 -
  34.191 -# Create a minimal package_version file when make dist is run.
  34.192 -dist-hook:
  34.193 -	echo 'PACKAGE_VERSION="$(PACKAGE_VERSION)"' > $(top_distdir)/package_version
  34.194 -
  34.195 -
  34.196 -.PHONY: opus check-opus install-opus docs install-docs
    35.1 --- a/external/opus-1.0.3/Makefile.darwin	Sat Oct 05 10:33:14 2019 -0700
    35.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    35.3 @@ -1,70 +0,0 @@
    35.4 -#FIXED_POINT=1
    35.5 -#USE_ENCODER=1
    35.6 -
    35.7 -CROSS=
    35.8 -CC = $(CROSS)gcc
    35.9 -
   35.10 -CFLAGS   = -O2 -std=gnu99 -fno-common -fvisibility=hidden
   35.11 -CFLAGS  += -mmacosx-version-min=10.6
   35.12 -CFLAGS  += -Wall -W -Wstrict-prototypes -Wextra -Wcast-align -Wnested-externs -Wshadow
   35.13 -INCLUDES = -Iinclude -Isilk -Icelt
   35.14 -CPPFLAGS = -DOPUS_BUILD=1
   35.15 -CPPFLAGS+= -Drestrict=__restrict
   35.16 -CPPFLAGS+= -DHAVE_LRINT=1 -DHAVE_LRINTF=1 -DHAVE_ALLOCA_H=1 -DHAVE_STDINT_H=1
   35.17 -#CPPFLAGS += -DCUSTOM_MODES=1
   35.18 -CPPFLAGS += -DVAR_ARRAYS=1
   35.19 -#CPPFLAGS += -DUSE_ALLOCA=1
   35.20 -
   35.21 -LDFLAGS = -mmacosx-version-min=10.6 -Wl,-single_module
   35.22 -LDFLAGS+= -Wl,-install_name,@rpath/Opus.framework/Versions/A/Opus
   35.23 -LDFLAGS+= -Wl,-compatibility_version,5.0 -Wl,-current_version,5.0
   35.24 -#LDLIBS  = -Wl,-lbundle1.o
   35.25 -
   35.26 --include package_version
   35.27 -
   35.28 -include silk_sources.mk
   35.29 -include celt_sources.mk
   35.30 -include opus_sources.mk
   35.31 -
   35.32 -ifdef USE_ENCODER
   35.33 -CPPFLAGS+= -DOPUS_ENABLE_ENCODER
   35.34 -CELT_SOURCES += $(CELT_SOURCES_ENC)
   35.35 -SILK_SOURCES += $(SILK_SOURCES_ENC)
   35.36 -OPUS_SOURCES += $(OPUS_SOURCES_ENC)
   35.37 -ifdef FIXED_POINT
   35.38 -SILK_SOURCES += $(SILK_SOURCES_FIXED)
   35.39 -#CPPFLAGS+= -DFIXED_DEBUG=1
   35.40 -else
   35.41 -SILK_SOURCES += $(SILK_SOURCES_FLOAT)
   35.42 -#CPPFLAGS+= -DFLOAT_APPROX=1
   35.43 -endif
   35.44 -endif
   35.45 -
   35.46 -ifdef FIXED_POINT
   35.47 -CPPFLAGS+= -DFIXED_POINT=1 -DDISABLE_FLOAT_API
   35.48 -INCLUDES+= -Isilk/fixed
   35.49 -else
   35.50 -INCLUDES+= -Isilk/float
   35.51 -endif
   35.52 -
   35.53 -%.o:%.c
   35.54 -	$(CC) -c $(CFLAGS) $(CPPFLAGS) $(INCLUDES) -o $@ $<
   35.55 -
   35.56 -TARGET = libopus.dylib
   35.57 -
   35.58 -SRCS = $(SILK_SOURCES) $(CELT_SOURCES) $(OPUS_SOURCES)
   35.59 -OBJS := $(patsubst %.c,%.o,$(SRCS))
   35.60 -
   35.61 -# Rules
   35.62 -all: $(TARGET)
   35.63 -
   35.64 -$(TARGET): $(OBJS)
   35.65 -	$(CC) -dynamiclib -o $(TARGET) $(OBJS) $(LDFLAGS) $(LDLIBS)
   35.66 -
   35.67 -celt/celt.o: CFLAGS += -DPACKAGE_VERSION='$(PACKAGE_VERSION)'
   35.68 -celt/celt.o: package_version
   35.69 -
   35.70 -clean:
   35.71 -	rm -f $(TARGET) $(OBJS)
   35.72 -
   35.73 -.PHONY: all clean
    36.1 --- a/external/opus-1.0.3/Makefile.in	Sat Oct 05 10:33:14 2019 -0700
    36.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    36.3 @@ -1,2648 +0,0 @@
    36.4 -# Makefile.in generated by automake 1.11.6 from Makefile.am.
    36.5 -# @configure_input@
    36.6 -
    36.7 -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
    36.8 -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
    36.9 -# Foundation, Inc.
   36.10 -# This Makefile.in is free software; the Free Software Foundation
   36.11 -# gives unlimited permission to copy and/or distribute it,
   36.12 -# with or without modifications, as long as this notice is preserved.
   36.13 -
   36.14 -# This program is distributed in the hope that it will be useful,
   36.15 -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
   36.16 -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
   36.17 -# PARTICULAR PURPOSE.
   36.18 -
   36.19 -@SET_MAKE@
   36.20 -
   36.21 -
   36.22 -
   36.23 -
   36.24 -VPATH = @srcdir@
   36.25 -am__make_dryrun = \
   36.26 -  { \