// file: csnr_cal_2.cc // // this function filters the signal // // system include file // #include // local include file // #include "global_constants.h" #include "calculate_snr_constants.h" #include "calculate_snr.h" // function: pre_emphasize_signal_cc // // arguments: // float* pre_emphasized_signal_a: (output) pre-emphasized the signal // float* signal_window_a: (input) buffer contain the signal to // be pre-emphasized // int samples_per_win_a: (input) number of samples per window // int num_chans_a: (input) number of channels // int debug_mode_a: (input) debug level // // return: an int to indicate status // // this function filters the signal using p(z) = 1 - u * z ^ (-1) filter // // int pre_emphasize_signal_cc (float*& pre_emphasized_signal_a, float* signal_window_a, int samples_per_win_a, int num_chans_a, float*& signal_prev_frame_a, int debug_mode_a) { int num_samples = samples_per_win_a * num_chans_a; for (int j = 0; j < num_chans_a; j++) { pre_emphasized_signal_a[j] = signal_window_a[j] - 0.95 * signal_prev_frame_a[j]; } for (int j = 0; j < num_chans_a; j++) { for (int i = num_chans_a + j; i < num_samples; i += num_chans_a) { pre_emphasized_signal_a[i] = signal_window_a[i] - 0.95 * signal_window_a[i-num_chans_a]; } } for (int j = 0; j < num_chans_a; j++) { signal_prev_frame_a[j] = signal_window_a[num_samples-num_chans_a+j]; } if (debug_mode_a > DEBUG_FULL) { for (int j = 0; j < num_chans_a; j++) { for (int i = j; i < num_samples; i += num_chans_a) { fprintf(stdout, "chan %d :: pre-emphasized signal [%d] = %.2f\n", j, i/num_chans_a, pre_emphasized_signal_a[i]); } } fprintf(stdout, "\n"); } // exit gracefully // return TRUE; }