Changeset 5181:ca57e34b2a35 in roaraudio for libroardsp/filter_amp.c


Ignore:
Timestamp:
10/22/11 16:17:35 (13 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

updated filters to support 8 and 32 bit as well as 16 bit

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroardsp/filter_amp.c

    r4708 r5181  
    4747} 
    4848 
    49 int roardsp_amp_calc8  (struct roardsp_filter * filter, void * data, size_t samples) { 
    50  struct roardsp_amp * self = (struct roardsp_amp *) filter->inst; 
    51  int8_t * samp = (int8_t *) data; 
    52  register int_least32_t s; 
    53  size_t i; 
    54  
    55  for (i = 0; i < samples; i++) { 
    56   s        = samp[i]; 
    57   s       *= self->mul; 
    58   s       /= self->div; 
    59   samp[i]  = s; 
    60  }; 
    61  
    62  return 0; 
     49#define _calcX(bits,twobits) \ 
     50int roardsp_amp_calc##bits  (struct roardsp_filter * filter, void * data, size_t samples) { \ 
     51 struct roardsp_amp * self = (struct roardsp_amp *) filter->inst; \ 
     52 int##bits##_t * samp = (int##bits##_t *) data; \ 
     53 register int##twobits##_t s; \ 
     54 size_t i; \ 
     55\ 
     56 for (i = 0; i < samples; i++) { \ 
     57  s        = samp[i]; \ 
     58  s       *= self->mul; \ 
     59  s       /= self->div; \ 
     60  samp[i]  = s; \ 
     61 }; \ 
     62\ 
     63 return 0; \ 
    6364} 
    6465 
    65 int roardsp_amp_calc16  (struct roardsp_filter * filter, void * data, size_t samples) { 
    66  struct roardsp_amp * self = (struct roardsp_amp *) filter->inst; 
    67  int16_t * samp = (int16_t *) data; 
    68  register int_least32_t s; 
    69  size_t i; 
    70  
    71  for (i = 0; i < samples; i++) { 
    72   s        = samp[i]; 
    73   s       *= self->mul; 
    74   s       /= self->div; 
    75 //  ROAR_DBG("roardsp_amp_calc16(*): samp[i=%u] = %i, s=%i, self->mul=%i, self->div=%i", i, samp[i], s, self->mul, self->div); 
    76   samp[i]  = s; 
    77  }; 
    78  
    79  return 0; 
    80 } 
     66_calcX(8,16) 
     67_calcX(16,32) 
     68_calcX(32,64) 
    8169 
    8270int roardsp_amp_ctl   (struct roardsp_filter * filter, int cmd, void * data) { 
Note: See TracChangeset for help on using the changeset viewer.