⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 effects_internal.c

📁 SDL_mixer 是一个基于 SDL 的混音器
💻 C
字号:
/*    SDL_mixer:  An audio mixer library based on the SDL library    Copyright (C) 1997-2004 Sam Lantinga    This library is free software; you can redistribute it and/or    modify it under the terms of the GNU Library General Public    License as published by the Free Software Foundation; either    version 2 of the License, or (at your option) any later version.    This library is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    Library General Public License for more details.    You should have received a copy of the GNU Library General Public    License along with this library; if not, write to the Free    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA    This file by Ryan C. Gordon (icculus@linuxgames.com)    These are some helper functions for the internal mixer special effects.*//* $Id: effects_internal.c 1192 2004-01-04 17:41:55Z slouken $ */     /* ------ These are used internally only. Don't touch. ------ */#include <stdio.h>#include <stdlib.h>#include "SDL_mixer.h"/* Should we favor speed over memory usage and/or quality of output? */int _Mix_effects_max_speed = 0;void _Mix_InitEffects(void){    _Mix_effects_max_speed = (getenv(MIX_EFFECTSMAXSPEED) != NULL);}void *_Eff_volume_table = NULL;/* Build the volume table for Uint8-format samples. * * Each column of the table is a possible sample, while each row of the *  table is a volume. Volume is a Uint8, where 0 is silence and 255 is full *  volume. So _Eff_volume_table[128][mysample] would be the value of *  mysample, at half volume. */void *_Eff_build_volume_table_u8(void){    int volume;    int sample;    Uint8 *rc;    if (!_Mix_effects_max_speed) {        return(NULL);    }    if (!_Eff_volume_table) {        rc = malloc(256 * 256);        if (rc) {            _Eff_volume_table = (void *) rc;            for (volume = 0; volume < 256; volume++) {                for (sample = -128; sample < 128; sample ++) {                    *rc = (Uint8)(((float) sample) * ((float) volume / 255.0))                         + 128;                    rc++;                }            }        }    }    return(_Eff_volume_table);}/* Build the volume table for Sint8-format samples. * * Each column of the table is a possible sample, while each row of the *  table is a volume. Volume is a Uint8, where 0 is silence and 255 is full *  volume. So _Eff_volume_table[128][mysample+128] would be the value of *  mysample, at half volume. */void *_Eff_build_volume_table_s8(void){    int volume;    int sample;    Sint8 *rc;    if (!_Eff_volume_table) {        rc = malloc(256 * 256);        if (rc) {            _Eff_volume_table = (void *) rc;            for (volume = 0; volume < 256; volume++) {                for (sample = -128; sample < 128; sample ++) {                    *rc = (Sint8)(((float) sample) * ((float) volume / 255.0));                    rc++;                }            }        }    }    return(_Eff_volume_table);}/* end of effects.c ... */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -