Changeset 3037:c1821f5d7d60 in roaraudio for libroardsp


Ignore:
Timestamp:
11/17/09 21:00:40 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

wrote interleaver...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroardsp/interleave.c

    r3036 r3037  
    6262 
    6363int roar_interl_encode_ext(struct roar_interleave * state, void ** in, void  * out, size_t len) { 
     64 size_t chan = 0; 
     65 size_t oc; 
     66 size_t bc   = 0; // bit counter 
     67 char   * ip[ROAR_INTERLEAVE_MAX_CHANNELS]; // output pointer 
     68 
    6469 if ( state == NULL ) 
    6570  return -1; 
     71 
     72 if ( in == NULL || out == NULL ) 
     73  return -1; 
     74 
     75 if ( len == 0 ) 
     76  return 0; 
     77 
     78 memcpy(ip, in, sizeof(void*)*state->channels); 
     79 
     80 for (oc = 0; oc < len; oc++) { 
     81  ((char*)out)[oc] = *(ip[chan]); 
     82  ip[chan]++; 
     83 
     84  bc += 8; 
     85 
     86  if ( bc == state->bits ) { 
     87   bc = 0; 
     88   chan++; 
     89   if ( chan == state->channels ) 
     90    chan = 0; 
     91  } 
     92 } 
    6693 
    6794 return -1; 
Note: See TracChangeset for help on using the changeset viewer.