Use enum class for sound_sample_rate
This commit is contained in:
parent
60adb6ecd8
commit
5ce4d49004
|
@ -61,6 +61,9 @@ enum SyncGLMethod : uint8_t {
|
|||
#include "pack.h"
|
||||
|
||||
namespace dcx {
|
||||
|
||||
enum class sound_sample_rate : uint16_t;
|
||||
|
||||
struct CArg : prohibit_void_ptr<CArg>
|
||||
{
|
||||
bool CtlNoCursor;
|
||||
|
@ -150,7 +153,7 @@ struct Arg : prohibit_void_ptr<Arg>
|
|||
bool SysNoMovies;
|
||||
bool GfxSkipHiresMovie;
|
||||
bool GfxSkipHiresGFX;
|
||||
int SndDigiSampleRate;
|
||||
sound_sample_rate SndDigiSampleRate;
|
||||
std::string EdiAutoLoad;
|
||||
bool EdiSaveHoardData;
|
||||
bool EdiMacData; // also used for some read routines in non-editor build
|
||||
|
|
|
@ -58,6 +58,13 @@ enum class sound_stack : uint8_t
|
|||
cancel_previous,
|
||||
};
|
||||
|
||||
enum class sound_sample_rate : uint16_t
|
||||
{
|
||||
_11k = 11025,
|
||||
_22k = 22050,
|
||||
_44k = 44100,
|
||||
};
|
||||
|
||||
struct digi_sound_deleter : std::default_delete<uint8_t[]>
|
||||
{
|
||||
game_sound_offset offset = {};
|
||||
|
@ -202,13 +209,6 @@ extern void digi_start_sound_queued( short soundnum, fix volume );
|
|||
|
||||
// Following declarations are for the runtime switching system
|
||||
|
||||
#define SAMPLE_RATE_11K 11025
|
||||
#define SAMPLE_RATE_22K 22050
|
||||
#define SAMPLE_RATE_44K 44100
|
||||
|
||||
#define SDLMIXER_SYSTEM 1
|
||||
#define SDLAUDIO_SYSTEM 2
|
||||
|
||||
#define MUSIC_TYPE_NONE 0
|
||||
#define MUSIC_TYPE_BUILTIN 1
|
||||
#if DXX_USE_SDL_REDBOOK_AUDIO
|
||||
|
|
|
@ -200,12 +200,12 @@ int digi_audio_init()
|
|||
|
||||
#if defined(DXX_BUILD_DESCENT_I)
|
||||
/* Descent 1 sounds are always 11Khz. */
|
||||
WaveSpec.freq = SAMPLE_RATE_11K;
|
||||
WaveSpec.freq = underlying_value(sound_sample_rate::_11k);
|
||||
#elif defined(DXX_BUILD_DESCENT_II)
|
||||
/* Descent 2 sounds are available in both 11Khz and 22Khz. The user may
|
||||
* pick at program start time which to use.
|
||||
*/
|
||||
WaveSpec.freq = GameArg.SndDigiSampleRate;
|
||||
WaveSpec.freq = underlying_value(GameArg.SndDigiSampleRate);
|
||||
#endif
|
||||
//added/changed by Sam Lantinga on 12/01/98 for new SDL version
|
||||
WaveSpec.format = AUDIO_U8;
|
||||
|
|
|
@ -69,7 +69,7 @@ namespace {
|
|||
* Descent 2 sounds (variously, 11Khz or 22Khz), so the upsample should be
|
||||
* straightforward.
|
||||
*/
|
||||
constexpr unsigned digi_sample_rate = SAMPLE_RATE_44K;
|
||||
constexpr auto digi_sample_rate = underlying_value(sound_sample_rate::_44k);
|
||||
enumerated_bitset<64, sound_channel> channels;
|
||||
|
||||
/* channel management */
|
||||
|
@ -320,7 +320,7 @@ static void mixdigi_convert_sound(const unsigned i)
|
|||
#elif defined(DXX_BUILD_DESCENT_II)
|
||||
Uint16 out_format;
|
||||
Mix_QuerySpec(&out_freq, &out_format, &out_channels); // get current output settings
|
||||
const auto freq = GameArg.SndDigiSampleRate;
|
||||
const auto freq = underlying_value(GameArg.SndDigiSampleRate);
|
||||
#endif
|
||||
|
||||
if (!data.empty())
|
||||
|
|
|
@ -2527,7 +2527,7 @@ static int do_robot_dying_frame(const vmobjptridx_t objp, fix64 start_time, fix
|
|||
objp->mtype.phys_info.rotvel.y = (GameTime64 - start_time)/5;
|
||||
objp->mtype.phys_info.rotvel.z = (GameTime64 - start_time)/7;
|
||||
|
||||
if (const auto SndDigiSampleRate = GameArg.SndDigiSampleRate)
|
||||
if (const auto SndDigiSampleRate = underlying_value(GameArg.SndDigiSampleRate))
|
||||
sound_duration = fixdiv(GameSounds[digi_xlat_sound(death_sound)].length, SndDigiSampleRate);
|
||||
else
|
||||
sound_duration = F1_0;
|
||||
|
|
|
@ -388,7 +388,7 @@ int ds_load(int skip, const char * filename ) {
|
|||
#if defined(DXX_BUILD_DESCENT_I)
|
||||
snprintf(rawname, sizeof(rawname), "Sounds/%s.raw", fname.data());
|
||||
#elif defined(DXX_BUILD_DESCENT_II)
|
||||
snprintf(rawname, sizeof(rawname), "Sounds/%s.%s", fname.data(), (GameArg.SndDigiSampleRate==SAMPLE_RATE_22K) ? "r22" : "raw");
|
||||
snprintf(rawname, sizeof(rawname), "Sounds/%s.r%s", fname.data(), (GameArg.SndDigiSampleRate == sound_sample_rate::_22k) ? "22" : "aw");
|
||||
#endif
|
||||
|
||||
const auto i = piggy_find_sound(fname);
|
||||
|
|
|
@ -1139,8 +1139,8 @@ static inline void do_afterburner_stuff(object_array &)
|
|||
ubyte Last_afterburner_state = 0;
|
||||
fix64 Time_flash_last_played;
|
||||
|
||||
#define AFTERBURNER_LOOP_START ((GameArg.SndDigiSampleRate==SAMPLE_RATE_22K)?32027:(32027/2)) //20098
|
||||
#define AFTERBURNER_LOOP_END ((GameArg.SndDigiSampleRate==SAMPLE_RATE_22K)?48452:(48452/2)) //25776
|
||||
#define AFTERBURNER_LOOP_START ((GameArg.SndDigiSampleRate == sound_sample_rate::_22k)?32027:(32027/2)) //20098
|
||||
#define AFTERBURNER_LOOP_END ((GameArg.SndDigiSampleRate == sound_sample_rate::_22k)?48452:(48452/2)) //25776
|
||||
|
||||
namespace {
|
||||
static fix Last_afterburner_charge;
|
||||
|
|
|
@ -5589,13 +5589,15 @@ void init_hoard_data(d_vclip_array &Vclip)
|
|||
|
||||
//Load sounds for orb game
|
||||
hoard_resources.snd_idx = Num_sound_files;
|
||||
const auto SndDigiSampleRate = GameArg.SndDigiSampleRate;
|
||||
range_for (const unsigned i, xrange(4u))
|
||||
{
|
||||
int len;
|
||||
|
||||
len = PHYSFSX_readInt(ifile); //get 11k len
|
||||
|
||||
if (GameArg.SndDigiSampleRate == SAMPLE_RATE_22K) {
|
||||
if (SndDigiSampleRate == sound_sample_rate::_22k)
|
||||
{
|
||||
PHYSFSX_fseek(ifile,len,SEEK_CUR); //skip over 11k sample
|
||||
len = PHYSFSX_readInt(ifile); //get 22k len
|
||||
}
|
||||
|
@ -5605,7 +5607,8 @@ void init_hoard_data(d_vclip_array &Vclip)
|
|||
gs.data = digi_sound::allocated_data{std::make_unique<uint8_t[]>(len), game_sound_offset{}};
|
||||
PHYSFS_read(ifile, gs.data.get(), 1, len);
|
||||
|
||||
if (GameArg.SndDigiSampleRate == SAMPLE_RATE_11K) {
|
||||
if (SndDigiSampleRate == sound_sample_rate::_11k)
|
||||
{
|
||||
len = PHYSFSX_readInt(ifile); //get 22k len
|
||||
PHYSFSX_fseek(ifile,len,SEEK_CUR); //skip over 22k sample
|
||||
}
|
||||
|
|
|
@ -73,7 +73,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
|
||||
#define D1_PALETTE "palette.256"
|
||||
|
||||
#define DEFAULT_SNDFILE ((Piggy_hamfile_version < pig_hamfile_version::_3) ? DEFAULT_HAMFILE_SHAREWARE : (GameArg.SndDigiSampleRate == SAMPLE_RATE_22K) ? "descent2.s22" : "descent2.s11")
|
||||
#define DEFAULT_SNDFILE ((Piggy_hamfile_version < pig_hamfile_version::_3) ? DEFAULT_HAMFILE_SHAREWARE : (GameArg.SndDigiSampleRate == sound_sample_rate::_22k) ? "descent2.s22" : "descent2.s11")
|
||||
|
||||
#define MAC_ALIEN1_PIGSIZE 5013035
|
||||
#define MAC_ALIEN2_PIGSIZE 4909916
|
||||
|
@ -997,7 +997,7 @@ int read_hamfile(d_level_shared_robot_info_state &LevelSharedRobotInfoState)
|
|||
if (ham_fp)
|
||||
{
|
||||
shareware = 1;
|
||||
GameArg.SndDigiSampleRate = SAMPLE_RATE_11K;
|
||||
GameArg.SndDigiSampleRate = sound_sample_rate::_11k;
|
||||
if (CGameArg.SndDisableSdlMixer)
|
||||
{
|
||||
digi_close();
|
||||
|
|
|
@ -177,7 +177,7 @@ namespace {
|
|||
static void InitGameArg()
|
||||
{
|
||||
#if defined(DXX_BUILD_DESCENT_II)
|
||||
GameArg.SndDigiSampleRate = SAMPLE_RATE_22K;
|
||||
GameArg.SndDigiSampleRate = sound_sample_rate::_22k;
|
||||
#endif
|
||||
::dcx::InitGameArg();
|
||||
}
|
||||
|
@ -266,7 +266,7 @@ static void ReadCmdArgs(Inilist &ini, Arglist &Args)
|
|||
CGameArg.SndNoMusic = true;
|
||||
#if defined(DXX_BUILD_DESCENT_II)
|
||||
else if (!d_stricmp(p, "-sound11k"))
|
||||
GameArg.SndDigiSampleRate = SAMPLE_RATE_11K;
|
||||
GameArg.SndDigiSampleRate = sound_sample_rate::_11k;
|
||||
#endif
|
||||
else if (!d_stricmp(p, "-nosdlmixer"))
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue