annotate src/libsamplerate-0.1.9/tests/float_short_test.c @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +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