diff --git a/include/dsd.h b/include/dsd.h index 472ec9c..9f8a489 100644 --- a/include/dsd.h +++ b/include/dsd.h @@ -666,6 +666,10 @@ typedef struct LPFilter RCFilter8; HPFilter HRCFilter8; // PBFilter PBF; + LPFilter RCFilterL; + HPFilter HRCFilterL; + LPFilter RCFilterR; + HPFilter HRCFilterR; char dpmr_caller_id[20]; char dpmr_target_id[20]; diff --git a/src/3.c b/src/3.c index 8d5c238..1c4192b 100644 --- a/src/3.c +++ b/src/3.c @@ -468,6 +468,12 @@ void init_audio_filters (dsd_state * state) LPFilter_Init(&state->RCFilter8, 160, (float)1/(float)8000); HPFilter_Init(&state->HRCFilter8, 160, (float)1/(float)8000); + //left and right variants for stereo output testing on digital voice samples + LPFilter_Init(&state->RCFilterL, 960, (float)1/(float)48000); + HPFilter_Init(&state->HRCFilterL, 960, (float)1/(float)48000); + LPFilter_Init(&state->RCFilterR, 960, (float)1/(float)48000); + HPFilter_Init(&state->HRCFilterR, 960, (float)1/(float)48000); + //PBFilter_Init(PBFilter *filter, float HPF_cutoffFreqHz, float LPF_cutoffFreqHz, float sampleTimeS); // void NOTCHFilter_Init(NOTCHFilter *filter, float centerFreqHz, float notchWidthHz, float sampleTimeS); diff --git a/src/dsd_audio.c b/src/dsd_audio.c index c035d4b..a10ff82 100644 --- a/src/dsd_audio.c +++ b/src/dsd_audio.c @@ -308,6 +308,8 @@ processAudio (dsd_opts * opts, dsd_state * state) *state->audio_out_buf_p = (short) *state->audio_out_float_buf_p; //tap the pointer here and store the short upsample buffer samples state->s_lu[n] = (short) *state->audio_out_float_buf_p; + //hpf test + state->s_lu[n] = HPFilter_Update(&state->HRCFilterL, state->s_lu[n]); state->audio_out_buf_p++; state->audio_out_float_buf_p++; } @@ -328,6 +330,8 @@ processAudio (dsd_opts * opts, dsd_state * state) *state->audio_out_buf_p = (short) *state->audio_out_temp_buf_p; //tap the pointer here and store the short buffer samples state->s_l[n] = (short) *state->audio_out_temp_buf_p; + //hpf test + state->s_l[n] = HPFilter_Update(&state->HRCFilterL, state->s_l[n]); //debug // fprintf (stderr, " %d", state->s_l[n]); state->audio_out_buf_p++; @@ -455,6 +459,8 @@ processAudioR (dsd_opts * opts, dsd_state * state) *state->audio_out_buf_pR = (short) *state->audio_out_float_buf_pR; //tap the pointer here and store the short upsample buffer samples state->s_ru[n] = (short) *state->audio_out_float_buf_pR; + //hpf test + state->s_ru[n] = HPFilter_Update(&state->HRCFilterR, state->s_ru[n]); state->audio_out_buf_pR++; state->audio_out_float_buf_pR++; } @@ -475,6 +481,8 @@ processAudioR (dsd_opts * opts, dsd_state * state) *state->audio_out_buf_pR = (short) *state->audio_out_temp_buf_pR; //tap the pointer here and store the short buffer samples state->s_r[n] = (short) *state->audio_out_temp_buf_pR; + //hpf test + state->s_r[n] = HPFilter_Update(&state->HRCFilterR, state->s_r[n]); state->audio_out_buf_pR++; state->audio_out_temp_buf_pR++; state->audio_out_idxR++;