annotate src/libsamplerate-0.1.9/tests/float_short_test.c @ 164:9fa11135915a

This Mac compatibility fix appears to work, resolving SourceForge issue #273 Port Audio Fail on MacOS Catalina (10.15) - merging back
author Chris Cannam <cannam@all-day-breakfast.com>
date Thu, 31 Oct 2019 13:20:41 +0000
parents 4a7071416412
children
rev   line source
cannam@126 1 /*
cannam@126 2 ** Copyright (c) 2003-2016, Erik de Castro Lopo <erikd@mega-nerd.com>
cannam@126 3 ** All rights reserved.
cannam@126 4 **
cannam@126 5 ** This code is released under 2-clause BSD license. Please see the
cannam@126 6 ** file at : https://github.com/erikd/libsamplerate/blob/master/COPYING
cannam@126 7 */
cannam@126 8
cannam@126 9 #include <stdio.h>
cannam@126 10 #include <stdlib.h>
cannam@126 11 #include <string.h>
cannam@126 12
cannam@126 13 #include <samplerate.h>
cannam@126 14
cannam@126 15 #include "util.h"
cannam@126 16
cannam@126 17 #define BUFFER_LEN 10000
cannam@126 18
cannam@126 19 static void float_to_short_test (void) ;
cannam@126 20 static void short_to_float_test (void) ;
cannam@126 21
cannam@126 22 static void float_to_int_test (void) ;
cannam@126 23 static void int_to_float_test (void) ;
cannam@126 24
cannam@126 25 int
cannam@126 26 main (void)
cannam@126 27 {
cannam@126 28 puts ("") ;
cannam@126 29
cannam@126 30 float_to_short_test () ;
cannam@126 31 short_to_float_test () ;
cannam@126 32
cannam@126 33 float_to_int_test () ;
cannam@126 34 int_to_float_test () ;
cannam@126 35
cannam@126 36 puts ("") ;
cannam@126 37
cannam@126 38 return 0 ;
cannam@126 39 } /* main */
cannam@126 40
cannam@126 41 /*=====================================================================================
cannam@126 42 */
cannam@126 43
cannam@126 44 static void
cannam@126 45 float_to_short_test (void)
cannam@126 46 {
cannam@126 47 static float fpos [] =
cannam@126 48 { 0.95, 0.99, 1.0, 1.01, 1.1, 2.0, 11.1, 111.1, 2222.2, 33333.3
cannam@126 49 } ;
cannam@126 50 static float fneg [] =
cannam@126 51 { -0.95, -0.99, -1.0, -1.01, -1.1, -2.0, -11.1, -111.1, -2222.2, -33333.3
cannam@126 52 } ;
cannam@126 53
cannam@126 54 static short out [MAX (ARRAY_LEN (fpos), ARRAY_LEN (fneg))] ;
cannam@126 55
cannam@126 56 int k ;
cannam@126 57
cannam@126 58 printf ("\tfloat_to_short_test ............................. ") ;
cannam@126 59
cannam@126 60 src_float_to_short_array (fpos, out, ARRAY_LEN (fpos)) ;
cannam@126 61
cannam@126 62 for (k = 0 ; k < ARRAY_LEN (fpos) ; k++)
cannam@126 63 if (out [k] < 30000)
cannam@126 64 { printf ("\n\n\tLine %d : out [%d] == %d\n", __LINE__, k, out [k]) ;
cannam@126 65 exit (1) ;
cannam@126 66 } ;
cannam@126 67
cannam@126 68 src_float_to_short_array (fneg, out, ARRAY_LEN (fneg)) ;
cannam@126 69
cannam@126 70 for (k = 0 ; k < ARRAY_LEN (fneg) ; k++)
cannam@126 71 if (out [k] > -30000)
cannam@126 72 { printf ("\n\n\tLine %d : out [%d] == %d\n", __LINE__, k, out [k]) ;
cannam@126 73 exit (1) ;
cannam@126 74 } ;
cannam@126 75
cannam@126 76 puts ("ok") ;
cannam@126 77
cannam@126 78 return ;
cannam@126 79 } /* float_to_short_test */
cannam@126 80
cannam@126 81 /*-------------------------------------------------------------------------------------
cannam@126 82 */
cannam@126 83
cannam@126 84 static void
cannam@126 85 short_to_float_test (void)
cannam@126 86 {
cannam@126 87 static short input [BUFFER_LEN] ;
cannam@126 88 static short output [BUFFER_LEN] ;
cannam@126 89 static float temp [BUFFER_LEN] ;
cannam@126 90
cannam@126 91 int k ;
cannam@126 92
cannam@126 93 printf ("\tshort_to_float_test ............................. ") ;
cannam@126 94
cannam@126 95 for (k = 0 ; k < ARRAY_LEN (input) ; k++)
cannam@126 96 input [k] = (k * 0x8000) / ARRAY_LEN (input) ;
cannam@126 97
cannam@126 98 src_short_to_float_array (input, temp, ARRAY_LEN (temp)) ;
cannam@126 99 src_float_to_short_array (temp, output, ARRAY_LEN (output)) ;
cannam@126 100
cannam@126 101 for (k = 0 ; k < ARRAY_LEN (input) ; k++)
cannam@126 102 if (ABS (input [k] - output [k]) > 0)
cannam@126 103 { printf ("\n\n\tLine %d : index %d %d -> %d\n", __LINE__, k, input [k], output [k]) ;
cannam@126 104 exit (1) ;
cannam@126 105 } ;
cannam@126 106
cannam@126 107 puts ("ok") ;
cannam@126 108
cannam@126 109 return ;
cannam@126 110 } /* short_to_float_test */
cannam@126 111
cannam@126 112 /*=====================================================================================
cannam@126 113 */
cannam@126 114
cannam@126 115 static void
cannam@126 116 float_to_int_test (void)
cannam@126 117 {
cannam@126 118 static float fpos [] =
cannam@126 119 { 0.95, 0.99, 1.0, 1.01, 1.1, 2.0, 11.1, 111.1, 2222.2, 33333.3
cannam@126 120 } ;
cannam@126 121 static float fneg [] =
cannam@126 122 { -0.95, -0.99, -1.0, -1.01, -1.1, -2.0, -11.1, -111.1, -2222.2, -33333.3
cannam@126 123 } ;
cannam@126 124
cannam@126 125 static int out [MAX (ARRAY_LEN (fpos), ARRAY_LEN (fneg))] ;
cannam@126 126
cannam@126 127 int k ;
cannam@126 128
cannam@126 129 printf ("\tfloat_to_int_test ............................... ") ;
cannam@126 130
cannam@126 131 src_float_to_int_array (fpos, out, ARRAY_LEN (fpos)) ;
cannam@126 132
cannam@126 133 for (k = 0 ; k < ARRAY_LEN (fpos) ; k++)
cannam@126 134 if (out [k] < 30000 * 0x10000)
cannam@126 135 { printf ("\n\n\tLine %d : out [%d] == %d\n", __LINE__, k, out [k]) ;
cannam@126 136 exit (1) ;
cannam@126 137 } ;
cannam@126 138
cannam@126 139 src_float_to_int_array (fneg, out, ARRAY_LEN (fneg)) ;
cannam@126 140
cannam@126 141 for (k = 0 ; k < ARRAY_LEN (fneg) ; k++)
cannam@126 142 if (out [k] > -30000 * 0x1000)
cannam@126 143 { printf ("\n\n\tLine %d : out [%d] == %d\n", __LINE__, k, out [k]) ;
cannam@126 144 exit (1) ;
cannam@126 145 } ;
cannam@126 146
cannam@126 147 puts ("ok") ;
cannam@126 148
cannam@126 149 return ;
cannam@126 150 } /* float_to_int_test */
cannam@126 151
cannam@126 152 /*-------------------------------------------------------------------------------------
cannam@126 153 */
cannam@126 154
cannam@126 155 static void
cannam@126 156 int_to_float_test (void)
cannam@126 157 {
cannam@126 158 static int input [BUFFER_LEN] ;
cannam@126 159 static int output [BUFFER_LEN] ;
cannam@126 160 static float temp [BUFFER_LEN] ;
cannam@126 161
cannam@126 162 int k ;
cannam@126 163
cannam@126 164 printf ("\tint_to_float_test ............................... ") ;
cannam@126 165
cannam@126 166 for (k = 0 ; k < ARRAY_LEN (input) ; k++)
cannam@126 167 input [k] = (k * 0x80000000) / ARRAY_LEN (input) ;
cannam@126 168
cannam@126 169 src_int_to_float_array (input, temp, ARRAY_LEN (temp)) ;
cannam@126 170 src_float_to_int_array (temp, output, ARRAY_LEN (output)) ;
cannam@126 171
cannam@126 172 for (k = 0 ; k < ARRAY_LEN (input) ; k++)
cannam@126 173 if (ABS (input [k] - output [k]) > 0)
cannam@126 174 { printf ("\n\n\tLine %d : index %d %d -> %d\n", __LINE__, k, input [k], output [k]) ;
cannam@126 175 exit (1) ;
cannam@126 176 } ;
cannam@126 177
cannam@126 178 puts ("ok") ;
cannam@126 179
cannam@126 180 return ;
cannam@126 181 } /* int_to_float_test */
cannam@126 182