Changeset 852:de662ac08ef4 in roaraudio for libroardsp/convert.c


Ignore:
Timestamp:
09/28/08 14:59:37 (16 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

got roar_conv_chans_AtoB*() with a or B = 2 working, realigned some spaces, convert codec bevore channels

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroardsp/convert.c

    r850 r852  
    203203int roar_conv_chans_1to28  (void * out, void * in, int samples) { 
    204204 char * ip = (char*) in, * op = (char*) out; 
    205  int i; 
    206  
    207  samples = (samples - 1) * 2; 
    208  
    209  for (i = samples; i >= 0; i -= 2) { 
    210   op[i + 0] = ip[i]; 
    211   op[i + 1] = ip[i]; 
     205 int i, h; 
     206 
     207 samples--; 
     208 
     209 for (i = (h = samples) * 2; i >= 0; i -= 2, h--) { 
     210  op[i + 0] = ip[h]; 
     211  op[i + 1] = ip[h]; 
    212212 } 
    213213 
     
    229229int roar_conv_chans_1to216 (void * out, void * in, int samples) { 
    230230 int16_t * ip = (int16_t*) in, * op = (int16_t*) out; 
    231  int i; 
    232  
    233  samples = (samples - 1) * 2; 
    234  
    235  for (i = samples; i >= 0; i -= 2) { 
    236   op[i + 0] = ip[i]; 
    237   op[i + 1] = ip[i]; 
     231 int i, h; 
     232 
     233 samples--; 
     234 
     235 for (i = (h = samples) * 2; i >= 0; i -= 2, h--) { 
     236  op[i + 0] = ip[h]; 
     237  op[i + 1] = ip[h]; 
    238238 } 
    239239 
     
    264264int roar_conv_chans_2to18  (void * out, void * in, int samples) { 
    265265 int8_t * ip = (int8_t*) in, * op = (int8_t*) out; 
    266  int i; 
     266 int i, h; 
    267267 
    268268 samples -= 2; 
    269269 
    270  for (i = samples; i >= 0; i -= 2) 
    271   op[i] = ((int)ip[i + 0] + (int)ip[i + 1]) / 2; 
     270 for (h = (i = samples) / 2; i >= 0; i -= 2, h--) 
     271  op[h] = ((int)ip[i + 0] + (int)ip[i + 1]) / 2; 
    272272 
    273273 return 0; 
     
    297297int roar_conv_chans_2to116  (void * out, void * in, int samples) { 
    298298 int16_t * ip = (int16_t*) in, * op = (int16_t*) out; 
    299  int i; 
     299 int i, h; 
    300300 
    301301 samples -= 2; 
    302302 
    303  for (i = samples; i >= 0; i -= 2) 
    304   op[i] = ((int)ip[i + 0] + (int)ip[i + 1]) / 2; 
     303 for (h = (i = samples) / 2; i >= 0; i -= 2, h--) 
     304  op[h] = ((int)ip[i + 0] + (int)ip[i + 1]) / 2; 
    305305 
    306306 return 0; 
     
    341341  if ( ins && !outs ) { 
    342342   switch (bits) { 
    343     case  8: roar_conv_codec_s2u8( out, in, samples);  break; 
     343    case  8: roar_conv_codec_s2u8( out, in, samples); break; 
    344344    case 16: roar_conv_codec_s2u16(out, in, samples); break; 
    345345    case 32: roar_conv_codec_s2u32(out, in, samples); break; 
     
    350350  } else if ( !ins && outs ) { 
    351351   switch (bits) { 
    352     case  8: roar_conv_codec_u2s8( out, in, samples);  break; 
     352    case  8: roar_conv_codec_u2s8( out, in, samples); break; 
    353353    case 16: roar_conv_codec_u2s16(out, in, samples); break; 
    354354    case 32: roar_conv_codec_u2s32(out, in, samples); break; 
     
    445445 } 
    446446 
     447 if ( from->codec != to->codec ) { 
     448  if ( raor_conv_codec (out, ip, samples, from->codec, to->codec, to->bits) == -1 ) 
     449   return -1; 
     450  else 
     451   ip = out; 
     452 } 
     453 
    447454 if ( from->rate != to->rate ) { 
    448455  if ( roar_conv_rate(out, ip, samples, from->rate, to->rate, to->bits, from->channels) == -1 ) 
     
    454461 if ( from->channels != to->channels ) { 
    455462  if ( roar_conv_chans(out, ip, samples, from->channels, to->channels, to->bits) == -1 ) 
    456    return -1; 
    457   else 
    458    ip = out; 
    459  } 
    460  
    461  if ( from->codec != to->codec ) { 
    462   if ( raor_conv_codec (out, ip, samples, from->codec, to->codec, to->bits) == -1 ) 
    463463   return -1; 
    464464  else 
Note: See TracChangeset for help on using the changeset viewer.