engine/platformLinux/platformAL.h
2024-01-07 04:36:33 +00:00

137 lines
4.1 KiB
C++

//-----------------------------------------------------------------------------
// V12 Engine
//
// Copyright (c) 2001 GarageGames.Com
// Portions Copyright (c) 2001 by Sierra Online, Inc.
//-----------------------------------------------------------------------------
#ifndef _PLATFORMAL_H_
#define _PLATFORMAL_H_
#ifndef _PLATFORM_H_
#include "engine/platform/platform.h"
#endif
#include <AL/altypes.h>
#include <AL/alctypes.h>
#include <AL/alexttypes.h>
// rename
#define AL_GAIN_LINEAR AL_GAIN_LINEAR_LOKI
#define AL_SOURCE_LOOPING AL_LOOPING
#define AL_MIN_DISTANCE AL_REFERENCE_DISTANCE
// fictional tokens
#define AL_PAN 0xFFFFFFFE
#define AL_SOURCE_AMBIENT 0xFFFFFFFD
#define AL_BUFFER_KEEP_RESIDENT 0xFFFFFFFC
#define ALC_PROVIDER 0x1FFFFFFE
#define ALC_PROVIDER_COUNT 0x1FFFFFFD
#define ALC_PROVIDER_NAME 0x1FFFFFFC
#define ALC_SPEAKER 0x1FFFFFFB
#define ALC_SPEAKER_COUNT 0x1FFFFFFA
#define ALC_SPEAKER_NAME 0x1FFFFFF9
#define ALC_BUFFER_MEMORY_USAGE 0x1FFFFFF8
#define ALC_BUFFER_MEMORY_SIZE 0x1FFFFFF7
#define ALC_BUFFER_MEMORY_COUNT 0x1FFFFFF6
#define ALC_BUFFER_COUNT 0x1FFFFFF5
#define ALC_BUFFER_DYNAMIC_MEMORY_USAGE 0x1FFFFFF4
#define ALC_BUFFER_DYNAMIC_MEMORY_SIZE 0x1FFFFFF3
#define ALC_BUFFER_DYNAMIC_MEMORY_COUNT 0x1FFFFFF2
#define ALC_BUFFER_DYNAMIC_COUNT 0x1FFFFFF1
#define ALC_BUFFER_LATENCY 0x1FFFFFF0
#define ALC_RESOLUTION 0x1FFFFFEF
#define ALC_CHANNELS 0x1FFFFFEE
#define AL_ENV_FLAGS_EXT 0x2FFFFFFE
#define AL_ENV_ROOM_VOLUME_EXT 0x2FFFFFFD
#define AL_ENV_EFFECT_VOLUME_EXT 0x2FFFFFFC
#define AL_ENV_DAMPING_EXT 0x2FFFFFFB
#define AL_ENV_ENVIRONMENT_SIZE_EXT 0x2FFFFFFA
#define AL_ENV_SAMPLE_REVERB_MIX_EXT 0x2FFFFFF9
#define AL_ENV_SAMPLE_DIRECT_EXT 0x2FFFFFF8
#define AL_ENV_SAMPLE_DIRECT_HF_EXT 0x2FFFFFF7
#define AL_ENV_SAMPLE_ROOM_EXT 0x2FFFFFF6
#define AL_ENV_SAMPLE_ROOM_HF_EXT 0x2FFFFFF5
#define AL_ENV_SAMPLE_OUTSIDE_VOLUME_HF_EXT 0x2FFFFFF4
#define AL_ENV_SAMPLE_FLAGS_EXT 0x2FFFFFF3
#define AL_ENV_SAMPLE_OBSTRUCTION_EXT 0x2FFFFFF2
#define AL_ENV_SAMPLE_OBSTRUCTION_LF_RATIO_EXT 0x2FFFFFF1
#define AL_ENV_SAMPLE_OCCLUSION_EXT 0x2FFFFFF0
#define AL_ENV_SAMPLE_OCCLUSION_LF_RATIO_EXT 0x2FFFFFEF
#define AL_ENV_SAMPLE_OCCLUSION_ROOM_RATIO_EXT 0x2FFFFFEE
#define AL_ENV_SAMPLE_ROOM_ROLLOFF_EXT 0x2FFFFFED
#define AL_ENV_SAMPLE_AIR_ABSORPTION_EXT 0x2FFFFFEC
// room types: same as miles/eax
enum {
AL_ENVIRONMENT_GENERIC = 0,
AL_ENVIRONMENT_PADDEDCELL,
AL_ENVIRONMENT_ROOM,
AL_ENVIRONMENT_BATHROOM,
AL_ENVIRONMENT_LIVINGROOM,
AL_ENVIRONMENT_STONEROOM,
AL_ENVIRONMENT_AUDITORIUM,
AL_ENVIRONMENT_CONCERTHALL,
AL_ENVIRONMENT_CAVE,
AL_ENVIRONMENT_ARENA,
AL_ENVIRONMENT_HANGAR,
AL_ENVIRONMENT_CARPETEDHALLWAY,
AL_ENVIRONMENT_HALLWAY,
AL_ENVIRONMENT_STONECORRIDOR,
AL_ENVIRONMENT_ALLEY,
AL_ENVIRONMENT_FOREST,
AL_ENVIRONMENT_CITY,
AL_ENVIRONMENT_MOUNTAINS,
AL_ENVIRONMENT_QUARRY,
AL_ENVIRONMENT_PLAIN,
AL_ENVIRONMENT_PARKINGLOT,
AL_ENVIRONMENT_SEWERPIPE,
AL_ENVIRONMENT_UNDERWATER,
AL_ENVIRONMENT_DRUGGED,
AL_ENVIRONMENT_DIZZY,
AL_ENVIRONMENT_PSYCHOTIC,
AL_ENVIRONMENT_COUNT
};
// declare OpenAL functions
#define AL_EXTENSION(ext_name) extern bool gDoesSupport_##ext_name;
#define AL_FUNCTION(fn_return,fn_name,fn_args) extern fn_return (FN_CDECL *fn_name)fn_args;
#define AL_EXT_FUNCTION(ext_name,fn_return,fn_name,fn_args) extern fn_return (FN_CDECL *fn_name)fn_args;
#ifndef _OPENALFN_H_
#include "lib/openal/win32/openALFn.h"
#endif
namespace Audio
{
bool libraryInit(const char *library);
void libraryInitExtensions();
void libraryShutdown();
inline bool doesSupportIASIG()
{
return gDoesSupport_AL_EXT_IASIG;
}
inline bool doesSupportDynamix()
{
return gDoesSupport_AL_EXT_DYNAMIX;
}
// helpers
F32 DBToLinear(F32 value);
F32 linearToDB(F32 value);
} // end namespace Audio
// Used by the Linux client audio
extern void alxFakeCallbackUpdate( void );
#endif