Changeset 2742:a5c3ca61e61d in roaraudio


Ignore:
Timestamp:
09/21/09 02:24:56 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added roar_conv_chans_2to616(), roar_conv_chans_2to516() and roar_conv_chans_2to416()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroardsp/convert.c

    r2741 r2742  
    215215      case  1: return roar_conv_chans_2to116(out, in, samples); 
    216216      case  3: return roar_conv_chans_2to316(out, in, samples); 
     217      case  4: return roar_conv_chans_2to416(out, in, samples); 
     218      case  5: return roar_conv_chans_2to516(out, in, samples); 
     219      case  6: return roar_conv_chans_2to616(out, in, samples); 
    217220      default: return -1; 
    218221     } 
     
    373376 
    374377int roar_conv_chans_2to48  (void * out, void * in, int samples); 
    375 int roar_conv_chans_2to416 (void * out, void * in, int samples); 
     378int roar_conv_chans_2to416 (void * out, void * in, int samples) { 
     379 int16_t * ip = (int16_t*) in, * op = (int16_t*) out; 
     380 int i, h; 
     381 
     382 samples -= 2; 
     383 
     384 i  = samples; 
     385 h  = (samples / 2) * 4; 
     386 
     387 for (; i >= 0; i -= 2, h -= 3) { 
     388  op[h+0] = ip[i+0]; 
     389  op[h+1] = ip[i+1]; 
     390  op[h+2] = ip[i+0]; 
     391  op[h+3] = ip[i+1]; 
     392 } 
     393 
     394 return 0; 
     395} 
     396 
    376397int roar_conv_chans_2to58  (void * out, void * in, int samples); 
    377 int roar_conv_chans_2to516 (void * out, void * in, int samples); 
     398int roar_conv_chans_2to516 (void * out, void * in, int samples) { 
     399 int16_t * ip = (int16_t*) in, * op = (int16_t*) out; 
     400 int i, h; 
     401 
     402 samples -= 2; 
     403 
     404 i  = samples; 
     405 h  = (samples / 2) * 5; 
     406 
     407 for (; i >= 0; i -= 2, h -= 3) { 
     408  op[h+0] = ip[i+0]; 
     409  op[h+1] = ip[i+1]; 
     410  op[h+2] = ((int)ip[i + 0] + (int)ip[i + 1]) / 2; 
     411  op[h+3] = ip[i+0]; 
     412  op[h+4] = ip[i+1]; 
     413 } 
     414 
     415 return 0; 
     416} 
    378417int roar_conv_chans_2to68  (void * out, void * in, int samples); 
    379 int roar_conv_chans_2to616 (void * out, void * in, int samples); 
     418int roar_conv_chans_2to616 (void * out, void * in, int samples) { 
     419 int16_t * ip = (int16_t*) in, * op = (int16_t*) out; 
     420 int i, h; 
     421 
     422 samples -= 2; 
     423 
     424 i  = samples; 
     425 h  = (samples / 2) * 5; 
     426 
     427 for (; i >= 0; i -= 2, h -= 3) { 
     428  op[h+0] = ip[i+0]; 
     429  op[h+1] = ip[i+1]; 
     430  op[h+2] = ((int)ip[i + 0] + (int)ip[i + 1]) / 2; 
     431  op[h+3] = op[h+2]; 
     432  op[h+4] = ip[i+0]; 
     433  op[h+5] = ip[i+1]; 
     434 } 
     435 
     436 return 0; 
     437} 
    380438 
    381439 
Note: See TracChangeset for help on using the changeset viewer.