int main (void) { static double src_ratios [] = { 1.0, 0.099, 0.1, 0.33333333, 0.789, 1.0001, 1.9, 3.1, 9.9 } ; int k ; /* Force output of the Electric Fence banner message. */ force_efence_banner () ; puts ("") ; puts (" Zero Order Hold interpolator :") ; for (k = 0 ; k < ARRAY_LEN (src_ratios) ; k++) callback_test (SRC_ZERO_ORDER_HOLD, src_ratios [k]) ; puts (" Linear interpolator :") ; for (k = 0 ; k < ARRAY_LEN (src_ratios) ; k++) callback_test (SRC_LINEAR, src_ratios [k]) ; puts (" Sinc interpolator :") ; for (k = 0 ; k < ARRAY_LEN (src_ratios) ; k++) callback_test (SRC_SINC_FASTEST, src_ratios [k]) ; puts ("") ; return 0 ; } /* main */
int main (void) { /* Force output of the Electric Fence banner message. */ force_efence_banner () ; puts ("") ; printf (" version : %s\n\n", src_get_version ()) ; /* Current max converter is SRC_LINEAR. */ name_test (SRC_LINEAR) ; error_test () ; src_ratio_test () ; return 0 ; } /* main */
int main (int argc, char *argv []) { CONVERTER_TEST snr_test_data [] = { { SRC_ZERO_ORDER_HOLD, 7, BOOLEAN_FALSE, { { 1, { 0.01111111111 }, 3.0, 1, 36.0, 1.0 }, { 1, { 0.01111111111 }, 0.6, 1, 37.0, 1.0 }, { 1, { 0.01111111111 }, 0.3, 1, 37.0, 1.0 }, { 1, { 0.01111111111 }, 1.001, 1, 38.0, 1.0 }, { 2, { 0.011111, 0.324 }, 1.9999, 2, 14.0, 1.0 }, { 2, { 0.012345, 0.457 }, 0.456789, 1, 32.0, 1.0 }, { 1, { 0.3511111111 }, 1.33, 1, 10.0, 1.0 } } }, { SRC_LINEAR, 7, BOOLEAN_FALSE, { { 1, { 0.01111111111 }, 3.0, 1, 73.0, 1.0 }, { 1, { 0.01111111111 }, 0.6, 1, 74.0, 1.0 }, { 1, { 0.01111111111 }, 0.3, 1, 74.0, 1.0 }, { 1, { 0.01111111111 }, 1.001, 1, 77.0, 1.0 }, { 2, { 0.011111, 0.324 }, 1.9999, 2, 97.0, 0.94 }, { 2, { 0.012345, 0.457 }, 0.456789, 1, 60.0, 0.95 }, { 1, { 0.3511111111 }, 1.33, 1, 22.0, 0.99 } } }, { SRC_SINC_FASTEST, 8, BOOLEAN_TRUE, { { 1, { 0.01111111111 }, 3.0, 1, 100.0, 1.0 }, { 1, { 0.01111111111 }, 0.6, 1, 100.0, 1.0 }, { 1, { 0.01111111111 }, 0.3, 1, 100.0, 1.0 }, { 1, { 0.01111111111 }, 1.001, 1, 100.0, 1.0 }, { 2, { 0.011111, 0.324 }, 1.9999, 2, 97.0, 1.0 }, { 2, { 0.012345, 0.457 }, 0.456789, 1, 100.0, 0.5 }, { 2, { 0.011111, 0.45 }, 0.6, 1, 97.0, 0.5 }, { 1, { 0.3511111111 }, 1.33, 1, 97.0, 1.0 } } }, { SRC_SINC_MEDIUM_QUALITY, 8, BOOLEAN_TRUE, { { 1, { 0.01111111111 }, 3.0, 1, 100.0, 1.0 }, { 1, { 0.01111111111 }, 0.6, 1, 100.0, 1.0 }, { 1, { 0.01111111111 }, 0.3, 1, 100.0, 1.0 }, { 1, { 0.01111111111 }, 1.001, 1, 100.0, 1.0 }, { 2, { 0.011111, 0.324 }, 1.9999, 2, 97.0, 1.0 }, { 2, { 0.012345, 0.457 }, 0.456789, 1, 100.0, 0.5 }, { 2, { 0.011111, 0.45 }, 0.6, 1, 97.0, 0.5 }, { 1, { 0.43111111111 }, 1.33, 1, 97.0, 1.0 } } }, { SRC_SINC_BEST_QUALITY, 8, BOOLEAN_TRUE, { { 1, { 0.01111111111 }, 3.0, 1, 100.0, 1.0 }, { 1, { 0.01111111111 }, 0.6, 1, 100.0, 1.0 }, { 1, { 0.01111111111 }, 0.3, 1, 100.0, 1.0 }, { 1, { 0.01111111111 }, 1.001, 1, 100.0, 1.0 }, { 2, { 0.011111, 0.324 }, 1.9999, 2, 97.0, 1.0 }, { 2, { 0.012345, 0.457 }, 0.456789, 1, 100.0, 0.5 }, { 2, { 0.011111, 0.45 }, 0.6, 1, 97.0, 0.5 }, { 1, { 0.47111111111 }, 1.33, 1, 97.0, 1.0 } }, }, } ; /* snr_test_data */ double best_snr, snr, freq3dB, conversion_rate, worst_conv_rate ; int j, k, converter, verbose = 0 ; /* Force output of the Electric Fence banner message. */ force_efence_banner () ; if (argc == 2 && strcmp (argv [1], "--verbose") == 0) verbose = 1 ; puts ("") ; for (j = 0 ; j < ARRAY_LEN (snr_test_data) ; j++) { best_snr = 5000.0 ; worst_conv_rate = 1e200 ; converter = snr_test_data [j].converter ; printf (" Converter %d : %s\n", converter, src_get_name (converter)) ; printf (" %s\n", src_get_description (converter)) ; for (k = 0 ; k < snr_test_data [j].tests ; k++) { snr = snr_test (&(snr_test_data [j].test_data [k]), k, converter, verbose, &conversion_rate) ; if (best_snr > snr) best_snr = snr ; if (worst_conv_rate > conversion_rate) worst_conv_rate = conversion_rate ; } ; printf (" Worst case Signal-to-Noise Ratio : %.2f dB.\n", best_snr) ; printf (" Worst case conversion rate : %.0f samples/sec.\n", worst_conv_rate) ; if (snr_test_data [j].do_bandwidth_test == BOOLEAN_FALSE) { puts (" Bandwith test not performed on this converter.\n") ; continue ; } freq3dB = bandwidth_test (converter, verbose) ; printf (" Measured -3dB rolloff point : %5.2f %%.\n\n", freq3dB) ; } ; return 0 ; } /* main */