Changeset 869:a8feb1a96af2 in roaraudio for libroardsp


Ignore:
Timestamp:
10/01/08 16:05:21 (16 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

implemnted roar_conv_endian_32()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroardsp/convert.c

    r868 r869  
    343343 } 
    344344 
     345 ROAR_DBG("raor_conv_codec(out=%p, in=%p, samples=%i, from=%i(%s), to=%i(%s), bits=%i) = ?", 
     346              out, in, samples, from, roar_codec2str(from), to, roar_codec2str(to), bits); 
     347 
    345348 if ( inbo != outbo ) { 
    346349  if ( bits != 8 ) { // there is no need to talk about eddines on 8 bit data streams 
     
    354357     nin = out; 
    355358    } else { // what the hell is PDP eddines in 24 bit mode? 
     359     return -1; 
     360    } 
     361   } else if ( bits == 32 ) { 
     362    if ( (inbo == ROAR_CODEC_LE || inbo == ROAR_CODEC_BE) && (outbo == ROAR_CODEC_LE || outbo == ROAR_CODEC_BE) ) { 
     363     roar_conv_endian_32(out, nin, samples); 
     364     nin = out; 
     365    } else { // need to handle 32 PDP eddines here? 
    356366     return -1; 
    357367    } 
     
    509519} 
    510520 
     521int roar_conv_endian_32   (void * out, void * in, int samples) { 
     522 int32_t       * ip = in; 
     523 int32_t       * op = out; 
     524 union { 
     525  int32_t val; 
     526  char    data[4]; 
     527 }               c, h; 
     528 int             i; 
     529 
     530 // may the holly optimizer save our souls! 
     531 
     532 ROAR_DBG("roar_conv_endian_32(out=%p, in=%p, samples=%i) = ?", out, in, samples); 
     533 
     534 for (i = 0; i < samples; i++) { 
     535  c.val     = ip[i]; 
     536  h.data[0] = c.data[3]; 
     537  h.data[1] = c.data[2]; 
     538  h.data[2] = c.data[1]; 
     539  h.data[3] = c.data[0]; 
     540  op[i]     = h.val; 
     541 } 
     542 
     543 return 0; 
     544} 
     545 
    511546int roar_conv       (void * out, void * in, int samples, struct roar_audio_info * from, struct roar_audio_info * to) { 
    512547 void * ip = in; 
Note: See TracChangeset for help on using the changeset viewer.