annotate src/libsamplerate-0.1.9/tests/float_short_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) 2003-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 #define BUFFER_LEN 10000
Chris@41 18
Chris@41 19 static void float_to_short_test (void) ;
Chris@41 20 static void short_to_float_test (void) ;
Chris@41 21
Chris@41 22 static void float_to_int_test (void) ;
Chris@41 23 static void int_to_float_test (void) ;
Chris@41 24
Chris@41 25 int
Chris@41 26 main (void)
Chris@41 27 {
Chris@41 28 puts ("") ;
Chris@41 29
Chris@41 30 float_to_short_test () ;
Chris@41 31 short_to_float_test () ;
Chris@41 32
Chris@41 33 float_to_int_test () ;
Chris@41 34 int_to_float_test () ;
Chris@41 35
Chris@41 36 puts ("") ;
Chris@41 37
Chris@41 38 return 0 ;
Chris@41 39 } /* main */
Chris@41 40
Chris@41 41 /*=====================================================================================
Chris@41 42 */
Chris@41 43
Chris@41 44 static void
Chris@41 45 float_to_short_test (void)
Chris@41 46 {
Chris@41 47 static float fpos [] =
Chris@41 48 { 0.95, 0.99, 1.0, 1.01, 1.1, 2.0, 11.1, 111.1, 2222.2, 33333.3
Chris@41 49 } ;
Chris@41 50 static float fneg [] =
Chris@41 51 { -0.95, -0.99, -1.0, -1.01, -1.1, -2.0, -11.1, -111.1, -2222.2, -33333.3
Chris@41 52 } ;
Chris@41 53
Chris@41 54 static short out [MAX (ARRAY_LEN (fpos), ARRAY_LEN (fneg))] ;
Chris@41 55
Chris@41 56 int k ;
Chris@41 57
Chris@41 58 printf ("\tfloat_to_short_test ............................. ") ;
Chris@41 59
Chris@41 60 src_float_to_short_array (fpos, out, ARRAY_LEN (fpos)) ;
Chris@41 61
Chris@41 62 for (k = 0 ; k < ARRAY_LEN (fpos) ; k++)
Chris@41 63 if (out [k] < 30000)
Chris@41 64 { printf ("\n\n\tLine %d : out [%d] == %d\n", __LINE__, k, out [k]) ;
Chris@41 65 exit (1) ;
Chris@41 66 } ;
Chris@41 67
Chris@41 68 src_float_to_short_array (fneg, out, ARRAY_LEN (fneg)) ;
Chris@41 69
Chris@41 70 for (k = 0 ; k < ARRAY_LEN (fneg) ; k++)
Chris@41 71 if (out [k] > -30000)
Chris@41 72 { printf ("\n\n\tLine %d : out [%d] == %d\n", __LINE__, k, out [k]) ;
Chris@41 73 exit (1) ;
Chris@41 74 } ;
Chris@41 75
Chris@41 76 puts ("ok") ;
Chris@41 77
Chris@41 78 return ;
Chris@41 79 } /* float_to_short_test */
Chris@41 80
Chris@41 81 /*-------------------------------------------------------------------------------------
Chris@41 82 */
Chris@41 83
Chris@41 84 static void
Chris@41 85 short_to_float_test (void)
Chris@41 86 {
Chris@41 87 static short input [BUFFER_LEN] ;
Chris@41 88 static short output [BUFFER_LEN] ;
Chris@41 89 static float temp [BUFFER_LEN] ;
Chris@41 90
Chris@41 91 int k ;
Chris@41 92
Chris@41 93 printf ("\tshort_to_float_test ............................. ") ;
Chris@41 94
Chris@41 95 for (k = 0 ; k < ARRAY_LEN (input) ; k++)
Chris@41 96 input [k] = (k * 0x8000) / ARRAY_LEN (input) ;
Chris@41 97
Chris@41 98 src_short_to_float_array (input, temp, ARRAY_LEN (temp)) ;
Chris@41 99 src_float_to_short_array (temp, output, ARRAY_LEN (output)) ;
Chris@41 100
Chris@41 101 for (k = 0 ; k < ARRAY_LEN (input) ; k++)
Chris@41 102 if (ABS (input [k] - output [k]) > 0)
Chris@41 103 { printf ("\n\n\tLine %d : index %d %d -> %d\n", __LINE__, k, input [k], output [k]) ;
Chris@41 104 exit (1) ;
Chris@41 105 } ;
Chris@41 106
Chris@41 107 puts ("ok") ;
Chris@41 108
Chris@41 109 return ;
Chris@41 110 } /* short_to_float_test */
Chris@41 111
Chris@41 112 /*=====================================================================================
Chris@41 113 */
Chris@41 114
Chris@41 115 static void
Chris@41 116 float_to_int_test (void)
Chris@41 117 {
Chris@41 118 static float fpos [] =
Chris@41 119 { 0.95, 0.99, 1.0, 1.01, 1.1, 2.0, 11.1, 111.1, 2222.2, 33333.3
Chris@41 120 } ;
Chris@41 121 static float fneg [] =
Chris@41 122 { -0.95, -0.99, -1.0, -1.01, -1.1, -2.0, -11.1, -111.1, -2222.2, -33333.3
Chris@41 123 } ;
Chris@41 124
Chris@41 125 static int out [MAX (ARRAY_LEN (fpos), ARRAY_LEN (fneg))] ;
Chris@41 126
Chris@41 127 int k ;
Chris@41 128
Chris@41 129 printf ("\tfloat_to_int_test ............................... ") ;
Chris@41 130
Chris@41 131 src_float_to_int_array (fpos, out, ARRAY_LEN (fpos)) ;
Chris@41 132
Chris@41 133 for (k = 0 ; k < ARRAY_LEN (fpos) ; k++)
Chris@41 134 if (out [k] < 30000 * 0x10000)
Chris@41 135 { printf ("\n\n\tLine %d : out [%d] == %d\n", __LINE__, k, out [k]) ;
Chris@41 136 exit (1) ;
Chris@41 137 } ;
Chris@41 138
Chris@41 139 src_float_to_int_array (fneg, out, ARRAY_LEN (fneg)) ;
Chris@41 140
Chris@41 141 for (k = 0 ; k < ARRAY_LEN (fneg) ; k++)
Chris@41 142 if (out [k] > -30000 * 0x1000)
Chris@41 143 { printf ("\n\n\tLine %d : out [%d] == %d\n", __LINE__, k, out [k]) ;
Chris@41 144 exit (1) ;
Chris@41 145 } ;
Chris@41 146
Chris@41 147 puts ("ok") ;
Chris@41 148
Chris@41 149 return ;
Chris@41 150 } /* float_to_int_test */
Chris@41 151
Chris@41 152 /*-------------------------------------------------------------------------------------
Chris@41 153 */
Chris@41 154
Chris@41 155 static void
Chris@41 156 int_to_float_test (void)
Chris@41 157 {
Chris@41 158 static int input [BUFFER_LEN] ;
Chris@41 159 static int output [BUFFER_LEN] ;
Chris@41 160 static float temp [BUFFER_LEN] ;
Chris@41 161
Chris@41 162 int k ;
Chris@41 163
Chris@41 164 printf ("\tint_to_float_test ............................... ") ;
Chris@41 165
Chris@41 166 for (k = 0 ; k < ARRAY_LEN (input) ; k++)
Chris@41 167 input [k] = (k * 0x80000000) / ARRAY_LEN (input) ;
Chris@41 168
Chris@41 169 src_int_to_float_array (input, temp, ARRAY_LEN (temp)) ;
Chris@41 170 src_float_to_int_array (temp, output, ARRAY_LEN (output)) ;
Chris@41 171
Chris@41 172 for (k = 0 ; k < ARRAY_LEN (input) ; k++)
Chris@41 173 if (ABS (input [k] - output [k]) > 0)
Chris@41 174 { printf ("\n\n\tLine %d : index %d %d -> %d\n", __LINE__, k, input [k], output [k]) ;
Chris@41 175 exit (1) ;
Chris@41 176 } ;
Chris@41 177
Chris@41 178 puts ("ok") ;
Chris@41 179
Chris@41 180 return ;
Chris@41 181 } /* int_to_float_test */
Chris@41 182