annotate src/libsamplerate-0.1.9/tests/misc_test.c @ 79:91c729825bca pa_catalina

Update build for AUDIO_COMPONENT_FIX
author Chris Cannam
date Wed, 30 Oct 2019 12:40:34 +0000
parents 481f5f8c5634
children
rev   line source
Chris@41 1 /*
Chris@41 2 ** Copyright (c) 2002-2016, Erik de Castro Lopo <erikd@mega-nerd.com>
Chris@41 3 ** All rights reserved.
Chris@41 4 **
Chris@41 5 ** This code is released under 2-clause BSD license. Please see the
Chris@41 6 ** file at : https://github.com/erikd/libsamplerate/blob/master/COPYING
Chris@41 7 */
Chris@41 8
Chris@41 9 #include <stdio.h>
Chris@41 10 #include <stdlib.h>
Chris@41 11 #include <string.h>
Chris@41 12
Chris@41 13 #include <samplerate.h>
Chris@41 14
Chris@41 15 #include "util.h"
Chris@41 16
Chris@41 17 static void name_test (void) ;
Chris@41 18 static void error_test (void) ;
Chris@41 19 static void src_ratio_test (void) ;
Chris@41 20 static void zero_input_test (int converter) ;
Chris@41 21
Chris@41 22 int
Chris@41 23 main (void)
Chris@41 24 {
Chris@41 25 puts ("") ;
Chris@41 26
Chris@41 27 printf (" version : %s\n\n", src_get_version ()) ;
Chris@41 28
Chris@41 29 /* Current max converter is SRC_LINEAR. */
Chris@41 30 name_test () ;
Chris@41 31
Chris@41 32 error_test () ;
Chris@41 33
Chris@41 34 src_ratio_test () ;
Chris@41 35
Chris@41 36 zero_input_test (SRC_ZERO_ORDER_HOLD) ;
Chris@41 37 zero_input_test (SRC_LINEAR) ;
Chris@41 38 zero_input_test (SRC_SINC_FASTEST) ;
Chris@41 39
Chris@41 40 puts ("") ;
Chris@41 41 return 0 ;
Chris@41 42 } /* main */
Chris@41 43
Chris@41 44 static void
Chris@41 45 name_test (void)
Chris@41 46 { const char *name ;
Chris@41 47 int k = 0 ;
Chris@41 48
Chris@41 49 puts (" name_test :") ;
Chris@41 50
Chris@41 51 while (1)
Chris@41 52 { name = src_get_name (k) ;
Chris@41 53 if (name == NULL)
Chris@41 54 break ;
Chris@41 55 printf ("\tName %d : %s\n", k, name) ;
Chris@41 56 printf ("\tDesc %d : %s\n", k, src_get_description (k)) ;
Chris@41 57 k ++ ;
Chris@41 58 } ;
Chris@41 59
Chris@41 60 puts ("") ;
Chris@41 61
Chris@41 62 return ;
Chris@41 63 } /* name_test */
Chris@41 64
Chris@41 65 /*------------------------------------------------------------------------------
Chris@41 66 */
Chris@41 67
Chris@41 68 typedef struct
Chris@41 69 { double ratio ;
Chris@41 70 int should_pass ;
Chris@41 71 } RATIO_TEST ;
Chris@41 72
Chris@41 73 static RATIO_TEST ratio_test [] =
Chris@41 74 { { 1.0 / 256.1, 0 },
Chris@41 75 { 1.0 / 256.0, 1 },
Chris@41 76 { 1.0, 1 },
Chris@41 77 { 256.0, 1 },
Chris@41 78 { 256.1, 0 },
Chris@41 79 { -1.0, 0 }
Chris@41 80 } ;
Chris@41 81
Chris@41 82 static void
Chris@41 83 src_ratio_test (void)
Chris@41 84 { int k ;
Chris@41 85
Chris@41 86 puts (" src_ratio_test (SRC ratio must be in range [1/256, 256]):" ) ;
Chris@41 87
Chris@41 88
Chris@41 89 for (k = 0 ; k < ARRAY_LEN (ratio_test) ; k++)
Chris@41 90 { if (ratio_test [k].should_pass && src_is_valid_ratio (ratio_test [k].ratio) == 0)
Chris@41 91 { printf ("\n\nLine %d : SRC ratio %f should have passed.\n\n", __LINE__, ratio_test [k].ratio) ;
Chris@41 92 exit (1) ;
Chris@41 93 } ;
Chris@41 94 if (! ratio_test [k].should_pass && src_is_valid_ratio (ratio_test [k].ratio) != 0)
Chris@41 95 { printf ("\n\nLine %d : SRC ratio %f should not have passed.\n\n", __LINE__, ratio_test [k].ratio) ;
Chris@41 96 exit (1) ;
Chris@41 97 } ;
Chris@41 98 printf ("\t SRC ratio (%9.5f) : %s ................... ok\n", ratio_test [k].ratio,
Chris@41 99 (ratio_test [k].should_pass ? "pass" : "fail")) ;
Chris@41 100 } ;
Chris@41 101
Chris@41 102 puts ("") ;
Chris@41 103
Chris@41 104 return ;
Chris@41 105 } /* src_ratio_test */
Chris@41 106
Chris@41 107 static void
Chris@41 108 error_test (void)
Chris@41 109 { const char *errorstr ;
Chris@41 110 int k, errors = 0 ;
Chris@41 111
Chris@41 112 puts (" error_test :") ;
Chris@41 113
Chris@41 114 for (k = 0 ; 1 ; k++)
Chris@41 115 { errorstr = src_strerror (k) ;
Chris@41 116 printf ("\t%-2d : %s\n", k, errorstr) ;
Chris@41 117 if (errorstr == NULL)
Chris@41 118 { errors ++ ;
Chris@41 119 continue ;
Chris@41 120 } ;
Chris@41 121 if (strstr (errorstr, "Placeholder.") == errorstr)
Chris@41 122 break ;
Chris@41 123 } ;
Chris@41 124
Chris@41 125 if (errors != 0)
Chris@41 126 { printf ("\n\nLine %d : Missing error numbers above.\n\n", __LINE__) ;
Chris@41 127 exit (1) ;
Chris@41 128 } ;
Chris@41 129
Chris@41 130 puts ("") ;
Chris@41 131
Chris@41 132 return ;
Chris@41 133 } /* error_test */
Chris@41 134
Chris@41 135 static void
Chris@41 136 zero_input_test (int converter)
Chris@41 137 { SRC_DATA data ;
Chris@41 138 SRC_STATE *state ;
Chris@41 139 float out [100] ;
Chris@41 140 int error ;
Chris@41 141
Chris@41 142 printf (" %s (%-26s) ........ ", __func__, src_get_name (converter)) ;
Chris@41 143 fflush (stdout) ;
Chris@41 144
Chris@41 145 if ((state = src_new (converter, 1, &error)) == NULL)
Chris@41 146 { printf ("\n\nLine %d : src_new failed : %s.\n\n", __LINE__, src_strerror (error)) ;
Chris@41 147 exit (1) ;
Chris@41 148 } ;
Chris@41 149
Chris@41 150 data.data_in = (float *) 0xdeadbeef ;
Chris@41 151 data.input_frames = 0 ;
Chris@41 152 data.data_out = out ;
Chris@41 153 data.output_frames = ARRAY_LEN (out) ;
Chris@41 154 data.end_of_input = 0 ;
Chris@41 155 data.src_ratio = 1.0 ;
Chris@41 156
Chris@41 157 if ((error = src_process (state, &data)))
Chris@41 158 { printf ("\n\nLine %d : src_new failed : %s.\n\n", __LINE__, src_strerror (error)) ;
Chris@41 159 exit (1) ;
Chris@41 160 } ;
Chris@41 161
Chris@41 162 state = src_delete (state) ;
Chris@41 163
Chris@41 164 puts ("ok") ;
Chris@41 165 } /* zero_input_test */