Changeset 2938:9c43303646df in roaraudio


Ignore:
Timestamp:
10/16/09 22:37:12 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

moved change of volume code out to libroardsp

Location:
roard
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • roard/include/mixer.h

    r2932 r2938  
    2828#include <roaraudio.h> 
    2929 
    30 int change_vol       (void * output, int bits, void * input, int samples, int channels, struct roar_mixer_settings * set); 
    31 int change_vol_8bit  (void * output, void * input, int samples, int channels, struct roar_mixer_settings * set); 
    32 int change_vol_16bit (void * output, void * input, int samples, int channels, struct roar_mixer_settings * set); 
    33 int change_vol_24bit (void * output, void * input, int samples, int channels, struct roar_mixer_settings * set); 
    34 int change_vol_32bit (void * output, void * input, int samples, int channels, struct roar_mixer_settings * set); 
    35  
    3630int need_vol_change  (int channels, struct roar_mixer_settings * set); 
    3731 
  • roard/mixer.c

    r2936 r2938  
    2525#include "roard.h" 
    2626 
    27 int change_vol (void * output, int bits, void * input, int samples, int channels, struct roar_mixer_settings * set) { 
    28  
    29  ROAR_DBG("change_vol(*): mixer at %p", set->mixer); 
    30  
    31  if ( bits == 8 ) { 
    32   return  change_vol_8bit(output, input, samples, channels, set); 
    33  } else if ( bits == 16 ) { 
    34   return  change_vol_16bit(output, input, samples, channels, set); 
    35  } else if ( bits == 24 ) { 
    36   return  change_vol_24bit(output, input, samples, channels, set); 
    37  } else if ( bits == 32 ) { 
    38   return  change_vol_32bit(output, input, samples, channels, set); 
    39  } else { 
    40   return -1; 
    41  } 
    42 } 
    43  
    44 int change_vol_8bit (void * output, void * input, int samples, int channels, struct roar_mixer_settings * set) { 
    45  char * in = input, * out = output; 
    46  int    i; 
    47  register int s; 
    48  
    49  if ( !(in && out) ) 
    50   return -1; 
    51  
    52  if (set->rpg_mul == set->rpg_div) { 
    53   for (i = 0; i < samples; i++) { 
    54    s  = in[i]; 
    55    s *= set->mixer[i % channels]; 
    56    s /= set->scale; 
    57    out[i] = s; 
    58   } 
    59  } else { 
    60   for (i = 0; i < samples; i++) { 
    61    s  = in[i]; 
    62    s *= (set->mixer[i % channels] * set->rpg_mul) / set->rpg_div; 
    63    s /= set->scale; 
    64    out[i] = s; 
    65   } 
    66  } 
    67  
    68  return 0; 
    69 } 
    70  
    71 int change_vol_16bit (void * output, void * input, int samples, int channels, struct roar_mixer_settings * set) { 
    72  int16_t * in = input, * out = output; 
    73  int       i; 
    74  register int s; 
    75  
    76  if ( !(in && out) ) 
    77   return -1; 
    78  
    79  if (set->rpg_mul == set->rpg_div) { 
    80   for (i = 0; i < samples; i++) { 
    81    s  = in[i]; 
    82    s *= set->mixer[i % channels]; 
    83    s /= set->scale; 
    84    out[i] = s; 
    85   } 
    86  } else { 
    87   for (i = 0; i < samples; i++) { 
    88    s  = in[i]; 
    89    s *= (set->mixer[i % channels] * set->rpg_mul) / set->rpg_div; 
    90    s /= set->scale; 
    91    out[i] = s; 
    92   } 
    93  } 
    94  
    95  return 0; 
    96 } 
    97  
    98 int change_vol_24bit (void * output, void * input, int samples, int channels, struct roar_mixer_settings * set) { 
    99  return -1; 
    100 } 
    101  
    102 int change_vol_32bit (void * output, void * input, int samples, int channels, struct roar_mixer_settings * set) { 
    103 #ifdef ROAR_NATIVE_INT64 
    104  int32_t * in = input, * out = output; 
    105  int       i; 
    106  ROAR_NATIVE_INT64 s; 
    107  
    108  if ( !(in && out) ) 
    109   return -1; 
    110  
    111  if (set->rpg_mul == set->rpg_div) { 
    112   for (i = 0; i < samples; i++) { 
    113    s  = in[i]; 
    114    s *= set->mixer[i % channels]; 
    115    s /= set->scale; 
    116    out[i] = s; 
    117   } 
    118  } else { 
    119   for (i = 0; i < samples; i++) { 
    120    s  = in[i]; 
    121    s *= (set->mixer[i % channels] * set->rpg_mul) / set->rpg_div; 
    122    s /= set->scale; 
    123    out[i] = s; 
    124   } 
    125  } 
    126  
    127  return 0; 
    128 #else 
    129  return -1; 
    130 #endif 
    131 } 
    132  
    13327int need_vol_change  (int channels, struct roar_mixer_settings * set) { 
    13428 int i; 
  • roard/streams.c

    r2840 r2938  
    991991 
    992992 if ( !streams_get_flag(id, ROAR_FLAG_HWMIXER) && !streams_get_flag(id, ROAR_FLAG_PASSMIXER) ) { 
    993   ROAR_DBG("streams_fill_mixbuffer2(*): CALL change_vol(*)..."); 
    994   if ( change_vol(outdata, info->bits, outdata, 8*outlen / info->bits, info->channels, &(ss->mixer)) == -1 ) 
     993  ROAR_DBG("streams_fill_mixbuffer2(*): CALL roar_amp_pcm(*)..."); 
     994  if ( roar_amp_pcm(outdata, info->bits, outdata, 8*outlen / info->bits, info->channels, &(ss->mixer)) == -1 ) 
    995995   return -1; 
    996996 } 
     
    15711571 
    15721572 if ( !is_vol_eq ) { 
    1573   if ( change_vol(obuf, g_sa->bits, ip, ROAR_OUTPUT_BUFFER_SAMPLES*g_sa->channels, g_sa->channels, &(ss->mixer)) == -1 ) { 
     1573  if ( roar_amp_pcm(obuf, g_sa->bits, ip, ROAR_OUTPUT_BUFFER_SAMPLES*g_sa->channels, g_sa->channels, &(ss->mixer)) == -1 ) { 
    15741574   _return(-1); 
    15751575  } 
Note: See TracChangeset for help on using the changeset viewer.