Changeset 3633:33a6a1a59939 in roaraudio
- Timestamp:
- 03/11/10 23:21:59 (14 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
include/libroardsp/rms.h
r3517 r3633 2 2 3 3 /* 4 * Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2009 4 * Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2009-2010 5 5 * 6 6 * This file is part of libroar a part of RoarAudio, … … 43 43 int64_t roar_rms2_1_32 (int32_t * data, size_t samples); 44 44 45 int roar_rms2_1_8_2 (int8_t * data, size_t samples, int64_t * rms); 46 int roar_rms2_1_16_2 (int16_t * data, size_t samples, int64_t * rms); 47 int roar_rms2_1_32_2 (int32_t * data, size_t samples, int64_t * rms); 48 49 int roar_rms2_1_8_n (int8_t * data, size_t samples, int64_t * rms, size_t n); 50 int roar_rms2_1_16_n (int16_t * data, size_t samples, int64_t * rms, size_t n); 51 int roar_rms2_1_32_n (int32_t * data, size_t samples, int64_t * rms, size_t n); 52 45 53 #endif 46 54 -
libroardsp/rms.c
r3517 r3633 2 2 3 3 /* 4 * Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2009 4 * Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2009-2010 5 5 * 6 6 * This file is part of libroardsp a part of RoarAudio, … … 63 63 64 64 65 int roar_rms2_1_8_2 (int8_t * data, size_t samples, int64_t * rms) { 66 register int64_t a0 = 0, a1 = 0; 67 register size_t i; 68 69 if ( samples == 0 ) 70 return 0; 71 72 if ( data == NULL ) 73 return -1; 74 75 if ( samples & 0x1 ) /* odd */ 76 return -1; 77 78 for (i = 0; i < samples; i += 2) { 79 a0 += data[i+0] * data[i+0]; 80 a1 += data[i+1] * data[i+1]; 81 } 82 83 samples /= 2; 84 85 a0 /= samples; 86 a1 /= samples; 87 88 rms[0] = a0; 89 rms[1] = a1; 90 91 return 0; 92 } 93 94 int roar_rms2_1_16_2 (int16_t * data, size_t samples, int64_t * rms) { 95 register int64_t a0 = 0, a1 = 0; 96 register size_t i; 97 98 if ( samples == 0 ) 99 return 0; 100 101 if ( data == NULL ) 102 return -1; 103 104 if ( samples & 0x1 ) /* odd */ 105 return -1; 106 107 for (i = 0; i < samples; i += 2) { 108 a0 += data[i+0] * data[i+0]; 109 a1 += data[i+1] * data[i+1]; 110 } 111 112 samples /= 2; 113 114 a0 /= samples; 115 a1 /= samples; 116 117 rms[0] = a0; 118 rms[1] = a1; 119 120 return 0; 121 } 122 123 int roar_rms2_1_32_2 (int32_t * data, size_t samples, int64_t * rms) { 124 register int64_t a0 = 0, a1 = 0; 125 register size_t i; 126 127 if ( samples == 0 ) 128 return 0; 129 130 if ( data == NULL ) 131 return -1; 132 133 if ( samples & 0x1 ) /* odd */ 134 return -1; 135 136 for (i = 0; i < samples; i += 2) { 137 a0 += data[i+0] * data[i+0]; 138 a1 += data[i+1] * data[i+1]; 139 } 140 141 samples /= 2; 142 143 a0 /= samples; 144 a1 /= samples; 145 146 rms[0] = a0; 147 rms[1] = a1; 148 149 return 0; 150 } 151 152 153 int roar_rms2_1_8_n (int8_t * data, size_t samples, int64_t * rms, size_t n) { 154 if ( n == 0 ) 155 return 0; 156 157 if ( rms == NULL ) 158 return -1; 159 160 switch (n) { 161 case 1: return *rms = roar_rms2_1_8(data, samples); return *rms == -1 ? -1 : 0; break; 162 default: 163 return -1; 164 } 165 } 166 167 int roar_rms2_1_16_n (int16_t * data, size_t samples, int64_t * rms, size_t n) { 168 if ( n == 0 ) 169 return 0; 170 171 if ( rms == NULL ) 172 return -1; 173 174 switch (n) { 175 case 1: return *rms = roar_rms2_1_16(data, samples); return *rms == -1 ? -1 : 0; break; 176 default: 177 return -1; 178 } 179 } 180 181 int roar_rms2_1_32_n (int32_t * data, size_t samples, int64_t * rms, size_t n) { 182 if ( n == 0 ) 183 return 0; 184 185 if ( rms == NULL ) 186 return -1; 187 188 switch (n) { 189 case 1: return *rms = roar_rms2_1_32(data, samples); return *rms == -1 ? -1 : 0; break; 190 default: 191 return -1; 192 } 193 } 194 65 195 //ll
Note: See TracChangeset
for help on using the changeset viewer.