ref: 68ee126e7ad40ef2aa9e1039d81608d31211b7f5
parent: 8cf872a186b96085b1bb3a547afd598354ebeb87
author: qwx <qwx@sciops.net>
date: Mon Mar 6 17:08:39 EST 2023
up to date port
--- a/celt/stack_alloc.h
+++ b/celt/stack_alloc.h
@@ -140,7 +140,7 @@
#else
-#define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1))
+#define ALIGN(stack, size) ((stack) += ((size) - (_intptr_t)(stack)) & ((size) - 1))
#define PUSH(stack, size, type) (ALIGN((stack),sizeof(type)/sizeof(char)),(stack)+=(size)*(sizeof(type)/sizeof(char)),(type*)((stack)-(size)*(sizeof(type)/sizeof(char))))
#if 0 /* Set this to 1 to instrument pseudostack usage */
#define RESTORE_STACK (printf("%ld %s:%d\n", global_stack-scratch_ptr, __FILE__, __LINE__),global_stack = _saved_stack)
--- /dev/null
+++ b/mkfile
@@ -1,0 +1,187 @@
+APE=/sys/src/ape
+<$APE/config
+
+LIB=/$objtype/lib/ape/libopus.a
+
+OFILES=\
+# silk \
+ CNG.$O \
+ code_signs.$O \
+ init_decoder.$O \
+ decode_core.$O \
+ decode_frame.$O \
+ decode_parameters.$O \
+ decode_indices.$O \
+ decode_pulses.$O \
+ decoder_set_fs.$O \
+ dec_API.$O \
+ enc_API.$O \
+ encode_indices.$O \
+ encode_pulses.$O \
+ gain_quant.$O \
+ interpolate.$O \
+ LP_variable_cutoff.$O \
+ NLSF_decode.$O \
+ NSQ.$O \
+ NSQ_del_dec.$O \
+ PLC.$O \
+ shell_coder.$O \
+ tables_gain.$O \
+ tables_LTP.$O \
+ tables_NLSF_CB_NB_MB.$O \
+ tables_NLSF_CB_WB.$O \
+ tables_other.$O \
+ tables_pitch_lag.$O \
+ tables_pulses_per_block.$O \
+ VAD.$O \
+ control_audio_bandwidth.$O \
+ quant_LTP_gains.$O \
+ VQ_WMat_EC.$O \
+ HP_variable_cutoff.$O \
+ NLSF_encode.$O \
+ NLSF_VQ.$O \
+ NLSF_unpack.$O \
+ NLSF_del_dec_quant.$O \
+ process_NLSFs.$O \
+ stereo_LR_to_MS.$O \
+ stereo_MS_to_LR.$O \
+ check_control_input.$O \
+ control_SNR.$O \
+ init_encoder.$O \
+ control_codec.$O \
+ A2NLSF.$O \
+ ana_filt_bank_1.$O \
+ biquad_alt.$O \
+ bwexpander_32.$O \
+ bwexpander.$O \
+ debug.$O \
+ decode_pitch.$O \
+ inner_prod_aligned.$O \
+ lin2log.$O \
+ log2lin.$O \
+ LPC_analysis_filter.$O \
+ LPC_inv_pred_gain.$O \
+ table_LSF_cos.$O \
+ NLSF2A.$O \
+ NLSF_stabilize.$O \
+ NLSF_VQ_weights_laroia.$O \
+ pitch_est_tables.$O \
+ resampler.$O \
+ resampler_down2_3.$O \
+ resampler_down2.$O \
+ resampler_private_AR2.$O \
+ resampler_private_down_FIR.$O \
+ resampler_private_IIR_FIR.$O \
+ resampler_private_up2_HQ.$O \
+ resampler_rom.$O \
+ sigm_Q15.$O \
+ sort.$O \
+ sum_sqr_shift.$O \
+ stereo_decode_pred.$O \
+ stereo_encode_pred.$O \
+ stereo_find_predictor.$O \
+ stereo_quant_pred.$O \
+ LPC_fit.$O \
+# silk/float \
+ apply_sine_window_FLP.$O \
+ corrMatrix_FLP.$O \
+ encode_frame_FLP.$O \
+ find_LPC_FLP.$O \
+ find_LTP_FLP.$O \
+ find_pitch_lags_FLP.$O \
+ find_pred_coefs_FLP.$O \
+ LPC_analysis_filter_FLP.$O \
+ LTP_analysis_filter_FLP.$O \
+ LTP_scale_ctrl_FLP.$O \
+ noise_shape_analysis_FLP.$O \
+ process_gains_FLP.$O \
+ regularize_correlations_FLP.$O \
+ residual_energy_FLP.$O \
+ warped_autocorrelation_FLP.$O \
+ wrappers_FLP.$O \
+ autocorrelation_FLP.$O \
+ burg_modified_FLP.$O \
+ bwexpander_FLP.$O \
+ energy_FLP.$O \
+ inner_product_FLP.$O \
+ k2a_FLP.$O \
+ LPC_inv_pred_gain_FLP.$O \
+ pitch_analysis_core_FLP.$O \
+ scale_copy_vector_FLP.$O \
+ scale_vector_FLP.$O \
+ schur_FLP.$O \
+ sort_FLP.$O \
+# celt \
+ bands.$O \
+ celt.$O \
+ celt_encoder.$O \
+ celt_decoder.$O \
+ cwrs.$O \
+ entcode.$O \
+ entdec.$O \
+ entenc.$O \
+ kiss_fft.$O \
+ laplace.$O \
+ mathops.$O \
+ mdct.$O \
+ modes.$O \
+ pitch.$O \
+ celt_lpc.$O \
+ quant_bands.$O \
+ rate.$O \
+ vq.$O \
+# src \
+ analysis.$O \
+ mlp.$O \
+ mlp_data.$O \
+ opus.$O \
+ opus_decoder.$O \
+ opus_encoder.$O \
+ opus_multistream.$O \
+ opus_multistream_encoder.$O \
+ opus_multistream_decoder.$O \
+ repacketizer.$O \
+ opus_projection_encoder.$O \
+ opus_projection_decoder.$O \
+ mapping_matrix.$O
+
+HFILES=\
+ /sys/include/ape/opus/opus.h \
+ /sys/include/ape/opus/opus_custom.h \
+ /sys/include/ape/opus/opus_defines.h \
+ /sys/include/ape/opus/opus_multistream.h \
+ /sys/include/ape/opus/opus_projection.h \
+ /sys/include/ape/opus/opus_types.h \
+
+UPDATE=\
+ mkfile\
+ $HFILES\
+ ${OFILES:%.$O=%.c}\
+
+</sys/src/cmd/mksyslib
+
+CFLAGS=$CFLAGS -c -Iinclude -Isilk -Isilk/fixed -Isilk/float -Icelt \
+ -DPACKAGE_VERSION="$VERSION" \
+ -DOPUS_BUILD \
+ -DCUSTOM_MODES \
+ -DNONTHREADSAFE_PSEUDOSTACK \
+ -DHAVE_STDINT_H
+
+%.$O: silk/%.c
+ $CC $CFLAGS silk/$stem.c
+
+%.$O: silk/fixed/%.c
+ $CC $CFLAGS silk/fixed/$stem.c
+
+%.$O: silk/float/%.c
+ $CC $CFLAGS silk/float/$stem.c
+
+%.$O: celt/%.c
+ $CC $CFLAGS celt/$stem.c
+
+%.$O: src/%.c
+ $CC $CFLAGS src/$stem.c
+
+$HFILES:
+ mkdir -p /sys/include/ape/opus
+ dircp include /sys/include/ape/opus
--- a/silk/LPC_inv_pred_gain.c
+++ b/silk/LPC_inv_pred_gain.c
@@ -45,7 +45,7 @@
)
{
opus_int k, n, mult2Q;
- opus_int32 invGain_Q30, rc_Q31, rc_mult1_Q30, rc_mult2, tmp1, tmp2;
+ opus_int32 invGain_Q30, rc_Q31, rc_mult1_Q30, rc_mult2, tmp1, tmp2, tmp3;
invGain_Q30 = SILK_FIX_CONST( 1, 30 );
for( k = order - 1; k > 0; k-- ) {
@@ -80,14 +80,14 @@
opus_int64 tmp64;
tmp1 = A_QA[ n ];
tmp2 = A_QA[ k - n - 1 ];
- tmp64 = silk_RSHIFT_ROUND64( silk_SMULL( silk_SUB_SAT32(tmp1,
- MUL32_FRAC_Q( tmp2, rc_Q31, 31 ) ), rc_mult2 ), mult2Q);
+ tmp3 = silk_SUB_SAT32(tmp1, MUL32_FRAC_Q( tmp2, rc_Q31, 31 ) );
+ tmp64 = silk_RSHIFT_ROUND64( silk_SMULL(tmp3, rc_mult2 ), mult2Q);
if( tmp64 > silk_int32_MAX || tmp64 < silk_int32_MIN ) {
return 0;
}
A_QA[ n ] = ( opus_int32 )tmp64;
- tmp64 = silk_RSHIFT_ROUND64( silk_SMULL( silk_SUB_SAT32(tmp2,
- MUL32_FRAC_Q( tmp1, rc_Q31, 31 ) ), rc_mult2), mult2Q);
+ tmp3 = silk_SUB_SAT32(tmp2, MUL32_FRAC_Q( tmp1, rc_Q31, 31 ) );
+ tmp64 = silk_RSHIFT_ROUND64( silk_SMULL(tmp3, rc_mult2), mult2Q);
if( tmp64 > silk_int32_MAX || tmp64 < silk_int32_MIN ) {
return 0;
}