Changeset 2938:9c43303646df in roaraudio
- Timestamp:
- 10/16/09 22:37:12 (15 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- roard
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/include/mixer.h
r2932 r2938 28 28 #include <roaraudio.h> 29 29 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 36 30 int need_vol_change (int channels, struct roar_mixer_settings * set); 37 31 -
roard/mixer.c
r2936 r2938 25 25 #include "roard.h" 26 26 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_INT64104 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 #else129 return -1;130 #endif131 }132 133 27 int need_vol_change (int channels, struct roar_mixer_settings * set) { 134 28 int i; -
roard/streams.c
r2840 r2938 991 991 992 992 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 ) 995 995 return -1; 996 996 } … … 1571 1571 1572 1572 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 ) { 1574 1574 _return(-1); 1575 1575 }
Note: See TracChangeset
for help on using the changeset viewer.