|
|
|
@ -116,6 +116,7 @@ av_cold void ff_atrac3p_init_wave_synth(void) |
|
|
|
|
* @param[in] synth_param ptr to common synthesis parameters |
|
|
|
|
* @param[in] waves_info parameters for each sine wave |
|
|
|
|
* @param[in] envelope envelope data for all waves in a group |
|
|
|
|
* @param[in] fdsp ptr to floating-point DSP context |
|
|
|
|
* @param[in] phase_shift flag indicates 180° phase shift |
|
|
|
|
* @param[in] reg_offset region offset for trimming envelope data |
|
|
|
|
* @param[out] out receives sythesized data |
|
|
|
@ -123,6 +124,7 @@ av_cold void ff_atrac3p_init_wave_synth(void) |
|
|
|
|
static void waves_synth(Atrac3pWaveSynthParams *synth_param, |
|
|
|
|
Atrac3pWavesData *waves_info, |
|
|
|
|
Atrac3pWaveEnvelope *envelope, |
|
|
|
|
AVFloatDSPContext *fdsp, |
|
|
|
|
int phase_shift, int reg_offset, float *out) |
|
|
|
|
{ |
|
|
|
|
int i, wn, inc, pos; |
|
|
|
@ -146,6 +148,10 @@ static void waves_synth(Atrac3pWaveSynthParams *synth_param, |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* 180° phase shift if requested */ |
|
|
|
|
if (phase_shift) |
|
|
|
|
fdsp->vector_fmul_scalar(out, out, -1.0f, 128); |
|
|
|
|
|
|
|
|
|
/* fade in with steep Hann window if requested */ |
|
|
|
|
if (envelope->has_start_point) { |
|
|
|
|
pos = (envelope->start_pos << 2) - reg_offset; |
|
|
|
@ -216,11 +222,11 @@ void ff_atrac3p_generate_tones(Atrac3pChanUnitCtx *ch_unit, AVFloatDSPContext *f |
|
|
|
|
/* synthesize waves for both overlapping regions */ |
|
|
|
|
if (tones_now->num_wavs && reg1_env_nonzero) |
|
|
|
|
waves_synth(ch_unit->waves_info_prev, tones_now, &tones_now->curr_env, |
|
|
|
|
ch_unit->waves_info_prev->phase_shift[sb] & ch_num, |
|
|
|
|
fdsp, ch_unit->waves_info_prev->phase_shift[sb] & ch_num, |
|
|
|
|
128, wavreg1); |
|
|
|
|
|
|
|
|
|
if (tones_next->num_wavs && reg2_env_nonzero) |
|
|
|
|
waves_synth(ch_unit->waves_info, tones_next, &tones_next->curr_env, |
|
|
|
|
waves_synth(ch_unit->waves_info, tones_next, &tones_next->curr_env, fdsp, |
|
|
|
|
ch_unit->waves_info->phase_shift[sb] & ch_num, 0, wavreg2); |
|
|
|
|
|
|
|
|
|
/* Hann windowing for non-faded wave signals */ |
|
|
|
|