diff options
| author | GuglioIsStupid <guglioisbusiness@gmail.com> | 2026-03-05 19:48:12 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-06 07:48:12 +0700 |
| commit | 8398eb16b8996df7093960bb0a5d7fc65b8229d4 (patch) | |
| tree | 1e25a1a2ad9bd39881d2193fd7cbd67b93b734e2 /Minecraft.Client/Windows64/Miles/include/imssapi.h | |
| parent | f012250219abcdb0d07cd60ca2089fbb63dc222c (diff) | |
Miniaudio Implementation (+stb_vorbis) (#624)
* Miniaudio Implementation
* Do not link miles + remove miles lib
Diffstat (limited to 'Minecraft.Client/Windows64/Miles/include/imssapi.h')
| -rw-r--r-- | Minecraft.Client/Windows64/Miles/include/imssapi.h | 3267 |
1 files changed, 0 insertions, 3267 deletions
diff --git a/Minecraft.Client/Windows64/Miles/include/imssapi.h b/Minecraft.Client/Windows64/Miles/include/imssapi.h deleted file mode 100644 index 883a6fc1..00000000 --- a/Minecraft.Client/Windows64/Miles/include/imssapi.h +++ /dev/null @@ -1,3267 +0,0 @@ -#ifndef IMSSAPI_H -#define IMSSAPI_H - -// Internal API file - -#if defined(IS_PS3) || defined(IS_PSP) -#include <string.h> -#endif - -#if defined(IS_WII) -#include <string.h> -#include <math.h> -#endif - -#ifdef __cplusplus -extern "C" -{ -#endif - -#if defined(IS_WIN32API) || defined(IS_WII) - #pragma pack(push, 1) -#endif -#ifdef IS_32 - #if !defined(IS_WIN32API) - #define ASMLINK - #define ASMPARM - #else - #if defined(IS_XENON) - #define ASMLINK __cdecl - #define ASMPARM register - #else - #define ASMLINK __cdecl - #define ASMPARM - #endif - #endif -#else - #define ASMLINK WINAPI - #define ASMPARM -#endif - -#ifndef YES -#define YES 1 -#endif - -#ifndef NULL -#define NULL 0 -#endif - -#define MSSHIWORD(ptr) (((U32)ptr)>>16) -#define MSSLOWORD(ptr) ((U16)((U32)ptr)) - -#ifndef NO -#define NO 0 -#endif - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -#ifdef IS_MAC - -#if !defined(max) -#define max(a,b) (((a) > (b)) ? (a) : (b)) -#endif -#if !defined(min) -#define min(a,b) (((a) < (b)) ? (a) : (b)) -#endif - -#endif - -#ifdef IS_WATCOM - -#if !defined(max) // Watcom stdlib.h doesn't define these for C++ -#define max(a,b) (((a) > (b)) ? (a) : (b)) -#endif -#if !defined(min) -#define min(a,b) (((a) < (b)) ? (a) : (b)) -#endif - -#endif - -#ifdef IS_WIN64 - - #define PTRFMT "0x%I64X" - #define SINTFMT "%I64d" - #define HPFMT "%ld" - -#else - - #if defined(IS_PS3) || defined(IS_PSP) || defined(IS_3DS) - - #define PTRFMT "0x%lX" - #define SINTFMT "%d" // (GCC warns when ints printed with %ld) - #define HPFMT "%ld" - - #else - - #define PTRFMT "0x%lX" - #define SINTFMT "%ld" - #define HPFMT "%ld" - - #endif - -#endif - -U32 AILCALL XMI_read_VLN(U8 const* *ptr); -S32 AILCALL XMI_message_size(S32 status); -void const * AILCALL XMI_find_sequence(U8 const *image, S32 sequence); -S32 AIL_process_WAV_image( AILSOUNDINFO const * info, HSAMPLE sample ); - -#ifdef IS_SPU -#define NTELEMETRY -#endif - -#include "tmapi.h" - -#ifdef NTELEMETRY - #define miles_context 0 -#else - extern HTELEMETRY g_Miles_Tm; - extern S32 g_tm_log; - #define miles_context g_Miles_Tm -#endif - -//############################################################################ -//## ## -//## API function prototypes ## -//## ## -//############################################################################ - -#define check_hardware_buffer( S, flags ) -#define hardware_stop( S ) -#define set_hardware_position( S ) -#define hardware_spin_until_stopped( S ) -#define set_hardware_volume( S ) -#define set_master_hardware_volume( dig ) -#define set_hardware_loop_region( S ) -#define set_hardware_low_pass( S ) - -extern void AILCALL InMilesMutex(void); -extern void AILCALL OutMilesMutex(void); - -#ifdef IS_WIN32API - -#ifdef NTAPI -extern HWND AILCALL AIL_API_HWND (void); - -void AILEXPORT API_timer (UINT IDEvent, - UINT uReserved, - DWORD dwUser, - DWORD dwReserved1, - DWORD dwReserved2); - -#endif - -extern S32 MilesCount; -extern U32 lastapitimerms; - - void AILCALL Set_thread_name( U32 thread_id, char const * thread_name ); - -#endif - - -#ifdef IS_MAC - #if defined(__CARBON__) - ProcessSerialNumber AILCALL AIL_API_Process(void); - #endif -#endif - - -#ifdef _DEBUG - -DXDEC void AILEXPORT AIL_debug_printf( char const *fmt, ...); - -#else - -#define AIL_debug_printf(...) - -#endif - -#ifndef MSS_SPU_PROCESS - -// -// Global preference array -// -extern SINTa AIL_preference [N_PREFS]; - -#endif - -extern char AIL_redist_directory[260]; - -extern S32 AILCALL match_suffix(char const* suffix,char const* file_suffix); - -#if !defined(IS_X86) || !defined(IS_MAC) // use mix rib on x86 mac -DXDEC S32 AILCALL MIX_RIB_MAIN( HPROVIDER provider_handle, U32 up_down, RIB_ALLOC_PROVIDER_HANDLE_TYPE * rib_alloc, RIB_REGISTER_INTERFACE_TYPE * rib_reg, RIB_UNREGISTER_INTERFACE_TYPE * rib_unreg ); -#endif - -// -// High-level support services -// - -extern void AILCALL AIL_API_startup (void); -extern void AILCALL AIL_API_shutdown (void); - -extern SINTa AILCALL AIL_API_set_preference (U32 number, - SINTa value); - -// -// Low-level support services -// - -extern void AILCALL AIL_API_sleep (U32 ms); - -extern S32 AILCALL AIL_API_background (void); - -extern void AILCALL AIL_API_mem_free_lock (void *ptr); - -extern void* AILCALL AIL_API_mem_alloc_lock (UINTa size); - -// -// Process services -// - -extern HTIMER AILCALL AIL_API_register_timer (AILTIMERCB fn); - -extern UINTa AILCALL AIL_API_set_timer_user (HTIMER timer, - UINTa user); - -extern void AILCALL AIL_API_set_timer_period (HTIMER timer, - U32 microseconds); - -extern void AILCALL AIL_API_set_timer_frequency (HTIMER timer, - U32 hertz) ; - -extern void AILCALL AIL_API_set_timer_divisor (HTIMER timer, - U32 PIT_divisor); - -extern void AILCALL AIL_API_start_timer (HTIMER timer) ; -extern void AILCALL AIL_API_start_all_timers (void); - -extern void AILCALL AIL_API_stop_timer (HTIMER timer); -extern void AILCALL AIL_API_stop_all_timers (void); - -extern void AILCALL AIL_API_release_timer_handle(HTIMER timer); -extern void AILCALL AIL_API_release_all_timers (void); - -extern void Container_FreeAll(); -extern void* Container_GetPreset(char const* i_PresetName); -extern void* Container_GetEnvironment(char const* i_EnvironmentName); -extern S32 Container_GetSound(char const* i_SoundName, char* o_SoundFileName, MILESBANKSOUNDINFO* o_SoundInfo); -extern void* Container_GetEvent(char const* i_EventName); -extern void* Container_GetMarkerList(char const* i_SoundName); -extern S32 Container_GetLoadedCount(); -extern S32 Container_GetMemUsage(); -extern char const* Container_GetLoadedName(S32 i_Index); - -extern const U8* AILCALL MilesFindEventInternal(HMSOUNDBANK i_Bank, const char* i_EventName); -extern void AILCALL MilesClearEventQueueInternal(); -extern void AILCALL MilesRegisterRandInternal(MSS_USER_RAND * rand); -extern U64 AILCALL MilesEnqueueEventInternal(const U8* i_Event, void* i_UserBuffer, S32 i_UserBufferLen, S32 i_EnqueueFlags, U64 i_EventFilter); -extern U64 AILCALL MilesEnqueueEventByNameInternal(char const* i_Name); -extern U64 AILCALL MilesEnqueueEventContextInternal(HEVENTSYSTEM i_Context, const U8* i_Event, void* i_UserBuffer, S32 i_UserBufferLen, S32 i_EnqueueFlags, U64 i_EventFilter); - -extern S32 AILCALL MilesBeginEventQueueProcessingInternal(); -extern S32 AILCALL MilesCompleteEventQueueProcessingInternal(); - -extern S32 AILCALL MilesEnumerateSoundInstancesInternal(HEVENTSYSTEM i_System, HMSSENUM* io_Next, S32 i_Status, const char* i_Labels, U64 search_for_ID, MILESEVENTSOUNDINFO* o_Info); -extern S32 AILCALL MilesEnumeratePresetPersistsInternal(HEVENTSYSTEM i_System, HMSSENUM* io_Next, const char** o_Name); -extern HEVENTSYSTEM AILCALL MilesStartupEventSystemInternal(HDIGDRIVER i_Driver, S32 i_CommandBufferSize, char* i_Memory, S32 i_MemoryLen); -extern HEVENTSYSTEM AILCALL MilesAddEventSystemInternal(HDIGDRIVER i_Driver); -extern S32 AILCALL MilesSetSoundLabelLimitsInternal(HEVENTSYSTEM i_System, U64 i_Id, const char* i_SoundLimits, char const* i_Name); - - -extern void AILCALL MilesShutdownEventSystemInternal(); -extern HMSOUNDBANK AILCALL MilesAddSoundBankInternal(const char* i_FileName, char const* i_Name); -extern S32 AILCALL MilesReleaseSoundBankInternal(HMSOUNDBANK i_Bank); -extern char* AILCALL MilesTextDumpEventSystemInternal(); -extern void AILCALL MilesSetEventErrorCallbackInternal(AILEVENTERRORCB i_Callback); - -extern void AILCALL MilesSetVarIInternal(UINTa i_System, char const* i_Name, S32 i_Value); -extern void AILCALL MilesSetVarFInternal(UINTa i_System, char const* i_Name, F32 i_Value); -extern S32 AILCALL MilesGetVarFInternal(UINTa i_Context, char const* i_Name, F32* o_Value); -extern S32 AILCALL MilesGetVarIInternal(UINTa i_Context, char const* i_Name, S32* o_Value); -extern void AILCALL MilesSetSoundStartOffsetInternal(HMSSENUM i_Instance, S32 i_Offset, S32 i_IsMs); -extern void AILCALL MilesRequeueAsyncsInternal(); - -extern AIL_file_open_callback MSS_open; -extern AIL_file_close_callback MSS_close; -extern AIL_file_seek_callback MSS_seek; -extern AIL_file_read_callback MSS_read; - -extern S32 disk_err; -extern char MSS_Directory[260]; - - -extern void stream_background(void); // background service for streaming - -#define call_fetch_CB( ASI,usr,dest,bytes,offset ) ((AILASIFETCHCB)((ASI)->fetch_CB))(usr,dest,bytes,offset) - -extern HPROVIDER find_ASI_provider(const C8 *attrib, const C8 *filename); - - -// -// M3D services -// - -extern HDIGDRIVER AILCALL AIL_API_primary_digital_driver (HDIGDRIVER new_primary); - -extern void AILCALL AIL_API_set_sample_3D_distances (HSAMPLE samp, - F32 max_dist, - F32 min_dist, - S32 auto_3D_wet_atten); - -extern void AILCALL AIL_API_sample_3D_distances (HSAMPLE samp, - F32 * max_dist, - F32 * min_dist, - S32 * auto_3D_wet_atten); - -extern void AILCALL AIL_API_set_sample_obstruction (HSAMPLE S, - F32 obstruction); - -extern void AILCALL AIL_API_set_sample_exclusion (HSAMPLE S, - F32 exclusion); - -extern void AILCALL AIL_API_set_sample_occlusion (HSAMPLE S, - F32 occlusion); - -extern void AILCALL AIL_API_set_sample_3D_cone (HSAMPLE S, - F32 inner_angle, - F32 outer_angle, - F32 outer_volume); - -extern F32 AILCALL AIL_API_sample_obstruction (HSAMPLE S); - -extern F32 AILCALL AIL_API_sample_occlusion (HSAMPLE S); - -extern F32 AILCALL AIL_API_sample_exclusion (HSAMPLE S); - -extern void AILCALL AIL_API_sample_3D_cone (HSAMPLE S, - F32 *inner_angle, - F32 *outer_angle, - F32 *outer_volume); - -extern S32 AILCALL AIL_API_room_type (HDIGDRIVER dig, - S32 bus_index); - -extern void AILCALL AIL_API_set_room_type (HDIGDRIVER dig, - S32 bus_index, - S32 EAX_room_type); - -extern F32 AILCALL AIL_API_3D_rolloff_factor (HDIGDRIVER dig); - -extern void AILCALL AIL_API_set_3D_rolloff_factor (HDIGDRIVER dig, - F32 factor ); - -extern F32 AILCALL AIL_API_3D_doppler_factor (HDIGDRIVER dig); - -extern void AILCALL AIL_API_set_3D_doppler_factor (HDIGDRIVER dig, - F32 factor ); - -extern F32 AILCALL AIL_API_3D_distance_factor (HDIGDRIVER dig); - -extern void AILCALL AIL_API_set_3D_distance_factor (HDIGDRIVER dig, - F32 factor ); - -extern void AILCALL AIL_API_set_sample_3D_position (HSAMPLE S, - F32 X, - F32 Y, - F32 Z); - -extern void AILCALL AIL_API_set_sample_3D_velocity (HSAMPLE S, - F32 dX_per_ms, - F32 dY_per_ms, - F32 dZ_per_ms, - F32 magnitude); - -extern void AILCALL AIL_API_set_sample_3D_velocity_vector (HSAMPLE S, - F32 dX_per_ms, - F32 dY_per_ms, - F32 dZ_per_ms); - -extern void AILCALL AIL_API_set_sample_3D_orientation (HSAMPLE S, - F32 X_face, - F32 Y_face, - F32 Z_face, - F32 X_up, - F32 Y_up, - F32 Z_up); - -extern S32 AILCALL AIL_API_sample_3D_position (HSAMPLE S, - F32 *X, - F32 *Y, - F32 *Z); - -extern void AILCALL AIL_API_sample_3D_velocity (HSAMPLE S, - F32 *dX_per_ms, - F32 *dY_per_ms, - F32 *dZ_per_ms); - -extern void AILCALL AIL_API_sample_3D_orientation (HSAMPLE S, - F32 *X_face, - F32 *Y_face, - F32 *Z_face, - F32 *X_up, - F32 *Y_up, - F32 *Z_up); - -extern void AILCALL AIL_API_update_sample_3D_position (HSAMPLE S, - F32 dt_milliseconds); - -extern void AILCALL AIL_API_set_listener_3D_position(HDIGDRIVER dig, - F32 X, - F32 Y, - F32 Z); - -extern void AILCALL AIL_API_set_listener_3D_velocity(HDIGDRIVER dig, - F32 dX_per_ms, - F32 dY_per_ms, - F32 dZ_per_ms, - F32 magnitude); - -extern void AILCALL AIL_API_set_listener_3D_velocity_vector (HDIGDRIVER dig, - F32 dX_per_ms, - F32 dY_per_ms, - F32 dZ_per_ms); - -extern void AILCALL AIL_API_set_listener_3D_orientation (HDIGDRIVER dig, - F32 X_face, - F32 Y_face, - F32 Z_face, - F32 X_up, - F32 Y_up, - F32 Z_up); - -extern void AILCALL AIL_API_set_sample_3D_volume_falloff (HSAMPLE S, MSSGRAPHPOINT* graph, S32 pointcount); -extern void AILCALL AIL_API_set_sample_3D_lowpass_falloff (HSAMPLE S, MSSGRAPHPOINT* graph, S32 pointcount); -extern void AILCALL AIL_API_set_sample_3D_exclusion_falloff (HSAMPLE S, MSSGRAPHPOINT* graph, S32 pointcount); -extern void AILCALL AIL_API_set_sample_3D_spread_falloff (HSAMPLE S, MSSGRAPHPOINT* graph, S32 pointcount); -extern void AILCALL AIL_API_set_sample_3D_position_segments (HSAMPLE S, MSSVECTOR3D* points, S32 pointcount); -extern void AILCALL AIL_API_set_sample_3D_spread (HSAMPLE S, F32 spread); - -extern void AILCALL AIL_API_listener_3D_position (HDIGDRIVER dig, - F32 *X, - F32 *Y, - F32 *Z); - -extern void AILCALL AIL_API_listener_3D_velocity (HDIGDRIVER dig, - F32 *dX_per_ms, - F32 *dY_per_ms, - F32 *dZ_per_ms); - -extern void AILCALL AIL_API_listener_3D_orientation (HDIGDRIVER dig, - F32 *X_face, - F32 *Y_face, - F32 *Z_face, - F32 *X_up, - F32 *Y_up, - F32 *Z_up); - -extern void AILCALL AIL_API_update_listener_3D_position (HDIGDRIVER dig, - F32 dt_milliseconds); - -extern S32 AILCALL AIL_API_calculate_3D_channel_levels (HDIGDRIVER driver, //) - F32 *channel_levels, - MSS_SPEAKER const * *speaker_array, - MSSVECTOR3D *src_pos, - MSSVECTOR3D *src_face, - MSSVECTOR3D *src_up, - F32 src_inner_angle, - F32 src_outer_angle, - F32 src_outer_volume, - F32 src_max_dist, - F32 src_min_dist, - MSSVECTOR3D *listen_pos, - MSSVECTOR3D *listen_face, - MSSVECTOR3D *listen_up, - F32 rolloff_factor, - MSSVECTOR3D *doppler_velocity, - F32 *doppler_shift); - - -#ifdef IS_GENERICDIG -extern HDIGDRIVER AILCALL AIL_API_open_generic_digital_driver( U32 frequency, - S32 bits, - S32 channel, - U32 flags, - RADSS_OPEN_FUNC dig_open); -#else -extern HDIGDRIVER AILCALL AIL_API_open_digital_driver( U32 frequency, - S32 bits, - S32 channel, - U32 flags ); -#endif - -extern void AILCALL AIL_API_close_digital_driver( HDIGDRIVER dig ); - -#if defined(IS_WINDOWS) - -extern S32 AILCALL AIL_API_digital_handle_release(HDIGDRIVER drvr); - -extern S32 AILCALL AIL_API_digital_handle_reacquire - (HDIGDRIVER drvr); -#endif - -#if defined(IS_WINDOWS) || (defined(IS_MAC) && !defined(IS_IPHONE)) - - -extern HDIGINPUT AILCALL AIL_API_open_input (AIL_INPUT_INFO *info); - -extern void AILCALL AIL_API_close_input (HDIGINPUT dig); - -extern AIL_INPUT_INFO * - AILCALL AIL_API_get_input_info (HDIGINPUT dig); - -extern S32 AILCALL AIL_API_set_input_state (HDIGINPUT dig, - S32 enable); - -#endif - -#ifdef MSS_FLT_SUPPORTED - -void * SS_execute_filter_chain(HSAMPLE S, //) - void * src, - void * temp_dest, - S32 src_bytes, - S32 is_stereo, - S16 *dest_mono_sample_buffer); - -// -// Internal FLT services -// - -void FLT_init_list(void); - -FLTPROVIDER *FLT_find_provider_instance(HPROVIDER provider, - HDIGDRIVER dig); - -void FLT_disconnect_driver(HDIGDRIVER dig); - -void FLT_call_premix_processors(HDIGDRIVER dig); - -S32 FLT_call_postmix_processors(HDIGDRIVER dig, void *output_buffer); - -// -// FLT services -// - -extern S32 AILCALL AIL_API_enumerate_filters (HMSSENUM *next, - HPROVIDER *dest, - C8 * *name); - -extern HDRIVERSTATE - AILCALL AIL_API_open_filter (HPROVIDER lib, - HDIGDRIVER dig); - -extern void AILCALL AIL_API_close_filter (HDRIVERSTATE filter); - - - - - - -extern S32 AILCALL AIL_API_enumerate_filter_attributes - (HPROVIDER lib, - HMSSENUM * next, - RIB_INTERFACE_ENTRY * dest); - -extern void AILCALL AIL_API_filter_attribute (HPROVIDER lib, - C8 const * name, - void * val); - -extern void AILCALL AIL_API_set_filter_preference - (HPROVIDER lib, - C8 const * name, - void const * val); - - - - - -extern S32 AILCALL AIL_API_enumerate_filter_sample_attributes - (HPROVIDER lib, - HMSSENUM * next, - RIB_INTERFACE_ENTRY * dest); - -extern void AILCALL AIL_API_filter_sample_attribute - (HSAMPLE S, - C8 const * name, - void * val); - -extern void AILCALL AIL_API_set_filter_sample_preference - (HSAMPLE S, - C8 const * name, - void const * val); -#endif - -extern S32 AILCALL AIL_API_enumerate_digital_driver_attributes - (HDIGDRIVER dig, - HMSSENUM * next, - RIB_INTERFACE_ENTRY * dest); - -extern void AILCALL AIL_API_digital_driver_attribute (HDIGDRIVER dig, - C8 const * name, - void * val); - -extern S32 AILCALL AIL_API_enumerate_digital_driver_preferences - (HDIGDRIVER dig, - HMSSENUM * next, - RIB_INTERFACE_ENTRY * dest); - -extern void AILCALL AIL_API_set_digital_driver_preference(HDIGDRIVER dig, - C8 const * name, - void const * val); - -extern S32 AILCALL AIL_API_enumerate_sample_attributes - (HSAMPLE S, - HMSSENUM * next, - RIB_INTERFACE_ENTRY * dest); - -extern void AILCALL AIL_API_sample_attribute (HSAMPLE S, - C8 const * name, - void * val); - -extern S32 AILCALL AIL_API_enumerate_sample_preferences - (HSAMPLE S, - HMSSENUM * next, - RIB_INTERFACE_ENTRY * dest); - -extern void AILCALL AIL_API_set_sample_preference (HSAMPLE S, - C8 const * name, - void const * val); - -extern S32 AILCALL AIL_API_digital_CPU_percent(HDIGDRIVER dig); - -extern S32 AILCALL AIL_API_digital_SPU_percent(HDIGDRIVER dig); - -extern S32 AILCALL AIL_API_background_CPU_percent(void); - -extern S32 AILCALL AIL_API_digital_latency(HDIGDRIVER dig); - -extern HSAMPLE AILCALL AIL_API_allocate_sample_handle - (HDIGDRIVER dig); - -extern HSAMPLE AILCALL AIL_API_allocate_bus(HDIGDRIVER dig); -extern HSAMPLE AILCALL AIL_API_bus_sample_handle(HDIGDRIVER dig, S32 bus_index); -extern S32 AILCALL AIL_API_install_bus_compressor(HDIGDRIVER dig, S32 bus_index, SAMPLESTAGE filter_stage, S32 input_bus_index); -DXDEC void AILCALL AIL_free_all_busses(HDIGDRIVER dig); // For miles studio. - -extern HSAMPLE AILCALL AIL_API_allocate_file_sample - (HDIGDRIVER dig, - void const *file_image, - S32 block); - -extern void AILCALL AIL_API_set_speaker_configuration - (HDIGDRIVER dig, - MSSVECTOR3D *array, - S32 n_channels, - F32 falloff_power); - -extern MSSVECTOR3D * - AILCALL AIL_API_speaker_configuration - (HDIGDRIVER dig, - S32 *n_physical_channels, - S32 *n_logical_channels, - F32 *falloff_power, - MSS_MC_SPEC *channel_spec); - -extern void AILCALL AIL_API_set_listener_relative_receiver_array - (HDIGDRIVER dig, - MSS_RECEIVER_LIST *array, - S32 n_receivers); - -extern MSS_RECEIVER_LIST * - AILCALL AIL_API_listener_relative_receiver_array - (HDIGDRIVER dig, - S32 *n_receivers); - -extern void AILCALL AIL_API_set_speaker_reverb_levels - (HDIGDRIVER dig, - F32 *wet_array, - F32 *dry_array, - MSS_SPEAKER const *speaker_index_array, - S32 n_levels); - -extern S32 AILCALL AIL_API_speaker_reverb_levels (HDIGDRIVER dig, - F32 * *wet_array, - F32 * *dry_array, - MSS_SPEAKER const * *speaker_index_array); - -extern void AILCALL AIL_API_release_sample_handle (HSAMPLE S); - -extern S32 AILCALL AIL_API_set_sample_file (HSAMPLE S, - void const *file_image, - S32 block); - -extern S32 AILCALL AIL_API_set_sample_info (HSAMPLE S, - AILSOUNDINFO const * info); - -extern S32 AILCALL AIL_API_set_named_sample_file (HSAMPLE S, - C8 const *file_type_suffix, - void const *file_image, - U32 file_size, - S32 block); - -extern HPROVIDER AILCALL AIL_API_set_sample_processor (HSAMPLE S, - SAMPLESTAGE pipeline_stage, - HPROVIDER provider); - -extern HPROVIDER AILCALL AIL_API_set_digital_driver_processor - (HDIGDRIVER dig, - DIGDRVSTAGE pipeline_stage, - HPROVIDER provider); - -extern HPROVIDER AILCALL AIL_API_sample_processor (HSAMPLE S, - SAMPLESTAGE pipeline_stage); - -extern HPROVIDER AILCALL AIL_API_digital_driver_processor - (HDIGDRIVER dig, - DIGDRVSTAGE pipeline_stage); - -extern void AILCALL AIL_API_set_sample_address (HSAMPLE S, - void const *start, - U32 len); - -extern S32 AILCALL AIL_API_init_sample (HSAMPLE S, - S32 format); - -extern void AILCALL AIL_API_set_sample_adpcm_block_size - (HSAMPLE S, - U32 blocksize); - -extern void AILCALL AIL_API_start_sample (HSAMPLE S); -extern void AILCALL AIL_API_stop_sample (HSAMPLE S); -extern void AILCALL AIL_API_end_fade_sample (HSAMPLE S); -extern void AILCALL AIL_API_resume_sample (HSAMPLE S); -extern void AILCALL AIL_API_end_sample (HSAMPLE S); - -extern void AILCALL AIL_API_sample_group_operation (HDIGDRIVER dig, S32 op, S32 start_id, S32 set_to_id); -extern void AILCALL AIL_API_schedule_start_sample (HSAMPLE S, U64 mix_time_to_start); - -extern void AILCALL AIL_API_push_system_state (HDIGDRIVER dig, U32 flags, S16 crossfade_ms); -extern void AILCALL AIL_API_pop_system_state (HDIGDRIVER dig, S16 crossfade_ms); - -extern void AILCALL AIL_API_set_sample_playback_rate - (HSAMPLE S, - S32 playback_rate); - -extern void AILCALL AIL_API_set_sample_playback_rate_factor - (HSAMPLE S, - F32 playback_rate_factor); - -extern void AILCALL AIL_API_set_sample_playback_delay - (HSAMPLE S, - S32 playback_delay); - -extern void AILCALL AIL_API_set_sample_volume_pan (HSAMPLE S, - F32 volume, - F32 pan); - -extern S32 AILCALL AIL_API_sample_channel_count (HSAMPLE S, U32 *mask); - -extern S32 AILCALL AIL_API_set_sample_is_3D (HSAMPLE S, //) - S32 onoff); - -extern void AILCALL AIL_API_set_sample_speaker_scale_factors (HSAMPLE S, //) - MSS_SPEAKER const * dest_speaker_indexes, - F32 const * levels, - S32 n_levels ); - -extern void AILCALL AIL_API_sample_speaker_scale_factors (HSAMPLE S, //) - MSS_SPEAKER const * dest_speaker_indexes, - F32 * levels, - S32 n_levels ); - -extern void AILCALL AIL_API_set_sample_channel_levels (HSAMPLE S, - MSS_SPEAKER const *source_speaker_indexes, - MSS_SPEAKER const *dest_speaker_indexes, - F32 const *levels, - S32 n_levels); - -extern void AILCALL AIL_API_sample_channel_levels (HSAMPLE S, - MSS_SPEAKER const *source_speaker_indexes, - MSS_SPEAKER const *dest_speaker_indexes, - F32 *levels, - S32 n_levels); - -extern F32 AILCALL AIL_API_sample_output_levels (HSAMPLE S, - MSS_SPEAKER const *source_speaker_indexes, - MSS_SPEAKER const *dest_speaker_indexes, - F32 *levels, - S32 n_levels); - -extern void AILCALL AIL_API_set_sample_51_volume_pan( HSAMPLE S, - F32 volume, - F32 pan, - F32 fb_pan, - F32 center_level, - F32 sub_level ); - -extern void AILCALL AIL_API_sample_51_volume_pan ( HSAMPLE S, - F32* volume, - F32* pan, - F32* fb_pan, - F32* center_level, - F32* sub_level ); - -extern void AILCALL AIL_API_set_sample_51_volume_levels( HSAMPLE S, - F32 f_left_level, - F32 f_right_level, - F32 b_left_level, - F32 b_right_level, - F32 center_level, - F32 sub_level ); - -extern void AILCALL AIL_API_sample_51_volume_levels ( HSAMPLE S, - F32* f_left_level, - F32* f_right_level, - F32* b_left_level, - F32* b_right_level, - F32* center_level, - F32* sub_level ); -extern void AILCALL AIL_API_set_sample_volume_levels(HSAMPLE S, - F32 left_level, - F32 right_level); - -extern void AILCALL AIL_API_set_sample_reverb_levels(HSAMPLE S, - F32 dry_level, - F32 wet_level); - -extern void AILCALL AIL_API_set_sample_low_pass_cut_off( HSAMPLE S, - S32 /*-1 or MSS_SPEAKER*/ input_channel, - F32 cutoff ); - -extern void AILCALL AIL_API_set_sample_loop_count (HSAMPLE S, - S32 loop_count); - -extern void AILCALL AIL_API_set_sample_loop_block (HSAMPLE S, - S32 loop_start_offset, - S32 loop_end_offset); - -extern S32 AILCALL AIL_API_sample_loop_block (HSAMPLE S, - S32 *loop_start_offset, - S32 *loop_end_offset); - -extern U32 AILCALL AIL_API_sample_status (HSAMPLE S); - -extern S32 AILCALL AIL_API_sample_playback_rate (HSAMPLE S); - -extern F32 AILCALL AIL_API_sample_playback_rate_factor (HSAMPLE S); - -extern S32 AILCALL AIL_API_sample_playback_delay (HSAMPLE S); - -extern void AILCALL AIL_API_sample_volume_pan (HSAMPLE S, - F32* volume, - F32* pan); - -extern void AILCALL AIL_API_sample_volume_levels(HSAMPLE S, - F32 * left_level, - F32 * right_level); - -extern void AILCALL AIL_API_sample_reverb_levels(HSAMPLE S, - F32 * dry_level, - F32 * wet_level); - -extern F32 AILCALL AIL_API_sample_low_pass_cut_off(HSAMPLE S, S32 /*-1 or MSS_SPEAKER*/ channel); - -extern S32 AILCALL AIL_API_sample_loop_count (HSAMPLE S); - -extern void AILCALL AIL_API_set_digital_master_volume_level - (HDIGDRIVER dig, - F32 master_volume); - -extern F32 AILCALL AIL_API_digital_master_volume_level (HDIGDRIVER dig); - -extern void AILCALL AIL_API_set_digital_master_volume_levels(HDIGDRIVER dig, - F32 left_level, - F32 right_level); - -extern void AILCALL AIL_API_set_digital_master_reverb_levels(HDIGDRIVER dig, - S32 bus_index, - F32 dry_level, - F32 wet_level); - -extern void AILCALL AIL_API_set_digital_master_room_type(HDIGDRIVER dig, - S32 bus_index, - S32 room_type); - -extern void AILCALL AIL_API_digital_master_reverb_levels(HDIGDRIVER dig, - S32 bus_index, - F32 * dry_level, - F32 * wet_level); - -extern void AILCALL AIL_API_set_digital_master_reverb(HDIGDRIVER dig, - S32 bus_index, - F32 reverb_time, - F32 reverb_predelay, - F32 reverb_damping); - -extern void AILCALL AIL_API_digital_master_reverb(HDIGDRIVER dig, - S32 bus_index, - F32 * reverb_time, - F32 * reverb_predelay, - F32 * reverb_damping); - -extern S32 AILCALL AIL_API_minimum_sample_buffer_size - (HDIGDRIVER dig, - S32 playback_rate, - S32 format); - -extern S32 AILCALL AIL_API_set_sample_buffer_count - (HSAMPLE S, - S32 n_buffers); - -extern S32 AILCALL AIL_API_sample_buffer_count (HSAMPLE S); - -extern S32 AILCALL AIL_API_sample_buffer_available (HSAMPLE S); - -extern S32 AILCALL AIL_API_sample_loaded_len( HSAMPLE S ); - -extern S32 AILCALL AIL_API_load_sample_buffer (HSAMPLE S, - S32 buff_num, - void const *buffer, - U32 len); - -extern S32 AILCALL AIL_API_sample_buffer_info (HSAMPLE S, - S32 buff_num, - U32 *pos, - U32 *len, - S32 *head, - S32 *tail); - -extern U32 AILCALL AIL_API_sample_granularity (HSAMPLE S); - -extern void AILCALL AIL_API_set_sample_position (HSAMPLE S, - U32 pos); - -extern U32 AILCALL AIL_API_sample_position (HSAMPLE S); - -extern AILSAMPLECB AILCALL AIL_API_register_SOB_callback - (HSAMPLE S, - AILSAMPLECB SOB); - -extern AILSAMPLECB AILCALL AIL_API_register_EOB_callback - (HSAMPLE S, - AILSAMPLECB EOB); - -extern AILSAMPLECB AILCALL AIL_API_register_EOS_callback - (HSAMPLE S, - AILSAMPLECB EOS); - -extern AILFALLOFFCB AILCALL AIL_API_register_falloff_function_callback - (HSAMPLE S, - AILFALLOFFCB falloff_cb); - -extern void AILCALL AIL_API_set_sample_user_data (HSAMPLE S, - U32 index, - SINTa value); - -extern SINTa AILCALL AIL_API_sample_user_data (HSAMPLE S, - U32 index); - -extern S32 AILCALL AIL_API_active_sample_count (HDIGDRIVER dig); - -extern void AILCALL AIL_API_digital_configuration (HDIGDRIVER dig, - S32 *rate, - S32 *format, - char *config); - -// -// High-level XMIDI services -// - -#if defined(IS_WINDOWS) - -extern S32 AILCALL AIL_API_midiOutOpen (HMDIDRIVER *drvr, - LPHMIDIOUT *lphMidiOut, - U32 dwDeviceID); - -extern void AILCALL AIL_API_midiOutClose (HMDIDRIVER mdi); - - -extern S32 AILCALL AIL_API_MIDI_handle_release (HMDIDRIVER mdi); - -extern S32 AILCALL AIL_API_MIDI_handle_reacquire (HMDIDRIVER mdi); - -#else - -extern HMDIDRIVER AILCALL AIL_API_open_XMIDI_driver( U32 flags ); - -extern void AILCALL AIL_API_close_XMIDI_driver( HMDIDRIVER mdi ); - -#endif - -extern HSEQUENCE AILCALL AIL_API_allocate_sequence_handle - (HMDIDRIVER mdi); - -extern void AILCALL AIL_API_release_sequence_handle - (HSEQUENCE S); - -extern S32 AILCALL AIL_API_init_sequence (HSEQUENCE S, - void const *start, - S32 sequence_num); - -extern void AILCALL AIL_API_start_sequence (HSEQUENCE S); -extern void AILCALL AIL_API_stop_sequence (HSEQUENCE S); -extern void AILCALL AIL_API_resume_sequence (HSEQUENCE S); -extern void AILCALL AIL_API_end_sequence (HSEQUENCE S); - -extern void AILCALL AIL_API_set_sequence_tempo (HSEQUENCE S, - S32 tempo, - S32 milliseconds); - -extern void AILCALL AIL_API_set_sequence_volume (HSEQUENCE S, - S32 volume, - S32 milliseconds); - -extern void AILCALL AIL_API_set_sequence_loop_count - (HSEQUENCE S, - S32 loop_count); - -extern U32 AILCALL AIL_API_sequence_status (HSEQUENCE S); - -extern S32 AILCALL AIL_API_sequence_tempo (HSEQUENCE S); -extern S32 AILCALL AIL_API_sequence_volume (HSEQUENCE S); -extern S32 AILCALL AIL_API_sequence_loop_count (HSEQUENCE S); - -extern void AILCALL AIL_API_set_XMIDI_master_volume - (HMDIDRIVER mdi, - S32 master_volume); - -extern S32 AILCALL AIL_API_XMIDI_master_volume (HMDIDRIVER mdi); - -// -// Low-level XMIDI services -// - -extern S32 AILCALL AIL_API_active_sequence_count (HMDIDRIVER mdi); - -extern S32 AILCALL AIL_API_controller_value (HSEQUENCE S, - S32 channel, - S32 controller_num); - -extern S32 AILCALL AIL_API_channel_notes (HSEQUENCE S, - S32 channel); - -extern void AILCALL AIL_API_sequence_position (HSEQUENCE S, - S32 *beat, - S32 *measure); - -extern void AILCALL AIL_API_branch_index (HSEQUENCE S, - U32 marker); - -extern AILPREFIXCB AILCALL AIL_API_register_prefix_callback - (HSEQUENCE S, - AILPREFIXCB callback); - -extern AILTRIGGERCB AILCALL AIL_API_register_trigger_callback - (HSEQUENCE S, - AILTRIGGERCB callback); - -extern AILSEQUENCECB AILCALL AIL_API_register_sequence_callback - (HSEQUENCE S, - AILSEQUENCECB callback); - -extern AILEVENTCB AILCALL AIL_API_register_event_callback - (HMDIDRIVER mdi, - AILEVENTCB callback); - -extern AILBEATCB AILCALL AIL_API_register_beat_callback - (HSEQUENCE S, - AILBEATCB callback); - -extern AILTIMBRECB AILCALL AIL_API_register_timbre_callback - (HMDIDRIVER mdi, - AILTIMBRECB callback); - -extern void AILCALL AIL_API_set_sequence_user_data(HSEQUENCE S, - U32 index, - SINTa value); - -extern SINTa AILCALL AIL_API_sequence_user_data (HSEQUENCE S, - U32 index); - -extern void AILCALL AIL_API_register_ICA_array (HSEQUENCE S, - U8 *array); - -extern S32 AILCALL AIL_API_lock_channel (HMDIDRIVER mdi); - -extern void AILCALL AIL_API_release_channel (HMDIDRIVER mdi, - S32 channel); - -extern void AILCALL AIL_API_map_sequence_channel (HSEQUENCE S, - S32 seq_channel, - S32 new_channel); - -extern S32 AILCALL AIL_API_true_sequence_channel (HSEQUENCE S, - S32 seq_channel); - -extern void AILCALL AIL_API_send_channel_voice_message - (HMDIDRIVER mdi, - HSEQUENCE S, - S32 status, - S32 data_1, - S32 data_2); - -extern void AILCALL AIL_API_send_sysex_message (HMDIDRIVER mdi, - void const *buffer); - -extern HWAVESYNTH - AILCALL AIL_API_create_wave_synthesizer (HDIGDRIVER dig, - HMDIDRIVER mdi, - void const *wave_lib, - S32 polyphony); - -extern void AILCALL AIL_API_destroy_wave_synthesizer(HWAVESYNTH W); - -extern S32 AILCALL AIL_API_MIDI_to_XMI (void const* MIDI, - U32 MIDI_size, - void**XMIDI, - U32 * XMIDI_size, - S32 flags); - -#if defined(IS_WIN32) - -extern S32 AILCALL AIL_API_list_MIDI (void const* MIDI, - U32 MIDI_size, - char* *list, - U32 * list_size, - S32 flags); - -extern S32 AILCALL AIL_API_list_DLS (void const* DLS, - char**list, - U32 * list_size, - S32 flags, - C8 * title); - -#endif - -extern char* AILCALL AIL_API_last_error ( void ); - -extern void AILCALL AIL_API_set_error ( char const* error_msg ); - -extern S32 AILCALL AIL_API_file_error (void); - -extern S32 AILCALL AIL_API_file_size (char const *filename, - char const * caller, - U32 caller_line); - -extern void * AILCALL AIL_API_file_read (char const *filename, - void *dest, - char const * caller, - U32 caller_line); - -extern S32 AILCALL AIL_API_file_write (char const *filename, - void const *buf, - U32 len); - -extern S32 AILCALL AIL_API_WAV_file_write (char const *filename, - void const *buf, - U32 len, - S32 rate, - S32 format); - -extern void AILCALL AIL_API_serve (void); - - -#ifdef IS_WINDOWS - -extern HREDBOOK AILCALL AIL_API_redbook_open (U32 which); - -extern HREDBOOK AILCALL AIL_API_redbook_open_drive(S32 drive); - -extern void AILCALL AIL_API_redbook_close (HREDBOOK hand); - -extern void AILCALL AIL_API_redbook_eject (HREDBOOK hand); - -extern void AILCALL AIL_API_redbook_retract (HREDBOOK hand); - -extern U32 AILCALL AIL_API_redbook_status (HREDBOOK hand); - -extern U32 AILCALL AIL_API_redbook_tracks (HREDBOOK hand); - -extern U32 AILCALL AIL_API_redbook_track (HREDBOOK hand); - -extern void AILCALL AIL_API_redbook_track_info (HREDBOOK hand, - U32 tracknum, - U32* startmsec, - U32* endmsec); - -extern U32 AILCALL AIL_API_redbook_id (HREDBOOK hand); - -extern U32 AILCALL AIL_API_redbook_position (HREDBOOK hand); - -extern U32 AILCALL AIL_API_redbook_play (HREDBOOK hand, - U32 startmsec, - U32 endmsec); - -extern U32 AILCALL AIL_API_redbook_stop (HREDBOOK hand); - -extern U32 AILCALL AIL_API_redbook_pause (HREDBOOK hand); - -extern U32 AILCALL AIL_API_redbook_resume (HREDBOOK hand); - -extern F32 AILCALL AIL_API_redbook_volume_level (HREDBOOK hand); - -extern F32 AILCALL AIL_API_redbook_set_volume_level(HREDBOOK hand, - F32 volume); - -#endif - -extern S32 AILCALL AIL_API_quick_startup (S32 use_digital, - S32 use_MIDI, - U32 output_rate, - S32 output_bits, - S32 output_channels); - -extern void AILCALL AIL_API_quick_shutdown (void); - -extern void AILCALL AIL_API_quick_handles (HDIGDRIVER* pdig, - HMDIDRIVER* pmdi, - HDLSDEVICE* pdls); - -extern HAUDIO AILCALL AIL_API_quick_load (char const *filename); - -extern HAUDIO AILCALL AIL_API_quick_load_mem (void const *mem, - U32 size); - -extern HAUDIO AILCALL AIL_API_quick_load_named_mem(void const *mem, - char const *filename, - U32 size); - -extern void AILCALL AIL_API_quick_unload (HAUDIO audio); - -extern S32 AILCALL AIL_API_quick_play (HAUDIO audio, - U32 loop_count); - -extern void AILCALL AIL_API_quick_halt (HAUDIO audio); - -extern S32 AILCALL AIL_API_quick_status (HAUDIO audio); - -extern HAUDIO AILCALL AIL_API_quick_load_and_play (char const *filename, - U32 loop_count, - S32 wait_request); - -extern void AILCALL AIL_API_quick_set_speed (HAUDIO audio, - S32 speed); - -extern void AILCALL AIL_API_quick_set_volume (HAUDIO audio, - F32 volume, - F32 extravol); - -extern void AILCALL AIL_API_quick_set_reverb_levels(HAUDIO audio, - F32 dry_level, - F32 wet_level); - -extern void AILCALL AIL_API_quick_set_low_pass_cut_off(HAUDIO audio, - S32 channel, - F32 cut_off); - -extern HAUDIO AILCALL AIL_API_quick_copy (HAUDIO hand); - -extern void AILCALL AIL_API_quick_set_ms_position (HAUDIO audio, - S32 milliseconds); - -extern S32 AILCALL AIL_API_quick_ms_position (HAUDIO audio); - -extern S32 AILCALL AIL_API_quick_ms_length (HAUDIO audio); - -extern S32 AILCALL AIL_API_quick_type (HAUDIO audio); - -// -// High-level streaming services -// - -void AILSTRM_shutdown(HDIGDRIVER driver); - -extern HSTREAM AILCALL AIL_API_open_stream (HDIGDRIVER dig, - char const* filename, - S32 stream_mem); - -extern void AILCALL AIL_API_close_stream (HSTREAM stream); - -extern S32 AILCALL AIL_API_service_stream (HSTREAM stream, - S32 fillup); - -extern void AILCALL AIL_API_start_stream (HSTREAM stream); - -extern void AILCALL AIL_API_pause_stream (HSTREAM stream, - S32 onoff); - -extern void AILCALL AIL_API_set_stream_loop_block (HSTREAM S, - S32 loop_start_offset, - S32 loop_end_offset); - -extern S32 AILCALL AIL_API_stream_loop_count (HSTREAM stream); - -extern void AILCALL AIL_API_set_stream_loop_count (HSTREAM stream, - S32 count); - -extern S32 AILCALL AIL_API_stream_status (HSTREAM stream); - -extern F32 AILCALL AIL_API_stream_filled_percent (HSTREAM stream); - -extern void AILCALL AIL_API_set_stream_position (HSTREAM stream, - S32 offset); - -extern S32 AILCALL AIL_API_stream_position (HSTREAM stream); - -extern void AILCALL AIL_API_stream_info (HSTREAM stream, - S32* datarate, - S32* sndtype, - S32* length, - S32* memory); - -extern void AILCALL AIL_API_auto_service_stream (HSTREAM stream, - S32 onoff); - -extern AILSTREAMCB AILCALL AIL_API_register_stream_callback - (HSTREAM stream, - AILSTREAMCB callback); - -extern void AILCALL AIL_API_set_stream_user_data (HSTREAM S, - U32 index, - SINTa value); - -extern SINTa AILCALL AIL_API_stream_user_data (HSTREAM S, - U32 index); - -extern S32 AILCALL AIL_API_size_processed_digital_audio( - U32 dest_rate, - U32 dest_format, - S32 num_srcs, - AILMIXINFO const* src); - -extern S32 AILCALL AIL_API_process_digital_audio( - void *dest_buffer, - S32 dest_buffer_size, - U32 dest_rate, - U32 dest_format, - S32 num_srcs, - AILMIXINFO* src); - -extern HDLSDEVICE AILCALL AIL_API_DLS_open (HMDIDRIVER mdi, - HDIGDRIVER dig, -#ifdef IS_STATIC - AILSTATICDLS const* dls, -#else - char const* libname, -#endif - U32 flags, - U32 rate, - S32 bits, - S32 channels); - - -extern void AILCALL AIL_API_DLS_close (HDLSDEVICE dls, - U32 flags); - -extern HDLSFILEID AILCALL AIL_API_DLS_load_file (HDLSDEVICE dls, - char const* filename, - U32 flags); - -extern HDLSFILEID AILCALL AIL_API_DLS_load_memory (HDLSDEVICE dls, - void const* memfile, - U32 flags); - -extern void AILCALL AIL_API_DLS_unload (HDLSDEVICE dls, - HDLSFILEID dlsid); - -extern void AILCALL AIL_API_DLS_compact (HDLSDEVICE dls); - -extern void AILEXPORT AIL_API_DLS_set_reverb_levels(HDLSDEVICE dls, - F32 dry_level, - F32 wet_level); - -extern void AILEXPORT AIL_API_DLS_get_reverb_levels(HDLSDEVICE dls, - F32* dry_level, - F32* wet_level); - -extern void AILCALL AIL_API_DLS_get_info (HDLSDEVICE dls, - AILDLSINFO* info, - S32* PercentCPU); - -extern S32 AILCALL AIL_API_extract_DLS (void const*source_image, //) - U32 source_size, - void * *XMI_output_data, - U32 *XMI_output_size, - void * *DLS_output_data, - U32 *DLS_output_size, - AILLENGTHYCB callback); - -extern void AILCALL AIL_API_set_sequence_ms_position - (HSEQUENCE S, //) - S32 milliseconds); - -extern void AILCALL AIL_API_sequence_ms_position (HSEQUENCE S, //) - S32 *total_milliseconds, - S32 *current_milliseconds); - -extern void AILCALL AIL_API_set_sample_ms_position(HSAMPLE S, //) - S32 milliseconds); - -extern void AILCALL AIL_API_sample_ms_position (HSAMPLE S, //) - S32 *total_milliseconds, - S32 *current_milliseconds); - -extern U32 AILCALL AIL_API_sample_ms_lookup (HSAMPLE S, //) - S32 milliseconds, - S32* actualms); - -extern void AILCALL AIL_API_set_stream_ms_position(HSTREAM S, //) - S32 milliseconds); - -extern void AILCALL AIL_API_stream_ms_position (HSTREAM S, //) - S32 *total_milliseconds, - S32 *current_milliseconds); - -extern S32 AILCALL AIL_API_WAV_info (void const* data, - AILSOUNDINFO* info); - -extern S32 AILCALL AIL_API_compress_ADPCM (AILSOUNDINFO const* info, //) - void** outdata, U32* outsize); - -extern S32 AILCALL AIL_API_decompress_ADPCM (AILSOUNDINFO const* info, - void** outdata, - U32* outsize); - -extern S32 AILCALL AIL_API_file_type (void const* data, - U32 size); - -extern S32 AILCALL AIL_API_file_type_named (void const* data, - char const* filename, - U32 size); - -extern S32 AILCALL AIL_API_find_DLS (void const* data, - U32 size, - void**xmi, - U32* xmisize, - void**dls, - U32* dlssize); - -// -// Internal MSS mixer RIB calls -// - -extern U32 AILCALL MSS_MMX_available (void); - -extern void AILCALL MSS_mixer_startup (void); -extern void AILCALL MSS_mixer_shutdown (void); - -extern void AILCALL MSS_mixer_flush(S32 *dest, - S32 len -#ifdef IS_X86 - ,U32 MMX_available -#endif - ); - -extern void AILCALL MSS_mixer_merge(void const * *src, - U32 *src_fract, - void const *src_end, - S32 * *dest, - void *dest_end, - S32 *left_val, - S32 *right_val, - S32 playback_ratio, - S32 scale_left, - S32 scale_right, - U32 operation -#ifdef IS_X86 - ,U32 MMX_available -#endif - ); - -extern void AILCALL MSS_mixer_copy(void const *src, - S32 src_len, - void *dest, - U32 operation -#ifdef IS_BE - ,S32 big_endian_output -#else -#ifdef IS_X86 - ,U32 MMX_available -#endif -#endif - ); - -extern void AILCALL SS_set_speaker_configuration (D3DSTATE *D3D, - MSSVECTOR3D *speaker_positions, - S32 n_channels, - S32 logical_channels_per_sample); - -extern void SS_calculate_3D_channel_levels(D3DSTATE const *D3D, - S32 logical_channels_per_sample, - S3DSTATE *S3D, - F32 *channel_levels); - -extern void AILCALL SS_update_driver_reverb_state(HDIGDRIVER dig); - -extern void AILCALL SS_update_sample_reverb_state(HSAMPLE S); - -extern void AILCALL SS_flush (HDIGDRIVER dig, S32 reverb_index); - -extern void AILCALL SS_copy (HDIGDRIVER dig, S32 reverb_index, void *lpWaveAddr); - - -extern F32 AILCALLBACK SS_default_falloff_function_callback(HSAMPLE S, //) - F32 distance, - F32 rolloff_factor, - F32 min_dist, - F32 max_dist); -extern S32 AILCALLBACK SS_stream_to_buffer(HSAMPLE S, - S16 *dest_mono_sample_buffer, - S32 dest_buffer_size); - - -#ifdef MILES10 -extern void SS_fill(HDIGDRIVER dig); -#else -extern void SS_fill(HDIGDRIVER dig, void *lpData); -#endif - -extern void AILCALL SS_start_DIG_driver_playback(HSAMPLE S); - -extern S32 AILCALL SS_set_sample_type( HSAMPLE S, S32 format, U32 channel_mask ); - -extern void AILCALL AIL_apply_reverb( HDIGDRIVER dig ); - -extern S32 AILCALL AIL_allocate_reverb_buffers( HDIGDRIVER dig, S32 index ); - -extern void AILCALL AIL_apply_lowpass( void* dest, void const* src, void const* src_end, LOWPASS_INFO* lp_in, S32 op ); - - -#if defined(IS_WIN32) || defined(IS_GENERICDIG) -extern S32 AILCALL get_system_speaker_configuration(MSS_MC_SPEC *channel_spec); -#endif - - -#ifdef IS_BE - - #ifdef IS_PPC - - #ifdef IS_XENON - - #define LE_SWAP32( ptr ) __loadwordbytereverse(0,ptr) - - #define LE_SWAP32_OFS( ptr,ofs ) __loadwordbytereverse(ofs,ptr) - - #define STORE_LE_SWAP32( ptr, val ) __storewordbytereverse ( (U32)(val), 0, ptr ) - - #elif (defined(IS_PS3) && !defined(IS_SPU)) || defined(IS_MAC) - #define LE_SWAP32( ptr ) ld_le32(ptr) - #define LE_SWAP32_OFS( ptr, ofs ) ld_le32_ofs(ptr,ofs) - // the char* is not required, but works around a GCC bug - #define STORE_LE_SWAP32( ptr, val ) st_le32( (char*)(ptr), (U32)(val) ) - #elif defined(IS_WIIU) - - #define LE_SWAP32(ptr) (*(__bytereversed unsigned int *)(ptr)) - #define LE_SWAP32_OFS(ptr, ofs) (*(__bytereversed unsigned int *)AIL_ptr_add(ptr, ofs)) - - #define STORE_LE_SWAP32( ptr, val ) (*(__bytereversed unsigned int *)(ptr) = (val)) - - #define STORE_LE_SWAP16_OFS( ptr, val, const_ofs ) (*(__bytereversed unsigned short*)(AIL_ptr_add(ptr, const_ofs))) = (val) - #else - #define LE_SWAP32( ptr ) __lwbrx((void*)(ptr),0) - #define LE_SWAP32_OFS( ptr,ofs ) __lwbrx((void*)(ptr),ofs) - - #define STORE_LE_SWAP32( ptr, val ) __stwbrx( (U32)(val), ptr, 0 ) - #endif - - #elif defined(IS_SPU) - - static U32 inline LE_SWAP32(void const * src) __attribute__((always_inline)); - static U32 inline LE_SWAP32(void const * src) - { - U32 i = (*((U32*)src)); - vec_uint4 v = spu_promote( i, 0 ); - v = (vec_uint4)spu_shuffle( v, v, ((vec_uchar16){ 3, 2, 1, 0, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15})); - i = spu_extract( v, 0 ); - return i; - } - - static U32 inline LE_SWAP32_OFS(void const * src,S32 ofs) __attribute__((always_inline)); - static U32 inline LE_SWAP32_OFS(void const * src,S32 ofs) - { - U32 i = (*((U32*)(((char*)src)+ofs))); - vec_uint4 v = spu_promote( i, 0 ); - v = (vec_uint4)spu_shuffle( v, v, ((vec_uchar16){ 3, 2, 1, 0, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15})); - i = spu_extract( v, 0 ); - return i; - } - - #define STORE_LE_SWAP32( ptr, val )\ - { \ - U32 tmp = (U32) val; \ - vec_uint4 v = spu_promote( tmp, 0 ); \ - v = (vec_uint4)spu_shuffle( v, v, ((vec_uchar16){ 3, 2, 1, 0, 4, 5, 6, 7, \ - 8, 9, 10, 11, 12, 13, 14, 15})); \ - tmp = spu_extract( v, 0 ); \ - *((U32 *)(((char*)ptr)+0)) = tmp; \ - } - - #define STORE_LE_SWAP32_OFS( ptr, val, ofs )\ - { \ - U32 tmp = (U32) val; \ - vec_uint4 v = spu_promote( tmp, 0 ); \ - v = (vec_uint4)spu_shuffle( v, v, ((vec_uchar16){ 3, 2, 1, 0, 4, 5, 6, 7, \ - 8, 9, 10, 11, 12, 13, 14, 15})); \ - tmp = spu_extract( v, 0 ); \ - *((U32 *)(((char*)ptr)+ofs)) = tmp; \ - } - - #else - - #define LE_SWAP32(ptr) \ - ( ( ( ( *((U32 *)(ptr) ) ) << 24 ) ) | \ - ( ( ( *((U32 *)(ptr) ) ) << 8 ) & 0x00FF0000 ) | \ - ( ( ( *((U32 *)(ptr) ) ) >> 8 ) & 0x0000FF00 ) | \ - ( ( ( *((U32 *)(ptr) ) ) >> 24 ) ) ) - - #define LE_SWAP32_OFS(ptr,ofs) \ - ( ( ( ( *((U32 *)AIL_ptr_add(ptr,ofs) ) ) << 24 ) ) | \ - ( ( ( *((U32 *)AIL_ptr_add(ptr,ofs) ) ) << 8 ) & 0x00FF0000 ) | \ - ( ( ( *((U32 *)AIL_ptr_add(ptr,ofs) ) ) >> 8 ) & 0x0000FF00 ) | \ - ( ( ( *((U32 *)AIL_ptr_add(ptr,ofs) ) ) >> 24 ) ) ) - - #define STORE_LE_SWAP32( ptr, val ) { *((U32 *)ptr) = \ - ( ( ( ( ((U32)(val) ) ) << 24 ) ) | \ - ( ( ( ((U32)(val) ) ) << 8 ) & 0x00FF0000 ) | \ - ( ( ( ((U32)(val) ) ) >> 8 ) & 0x0000FF00 ) | \ - ( ( ( ((U32)(val) ) ) >> 24 ) ) ); } - - #endif - - #if defined( IS_PPC ) - - #ifdef IS_XENON - unsigned short __loadshortbytereverse (int offset, const void * base); - unsigned long __loadwordbytereverse (int offset, const void * base); - - void __storeshortbytereverse (unsigned short val, int offset, void * base); - void __storewordbytereverse (unsigned int val, int offset, void * base); - - #define LE_SWAP16( ptr ) __loadshortbytereverse (0,(S16 *)ptr) - - #define LE_SWAP16_OFS( ptr, const_ofs ) __loadshortbytereverse (const_ofs,(S16 *)ptr) - - #define STORE_LE_SWAP16( ptr, val ) __storeshortbytereverse ( (U16)(val), 0, (S16 *)ptr ) - - #define STORE_LE_SWAP16_OFS( ptr, val, const_ofs ) __storeshortbytereverse ( (U16)(val), const_ofs, (S16 *)ptr ) - #else - - #if (defined(IS_PS3) && !defined(IS_SPU)) || defined(IS_MAC) - - #define __fsel( outf, cmp, inf1, inf2 ) \ - __asm__ __volatile__ ("fsel %0,%1,%2,%3" : "=f" (outf) : "f" (cmp), "f" (inf1), "f" (inf2)); - - static inline float fclip1(float sample ) - { - float ret; - - __fsel( ret, sample + 1.0f, sample, -1.0f ); - __fsel( ret, sample - 1.0f, 1.0f, ret ); - return( ret ); - } - - static __inline__ U16 ld_le16(const S16 *addr) - { - U16 val; - __asm__ __volatile__ ("lhbrx %0,0,%1" : "=r" (val) : "r" (addr)); - return val; - } - - static __inline__ U16 ld_le16_ofs(const S16 *addr, U64 const_ofs ) - { - U16 val; - __asm__ __volatile__ ("lhbrx %0,%1,%2" : "=r" (val) : "b" (const_ofs), "r" (addr)); - return val; - } - - static __inline__ void st_le16(S16 *addr, const U16 val) - { - __asm__ __volatile__ ("sthbrx %1,0,%2" : "=m" (*addr) : "r" (val), "r" (addr)); - } - - static __inline__ void st_le16_ofs(S16 *addr, U64 const_ofs, const U16 val) - { - __asm__ __volatile__ ("sthbrx %2,%1,%3" : "=m" (*addr) : "b" (const_ofs), "r" (val), "r" (addr)); - } - - static __inline__ U32 ld_le32(const void *addr) - { - U32 val; - - __asm__ __volatile__ ("lwbrx %0,0,%1" : "=r" (val) : "r" ((U32*)addr) ); - return val; - } - - static __inline__ U32 ld_le32_ofs(const void *addr, U64 const_ofs ) - { - U32 val; - __asm__ __volatile__ ("lwbrx %0,%1,%2" : "=r" (val) : "b" (const_ofs), "r" (addr)); - return val; - } - -/* static __inline__ void st_le32_ofs(void *addr, U64 const_ofs, const U32 val) - { - __asm__ __volatile__ ("stwbrx %2,%1,%3" : "=m" (*(U32*)addr) : "b" (const_ofs), "r" (val), "r" ((U32*)addr)); - }*/ - - static __inline__ void st_le32(void *addr, const U32 val) - { //todo, weird hacks to make this work with GCC - __asm__ __volatile__ ("stwbrx %1,%3,%2" : "=m" (*(U32*)addr) : "r" (val), "r" ((U32*)addr), "O"(0) ); - } - - #define LE_SWAP16( ptr ) ld_le16 ((S16 *)ptr) - - #define LE_SWAP16_OFS( ptr, const_ofs ) ld_le16_ofs ((S16 *)ptr, const_ofs) - - #define STORE_LE_SWAP16( ptr, val ) st_le16( (S16 *)ptr, (U16)(val) ) - - #define STORE_LE_SWAP16_OFS( ptr, val, const_ofs ) st_le16_ofs( (S16 *)ptr, const_ofs, (U16)(val) ) - #elif defined(IS_WIIU) - - #define LE_SWAP16(ptr) (*(__bytereversed unsigned short *)(ptr)) - #define LE_SWAP16_OFS(ptr, ofs) (*(__bytereversed unsigned short *)AIL_ptr_add(ptr, ofs)) - - #define STORE_LE_SWAP16( ptr, val ) (*(__bytereversed unsigned short *)(ptr) = (val)) - - #else - #define LE_SWAP16( ptr ) __lhbrx((S16 *)ptr,0) - - #define LE_SWAP16_OFS( ptr, const_ofs ) __lhbrx((S16 *)ptr,const_ofs) - - #define STORE_LE_SWAP16( ptr, val ) __sthbrx( (U16)(val), (S16 *)ptr, 0 ) - - #define STORE_LE_SWAP16_OFS( ptr, val, const_ofs ) __sthbrx( (U16)(val), (S16 *)ptr, const_ofs ) - #endif - #endif - - #elif defined( IS_SPU ) - - static U32 inline LE_SWAP16(void const * src) __attribute__((always_inline)); - static U32 inline LE_SWAP16(void const * src) - { - U32 i = (*((U16*)src)); - vec_uint4 v = spu_promote( i, 0 ); - v = (vec_uint4)spu_shuffle( v, v, ((vec_uchar16){ 0, 1, 3, 2, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15})); - i = spu_extract( v, 0 ); - return i; - } - - static U32 inline LE_SWAP16_OFS(void const * src, S32 ofs) __attribute__((always_inline)); - static U32 inline LE_SWAP16_OFS(void const * src, S32 ofs) - { - U32 i = (*((U16*)(((char*)src)+ofs))); - vec_uint4 v = spu_promote( i, 0 ); - v = (vec_uint4)spu_shuffle( v, v, ((vec_uchar16){ 0, 1, 3, 2, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15})); - i = spu_extract( v, 0 ); - return i; - } - - #define STORE_LE_SWAP16( ptr, val )\ - { \ - U32 tmp = (U16) val; \ - vec_uint4 v = spu_promote( tmp, 0 ); \ - v = (vec_uint4)spu_shuffle( v, v, ((vec_uchar16){ 0, 1, 3, 2, 4, 5, 6, 7, \ - 8, 9, 10, 11, 12, 13, 14, 15})); \ - tmp = spu_extract( v, 0 ); \ - *((U16 *)(((char*)ptr)+0)) = tmp; \ - } - - #define STORE_LE_SWAP16_OFS( ptr, val, ofs )\ - { \ - U32 tmp = (U16) val; \ - vec_uint4 v = spu_promote( tmp, 0 ); \ - v = (vec_uint4)spu_shuffle( v, v, ((vec_uchar16){ 0, 1, 3, 2, 4, 5, 6, 7, \ - 8, 9, 10, 11, 12, 13, 14, 15})); \ - tmp = spu_extract( v, 0 ); \ - *((U16 *)(((char*)ptr)+ofs)) = tmp;\ - } - - #else - - #define LE_SWAP16(ptr) \ - ( ( U16 ) \ - ( ( ( ( *((U16 *)(ptr) ) ) << 8 ) ) | \ - ( ( ( *((U16 *)(ptr) ) ) >> 8 ) ) ) \ - ) - - #define LE_SWAP16_OFS(ptr,const_ofs) \ - ( ( U16 ) \ - ( ( ( ( *((U16 *)(AIL_ptr_add(ptr,const_ofs)) ) ) << 8 ) ) | \ - ( ( ( *((U16 *)(AIL_ptr_add(ptr,const_ofs)) ) ) >> 8 ) ) ) \ - ) - - #define STORE_LE_SWAP16( ptr, val ) { *((U16*)ptr) = ( \ - ( ( ( ((U16)(val) ) ) << 8 ) ) | \ - ( ( ( ((U16)(val) ) ) >> 8 ) ) ); } - - #define STORE_LE_SWAP16_OFS( ptr, val, const_ofs ) { *((U16*)AIL_ptr_add(ptr,const_ofs)) = ( \ - ( ( ( ((U16)(val) ) ) << 8 ) ) | \ - ( ( ( ((U16)(val) ) ) >> 8 ) ) ); } - - #endif - - #define BE_SWAP32( ptr ) ( *((U32 *)(ptr) ) ) - #define BE_SWAP16( ptr ) ( *((U16 *)(ptr) ) ) - - #define MEM_LE_SWAP32(n) *((U32*)n) = LE_SWAP32(n); - #define MEM_LE_SWAP16(n) *((U16*)n) = (U16) LE_SWAP16(n); - - #define MEM_BE_SWAP32(n) - #define MEM_BE_SWAP16(n) - - // unaligned versions - #define BEU_SWAP32( ptr ) ( *((U32 *)(ptr) ) ) - #define BEU_SWAP16( ptr ) ( *((U16 *)(ptr) ) ) - - #define LEU_SWAP32(ptr) LE_SWAP32(ptr) - #define LEU_SWAP16(ptr) LE_SWAP16(ptr) - - #define STORE_LEU_SWAP32( ptr, val ) STORE_LE_SWAP32( ptr, val ) - #define STORE_LEU_SWAP16( ptr, val ) STORE_LE_SWAP16( ptr, val ) - - #define MEM_LEU_SWAP32(n) *((U32*)n) = LEU_SWAP32(n); - #define MEM_LEU_SWAP16(n) *((U32*)n) = LEU_SWAP32(n); - -#else // IS_BE - - #define LE_SWAP32( ptr ) ( *((U32 *)(ptr) ) ) - #define LE_SWAP32_OFS( ptr,const_ofs ) ( *((U32 *)AIL_ptr_add(ptr,const_ofs) ) ) - #define LE_SWAP16( ptr ) ( *((U16 *)(ptr) ) ) - - #define LE_SWAP16_OFS( ptr, const_ofs ) ( *((U16 *)(AIL_ptr_add(ptr,const_ofs)) ) ) - - #define STORE_LE_SWAP32( ptr, val ) { *((U32*)(ptr))=(U32)(val); } - #define STORE_LE_SWAP16( ptr, val ) { *((U16*)(ptr))=(U16)(val); } - #define STORE_LE_SWAP16_OFS( ptr, val, const_ofs ) { *((U16*)((((U8*)ptr)+const_ofs)))=(U16)(val); } - - #define BE_SWAP32(ptr) \ - ( ( ( ( *((U32 *)(ptr) ) ) << 24 ) ) | \ - ( ( ( *((U32 *)(ptr) ) ) << 8 ) & 0x00FF0000 ) | \ - ( ( ( *((U32 *)(ptr) ) ) >> 8 ) & 0x0000FF00 ) | \ - ( ( ( *((U32 *)(ptr) ) ) >> 24 ) ) ) - - #define BE_SWAP16(ptr) \ - ( ( U16 ) \ - ( ( ( ( *((U16 *)(ptr) ) ) << 8 ) ) | \ - ( ( ( *((U16 *)(ptr) ) ) >> 8 ) ) ) \ - ) - -#if defined(IS_PSP) - - #define putunaligned4(temp, s ) \ - __asm__("swl %1,3+%0" : "+m"(*(s)): "r"(temp)); \ - __asm__("swr %1,%0" : "+m"(*(s)) : "r"(temp)); - - #define getunaligned4(temp, s ) \ - __asm__("lwl %0,3+%1" : "=r"(temp) : "o"(*(U32*)(s))); \ - __asm__("lwr %0,%1" : "+r"(temp) : "o"(*(U32*)(s)) ); - - static inline U32 LEU_SWAP32( void * ptr ) - { - U32 ret; - getunaligned4( ret, ptr ); - return( ret ); - } - - static inline U32 BEU_SWAP32( void * ptr ) - { - U32 ret; - - getunaligned4( ret, ptr ); - ret = ( ret << 24 ) | ( ( ret << 8 ) & 0x00ff0000 ) | ( ( ret >> 8 ) & 0x0000ff00 ) | ( ret >> 24 ); - return( ret ); - } - - #define LEU_SWAP16(ptr) \ - ( ( U16 ) \ - ( ( ( ( ((U32)(((U8 *)(ptr))[1]) ) ) << 8 ) ) | \ - ( ( ( ((U32)(((U8 *)(ptr))[0]) ) ) ) ) ) \ - ) - #define BEU_SWAP16(ptr) \ - ( ( U16 ) \ - ( ( ( ( ((U32)(((U8 *)(ptr))[0]) ) ) << 8 ) ) | \ - ( ( ( ((U32)(((U8 *)(ptr))[1]) ) ) ) ) ) \ - ) - - #define STORE_LEU_SWAP32( ptr, val ) { register U32 __v = (U32)val; register U32 * __p = (U32*)ptr; putunaligned4( __v, __p ); } - #define STORE_LEU_SWAP16( ptr, val ) { register U16 __v = (U16)val; ((U8*)(ptr))[0]=(U8)val; ((U8*)(ptr))[1]=(U8)(val>>8);} - -#else - - #define LEU_SWAP32(ptr) LE_SWAP32(ptr) - #define LEU_SWAP16(ptr) LE_SWAP16(ptr) - - #define BEU_SWAP32(ptr) BE_SWAP32(ptr) - #define BEU_SWAP16(ptr) BE_SWAP16(ptr) - - #define STORE_LEU_SWAP32( ptr, val ) STORE_LE_SWAP32( ptr, val ) - #define STORE_LEU_SWAP16( ptr, val ) STORE_LE_SWAP16( ptr, val ) - -#endif - - #define MEM_LEU_SWAP32(n) - #define MEM_LEU_SWAP16(n) - - #define MEM_LE_SWAP32(n) - #define MEM_LE_SWAP16(n) - - #define MEM_BE_SWAP32(n) *((U32*)n) = BE_SWAP32(n); - #define MEM_BE_SWAP16(n) *((U16*)n) = BE_SWAP16(n); - -#endif - - - -#if defined(IS_MAC) || defined(IS_WII) || defined(IS_IPHONE) - -#ifdef IS_X86 - -static inline U32 mult64addsubandshift( U32 mt1, U32 mt2, U32 addv, U32 subv, U32 shift ) -{ - U32 retv; - - unsigned long long value; - value = (unsigned long long)mt1 * mt2; - value += addv; - value -= subv; - value = (signed long long )value >> (signed long long )shift; - retv = (U32)value; - - return( retv ); - -} - - -static U32 __inline mult64anddiv(U32 a,U32 b, U32 c) -{ - U32 retv; - unsigned long long value; - value = (unsigned long long)a * b; - value /= c; - retv = (U32)value; - return( retv ); -} - -static U32 __inline shift64addsubanddiv( U32 val, U32 shift,U32 addv, U32 subv, U32 divv) -{ - U32 retv; - unsigned long long value; - value = (unsigned long long)val; - value <<= shift; - value += addv; - value -= subv; - value = (signed long long ) value / (signed long long ) divv; - retv = (U32)value; - return( retv ); -} - -#elif defined(IS_IPHONE) - -#define WRITE_MONO_SAMPLE( dest, fOut ) \ -{ \ - if (fOut > 32767.0F) *dest++ = 32767; \ - else if (fOut < -32768.0F) *dest++ = -32768; \ - else *dest++ = (S16) fOut; \ -} - -static U32 __inline mult64addsubandshift( U32 mt1, U32 mt2, U32 addv, U32 subv, U32 shift ) -{ - U32 retv; - unsigned long long value; - value = (unsigned long long)mt1 * mt2; - value += addv; - value -= subv; - value = (signed long long )value >> (signed long long )shift; - retv = (U32)value; - return( retv ); -} - -static U32 __inline mult64anddiv(U32 a,U32 b, U32 c) -{ - U32 retv; - unsigned long long value; - value = (unsigned long long)a * b; - value /= c; - retv = (U32)value; - return( retv ); -} - -static U32 __inline shift64addsubanddiv( U32 val, U32 shift,U32 addv, U32 subv, U32 divv) -{ - U32 retv; - unsigned long long value; - value = (unsigned long long)val; - value <<= shift; - value += addv; - value -= subv; - value = (signed long long ) value / (signed long long ) divv; - retv = (U32)value; - return( retv ); -} - -#else - -// -// These three dudes help deal with u64s in hi,lo format -// - -#define mul64hilo(_hi,_lo,_mt1,_mt2) \ - __asm \ - { \ - mulhwu _hi, _mt1, _mt2; \ - mullw _lo, _mt1, _mt2 \ - } \ - - -#define imul64hilo(_hi,_lo,_mt1,_mt2) \ - __asm \ - { \ - mulhw _hi, _mt1, _mt2; \ - mullw _lo, _mt1, _mt2 \ - } \ - - -#define add64hilo(_hi,_lo,_hisub,_losub) \ - __asm \ - { \ - addc _lo, _losub, _lo; \ - adde _hi, _hisub, _hi \ - } \ - - -#define sub64hilo(_hi,_lo,_hisub,_losub) \ - __asm \ - { \ - subfc _lo, _losub, _lo; \ - subfe _hi, _hisub, _hi \ - } \ - -#define carry_check( q, r, c, d ) \ - if ( r < c ) \ - { \ - --q; \ - r += d; \ - if ( r >= d ) \ - { \ - if ( r < c ) \ - { \ - --q; \ - r += d; \ - } \ - } \ - } - -// The PPC mac doesnt' have intrinsics like CW -#ifdef IS_MAC -static U32 __cntlzw(U32 in) -{ - U32 ret; - asm ("cntlzw %0, %1\n": "=r" (ret): "r" (in)); - return ret; -} -#endif - -static inline U32 div64with16( U32 nlo, U32 nhi, U32 d ) -{ - U32 dlo, dhi; - U32 rlo, rhi; - U32 qhi, qlo; - U32 carry; - - dhi = d >> 16; - dlo = d & 0xffff; - - qhi = nhi / dhi; - rhi = nhi % dhi; - - carry = qhi * dlo; - - rhi = ( rhi << 16 ) | ( nlo >> 16 ); - - carry_check( qhi, rhi, carry, d ); - rhi -= carry; - - qlo = rhi / dhi; - rlo = rhi % dhi; - carry = qlo * dlo; - - qhi <<= 16; - - rlo = ( rlo << 16 ) | ( nlo & 0xffff ); - carry_check( qlo, rlo, carry, d ); - -// rlo -= carry; - - return( qhi | qlo ); -} - -static U32 inline mult64anddiv( register U32 a, register U32 b,U32 d ) -{ -/* register U32 hi, lo; - register U32 mt1, mt2, d; - - mt1=m1; - mt2=m2; - d=dv; - - mul64hilo( hi, lo, mt1, mt2 ); - - return( div64(hi,lo,d) ); -*/ - U32 lz; - register U32 nhi=0, nlo=0; - - mul64hilo( nhi, nlo, a, b ); - - if ( ( d & ( d - 1 ) ) == 0 ) - { - lz = (U32) __cntlzw( d ); - - // Shift for powers of 2. - return( ( nhi << ( lz + 1 ) ) | ( nlo >> ( 31 - lz ) ) ); - } - - if ( nhi == 0 ) - { - return( nlo / d ); - } - - lz = (U32) __cntlzw( d ); - - d <<= lz; - nhi = ( nhi << lz ) + ( nlo >> ( 32 - lz ) ); - nlo <<= lz; - - return( div64with16( nlo, nhi, d ) ); - -} - -static U32 inline mult64andshift( U32 m1,U32 m2,U32 shift ) -{ - register U32 hi, lo; - register U32 mt1, mt2; - - mt1=m1; - mt2=m2; - - mul64hilo( hi, lo, mt1, mt2 ); - - return( ( hi << (32 - shift ) ) + ( lo >> shift ) ); -} - -static U32 inline mult64addsubandshift( U32 m1, U32 m2, U32 av, U32 sv, U32 shift ) -{ - register U32 hi=0, lo=0; - register U32 mt1, mt2; - register U32 addv; - register U32 subv; - register U32 zero = 0; - - mt1=m1; - mt2=m2; - addv=av; - subv=sv; - - mul64hilo(hi,lo,mt1,mt2); - add64hilo( hi, lo, zero, addv ); - sub64hilo( hi, lo, zero, subv ); - - return( ( hi << (32 - shift ) ) + ( lo >> shift ) ); -} - -static U32 __inline shift64addsubanddiv( U32 val, U32 shift,U32 av, U32 sv, U32 divv) -{ - register U32 hi, lo; - register U32 addv; - register U32 subv; - register U32 d; - register U32 zero = 0; - U32 lz; - - addv=av; - subv=sv; - d=divv; - - hi = val >> ( 32 - shift ); - lo = val << shift; - add64hilo( hi, lo, zero, addv ); - sub64hilo( hi, lo, zero, subv ); - - if ( hi & 0x80000000 ) - { - register U32 ihi = hi; - register U32 ilo = lo; - hi = lo = 0; - sub64hilo( hi, lo, ihi, ilo ); - - if ( ( d & ( d - 1 ) ) == 0 ) - { - lz = (U32) __cntlzw( d ); - - // Shift for powers of 2. - return( (U32) -(S32) ( ( hi << ( lz + 1 ) ) | ( lo >> ( 31 - lz ) ) ) ); - } - - if ( hi == 0 ) - { - return( (U32) -(S32) ( lo / d ) ); - } - - return( (U32) -(S32) div64with16( lo,hi,d ) ); - } - - if ( ( d & ( d - 1 ) ) == 0 ) - { - lz = (U32) __cntlzw( d ); - - // Shift for powers of 2. - return( ( hi << ( lz + 1 ) ) | ( lo >> ( 31 - lz ) ) ); - } - - if ( hi == 0 ) - { - return( lo / d ); - } - - return( div64with16( lo,hi,d ) ); -} - -#define WRITE_MONO_SAMPLE( dest, fOut ) \ -{ \ - if (fOut > 32767.0F) STORE_LE_SWAP16( dest, 32767 ); \ - else if (fOut < -32768.0F) STORE_LE_SWAP16( dest, -32768 ); \ - else STORE_LE_SWAP16( dest, (S16) fOut ); \ - ++dest; \ -} - -#endif - -#else - -#if ( defined(IS_X86) && defined(IS_WIN32API) ) || defined(IS_LINUX) || defined(__RADSEKRIT2__) - -// -// Macros to aid in writing to build buffers -// - -#define WRITE_MONO_SAMPLE( dest, fOut ) \ -{ \ - if (fOut > 32767.0F) *dest++ = 32767; \ - else if (fOut < -32768.0F) *dest++ = -32768; \ - else *dest++ = (S16) fOut; \ -} - -static U32 __inline mult64addsubandshift( U32 mt1, U32 mt2, U32 addv, U32 subv, U32 shift ) -{ - U32 retv; - -#ifdef __GNUC__ - unsigned long long value; - value = (unsigned long long)mt1 * mt2; - value += addv; - value -= subv; - value = (signed long long )value >> (signed long long )shift; - retv = (U32)value; -#else -#ifdef IS_WIN64 - U64 value; - value = (U64) mt1 * mt2; - value += addv; - value -= subv; - value = (S64) value >> (S64) shift; - retv = (U32) value; -#else - __asm - { - mov eax,[mt1] - mov ecx,[mt2] - mul ecx - add eax,[addv] - adc edx,0 - sub eax,[subv] - sbb edx,0 - mov ecx,[shift] - shrd eax,edx,cl - mov [retv], eax - } -#endif -#endif - return( retv ); -} - -static U32 __inline mult64anddiv(U32 a,U32 b, U32 c) -{ - U32 retv; - -#ifdef __GNUC__ - unsigned long long value; - value = (unsigned long long)a * b; - value /= c; - retv = (U32)value; -#else -#ifdef IS_WIN64 - U64 value; - value = (U64) a * b; - value /= c; - retv = (U32) value; -#else - __asm - { - mov eax,[a] - mov ecx,[b] - mul ecx - mov ecx,[c] - div ecx - mov [retv], eax - } -#endif -#endif - return( retv ); -} - -static U32 __inline shift64addsubanddiv( U32 val, U32 shift,U32 addv, U32 subv, U32 divv) -{ - U32 retv; -#ifdef __GNUC__ - unsigned long long value; - value = (unsigned long long)val; - value <<= shift; - value += addv; - value -= subv; - value = (signed long long ) value / (signed long long ) divv; - retv = (U32)value; -#else -#ifdef IS_WIN64 - U64 value; - value = (U64) val; - value <<= shift; - value += addv; - value -= subv; - value = (S64) value / (S64) divv; - retv = (U32) value; -#else - __asm - { - xor edx, edx - mov eax, [val] - mov ecx, [shift] - shld edx, eax, cl - shl eax, cl - add eax, [addv] - adc edx, 0 - sub eax, [subv] - sbb edx, 0 - mov ecx, [divv] - idiv ecx - mov [retv], eax - } -#endif -#endif - return( retv ); -} - -#else - -#ifdef __WATCOMC__ - -#else - -#if defined( IS_XENON ) - -#define toU64(v) ((U64)((U32)(v))) -#define toS64(v) ((S64)((S32)(v))) - -#define mult64anddiv(mt1,mt2,d) ((U32)((toU64(mt1)*toU64(mt2))/toU64(d))) - -#define mult64addsubandshift(mt1,mt2,addv,subv,d) ((U32)((((S64)((toU64(mt1)*toU64(mt2))+toU64(addv)))-toS64(subv))>>toS64(d))) - -#define shift64addsubanddiv(val,shift,addv,subv,divv) ((U32)(((S64)((toU64(val)<<toU64(shift))+toU64(addv)-toU64(subv)))/toS64(divv))) - -#define WRITE_MONO_SAMPLE( dest, fOut ) \ -{ \ - if (fOut > 32767.0F) STORE_LE_SWAP16( dest, 32767 ); \ - else if (fOut < -32768.0F) STORE_LE_SWAP16( dest, -32768 ); \ - else STORE_LE_SWAP16( dest, (S16) fOut ); \ - ++dest; \ -} - - -#else - -#if defined( IS_PSP ) || defined(IS_3DS) || defined(IS_PSP2) || defined(__RADANDROID__) - - -#define toU64(v) ((U64)((U32)(v))) -#define toS64(v) ((S64)((S32)(v))) - -#define mult64anddiv(mt1,mt2,d) ((U32)((toU64(mt1)*toU64(mt2))/toU64(d))) - -#define mult64addsubandshift(mt1,mt2,addv,subv,d) ((U32)((((S64)((toU64(mt1)*toU64(mt2))+toU64(addv)))-toS64(subv))>>toS64(d))) - -#define shift64addsubanddiv(val,shift,addv,subv,divv) ((U32)(((S64)((toU64(val)<<toU64(shift))+toU64(addv)-toU64(subv)))/toS64(divv))) - -#define WRITE_MONO_SAMPLE( dest, fOut ) \ -{ \ - if (fOut > 32767.0F) *dest++ = 32767; \ - else if (fOut < -32768.0F) *dest++ = -32768; \ - else *dest++ = (S16) fOut; \ -} - -#elif defined(IS_WIIU) - -#define toU64(v) ((U64)((U32)(v))) -#define toS64(v) ((S64)((S32)(v))) - -#define mult64anddiv(mt1,mt2,d) ((U32)((toU64(mt1)*toU64(mt2))/toU64(d))) - -#define mult64addsubandshift(mt1,mt2,addv,subv,d) ((U32)((((S64)((toU64(mt1)*toU64(mt2))+toU64(addv)))-toS64(subv))>>toS64(d))) - -#define shift64addsubanddiv(val,shift,addv,subv,divv) ((U32)(((S64)((toU64(val)<<toU64(shift))+toU64(addv)-toU64(subv)))/toS64(divv))) - -#define WRITE_MONO_SAMPLE( dest, fOut ) \ -{ \ - if (fOut > 32767.0F) STORE_LE_SWAP16( dest, 32767 ); \ - else if (fOut < -32768.0F) STORE_LE_SWAP16( dest, -32768 ); \ - else STORE_LE_SWAP16( dest, (S16) fOut ); \ - ++dest; \ -} - - - -#elif defined( IS_PS3 ) && !defined( IS_SPU ) - -#define toU64(v) ((U64)((U32)(v))) -#define toS64(v) ((S64)((S32)(v))) - -#define mult64anddiv(mt1,mt2,d) ((U32)((toU64(mt1)*toU64(mt2))/toU64(d))) - -#define mult64addsubandshift(mt1,mt2,addv,subv,d) ((U32)((((S64)((toU64(mt1)*toU64(mt2))+toU64(addv)))-toS64(subv))>>toS64(d))) - -#define shift64addsubanddiv(val,shift,addv,subv,divv) ((U32)(((S64)((toU64(val)<<toU64(shift))+toU64(addv)-toU64(subv)))/toS64(divv))) - -static inline float fclip32K(float sample ) -{ - float ret; - - __fsel( ret, sample + 32767.0f, sample, -32767.0f ); - __fsel( ret, sample - 32767.0f, 32767.0f, ret ); - return( ret ); -} - -#define WRITE_MONO_SAMPLE( dest, fOut ) \ -{ \ - STORE_LE_SWAP16( dest, (S16) fclip32K(fOut) ); \ - ++dest; \ -} - -#else - -U32 mult64addsubandshift(U32 mt1,U32 mt2,U32 addv, U32 subv, U32 shift); -U32 shift64addsubanddiv(U32 val,U32 shift,U32 addv, U32 subv, U32 divv); - -#if defined( IS_SPU ) - -#define WRITE_MONO_SAMPLE( dest, fOut ) \ -{ \ - if (fOut > 32767.0F) *dest = (S16)(U16)0xff7f; \ - else if (fOut < -32768.0F) *dest = (S16)(U16)0x0080; \ - else STORE_LE_SWAP16( dest, (S16) fOut ) \ - ++dest; \ -} - -#define toU64(v) ((U64)((U32)(v))) -#define toS64(v) ((S64)((S32)(v))) - -#define mult64anddiv(mt1,mt2,d) ((U32)((toU64(mt1)*toU64(mt2))/toU64(d))) - -#define mult64addsubandshift(mt1,mt2,addv,subv,d) ((U32)((((S64)((toU64(mt1)*toU64(mt2))+toU64(addv)))-toS64(subv))>>toS64(d))) - -#define shift64addsubanddiv(val,shift,addv,subv,divv) ((U32)(((S64)((toU64(val)<<toU64(shift))+toU64(addv)-toU64(subv)))/toS64(divv))) - -#endif - -#endif - -#endif - - -#endif - -#endif - -#endif - -#ifdef MSS_SPU_PROCESS - -#define SPU_NAME( flt, name ) extern "C" void AILCALL flt##_##name - -//#define DEBUGSPUMEM -#ifdef DEBUGSPUMEM - - void * spu_alloc( U32 bytes ); - - #ifdef __cplusplus - - extern "C" U32 num_mals; - extern "C" void free_mals( int level ); - - class stackmark - { - public: - int level; - stackmark() - { - level = num_mals; - } - ~stackmark() - { - free_mals( level ); - } - }; - #define addstackmark() stackmark sm; - #else - #define addstackmark() - #endif - -#else - - #define addstackmark() - - #ifdef IS_SPU - #include <alloca.h> - - static int stacksizehas( int v ) - { - vector signed int val; - __asm__("or %0,$1,$1" : "=r"(val) ); - - if ( val[1] < ( v + 2048 ) ) { MSSBreakPoint(); } - return v; - } - #define spu_alloc(bytes) (void*)alloca( stacksizehas( ( ( bytes ) + 15 ) & ~15 ) ) - #else - #include <malloc.h> - #define spu_alloc(bytes) (void*)alloca( ( ( bytes ) + 15 ) & ~15 ) - #endif - -#endif - -#else - -#define SPU_NAME( flt, name ) static void AILCALL name -#define addstackmark() - -#endif - -// -// low-level utility memory file routines -// - -typedef struct _MEMDUMP -{ - void* buffer[1024]; // up to 64 MB - U8* current; - U32 size; - U32 totalsize; - U32 curbufnum; - U32 lastbufnum; - U32 curpos; - S32 error; - S32 expandable; - U32 eachbuf; - U32 firstbuf; -} MEMDUMP; - -// This typedef occurs in mss.h as well. -//typedef struct _MEMDUMP* HMEMDUMP; - -DXDEC HMEMDUMP AILCALL AIL_mem_open(void* addr,U32 size); - -DXDEC HMEMDUMP AILCALL AIL_mem_create(void); -DXDEC HMEMDUMP AILCALL AIL_mem_create_from_existing(void* addr, U32 size); // do not delete pointer passed in - -DXDEC S32 AILCALL AIL_mem_close(HMEMDUMP m, void** buf, U32* size); - -DXDEC U32 -#if defined(IS_WIN32API) -__cdecl -#endif -AIL_mem_printf(HMEMDUMP m, char const* fmt, ...); - -DXDEC U32 AILCALL AIL_mem_printc(HMEMDUMP m, char c); - -DXDEC U32 AILCALL AIL_mem_prints(HMEMDUMP m, char const* s); - -DXDEC U32 AILCALL AIL_mem_write(HMEMDUMP m, void const* s, U32 bytes); - -DXDEC U32 AILCALL AIL_mem_read(HMEMDUMP m, void* s, U32 bytes); - -DXDEC U32 AILCALL AIL_mem_seek(HMEMDUMP m, U32 pos); - -DXDEC U32 AILCALL AIL_mem_size(HMEMDUMP m); - -DXDEC U32 AILCALL AIL_mem_pos(HMEMDUMP m); - -DXDEC S32 AILCALL AIL_mem_error(HMEMDUMP m); - - - -#define DIG_PROCESS_BUFFER_SIZE 2048 - -extern U8 *ASI_mem_src_ptr; -extern S32 ASI_mem_src_len; -extern S32 ASI_mem_src_pos; - - -extern S32 AILCALLBACK ASI_mem_stream_CB(UINTa user, //) - void *dest, - S32 bytes_requested, - S32 offset); - -#if 1 - -#if 0 //used to be a IS_LINUX - -#else - -DXDEC S32 AILCALL AIL_stricmp(const char *s1, const char *s2); -DXDEC S32 AILCALL AIL_strnicmp( const char *s1, const char *s2, U32 maxlen); - -#if defined(IS_MAC) || defined(IS_LINUX) || defined(IS_3DS) || defined(IS_IPHONE) || defined(IS_PSP2) || defined(IS_WIIU) || defined(__RADSEKRIT2__) || defined(__RADANDROID__) - -#ifdef IS_PSP2 -#ifdef __cplusplus -} -#endif -#endif - -#include <string.h> -#include <stdlib.h> // for abs(). - -#ifdef IS_PSP2 -#ifdef __cplusplus -extern "C" { -#endif -#endif - - -#define AIL_memcpy memcpy -#define AIL_memmove memmove -#define AIL_strcpy strcpy -#define AIL_strcmp strcmp -#define AIL_strlen strlen -#define AIL_strcat strcat -#define AIL_memset memset -#define AIL_ptr_add(ptr,off) ((void*)(((U8*)(ptr))+(off))) -#define AIL_ptr_dif(p1,p2) ((SINTa)((SINTa) p1) - ((SINTa) p2)) -#define AIL_ptr_alloc_clone(x) ((void*)x) -#define AIL_ptr_free_clone(x) - -#ifdef __cplusplus -} - template <typename T> inline T AILptradd( T ptr, U32 off ) { return( T(AIL_ptr_add( ptr, off )) ); } - #define AIL_ptr_inc_clone(x,y) x=AILptradd(x,y) -extern "C" { -#endif - -#define AIL_ptr_fixup_clone(x) -#define AIL_ptr_lt(x,y) (((UINTa)x) < ((UINTa)y)) -#define AIL_ptr_ge(x,y) (((UINTa)x) >= ((UINTa)y)) -#define AIL_ptr_eq(x,y) (((UINTa)x) == ((UINTa)y)) -#define AIL_ptr_ne(x,y) (((UINTa)x) != ((UINTa)y)) -#define AIL_ptr_lin_addr(x) ((UINTa)(x)) - -#define AIL_abs abs -#define AIL_memcmp memcmp - -#else // not mac or linux - -#ifdef IS_WIN32API - -#define AIL_abs abs - -#ifdef IS_XENON - -typedef void *PVOID; -typedef int INT; -typedef unsigned long ULONG_PTR; -typedef ULONG_PTR SIZE_T; - -PVOID -__stdcall -XMemSet( - PVOID pDest, - INT c, - SIZE_T count - ); - -PVOID -__stdcall -XMemCpy( - PVOID pDest, - const void* pSrc, - SIZE_T count - ); - -char * __cdecl strcpy( char *_Dest, const char * _Source); - -#define AIL_memcpy XMemCpy -#define AIL_memset XMemSet - -#else - -#if defined(_WIN32) || defined(_WIN64) || defined(WIN32) || defined(__NT__) || defined(__WIN32__) - #include <string.h> - void * __cdecl memcpy(void *, const void *, size_t); - void * __cdecl memset(void *, int, size_t); - char * __cdecl strcpy(char *, const char *); -#endif - -#define AIL_memcpy memcpy -#define AIL_memset memset - -#endif - -#if defined(IS_XENON) -#include <string.h> -#endif - -#define AIL_memmove memmove - -#define AIL_memcmp memcmp - -#define AIL_strcpy strcpy - -#define AIL_strcmp strcmp - -#define AIL_strlen strlen - -#define AIL_strcat strcat - -#define AIL_ptr_add(ptr,off) ((void*)(((U8*)(ptr))+(off))) - -#define AIL_ptr_dif(p1,p2) ((SINTa)((SINTa) p1) - ((SINTa) p2)) - -#define AIL_ptr_alloc_clone(x) ((void*)x) - -#define AIL_ptr_free_clone(x) - -#ifdef __cplusplus -} - template <typename T> inline T AILptradd( T ptr, U32 off ) { return( T(AIL_ptr_add( ptr, off )) ); } - #define AIL_ptr_inc_clone(x,y) x=AILptradd(x,y) -extern "C" { -#endif - -#define AIL_ptr_fixup_clone(x) - -#define AIL_ptr_lt(x,y) (((UINTa)x) < ((UINTa)y)) - -#define AIL_ptr_ge(x,y) (((UINTa)x) >= ((UINTa)y)) - -#define AIL_ptr_eq(x,y) (((UINTa)x) == ((UINTa)y)) - -#define AIL_ptr_ne(x,y) (((UINTa)x) != ((UINTa)y)) - -#define AIL_ptr_lin_addr(x) ((UINTa)(x)) - -#else - -#if defined(IS_PSP) - -#define AIL_memmove memmove - -#define AIL_memcpy memcpy - -#define AIL_memset memset - -#define AIL_memcmp memcmp - -#define AIL_strcpy strcpy - -#define AIL_strcmp strcmp - -#define AIL_stricmp strcasecmp - -#define AIL_strnicmp strncasecmp - -#define AIL_strlen strlen - -#define AIL_strcat strcat - -#define AIL_ptr_add(ptr,off) ((void*)(((U8*)(ptr))+(off))) - -#define AIL_ptr_dif(p1,p2) ((SINTa)((SINTa) p1) - ((SINTa) p2)) - -#define AIL_ptr_alloc_clone(x) ((void*)x) - -#define AIL_ptr_free_clone(x) - -#ifdef __cplusplus -} - template <typename T> inline T AILptradd( T ptr, U32 off ) { return( T(AIL_ptr_add( ptr, off )) ); } - #define AIL_ptr_inc_clone(x,y) x=AILptradd(x,y) -extern "C" { -#endif - -#define AIL_ptr_fixup_clone(x) - -#define AIL_ptr_lt(x,y) (((UINTa)x) < ((UINTa)y)) - -#define AIL_ptr_ge(x,y) (((UINTa)x) >= ((UINTa)y)) - -#define AIL_ptr_eq(x,y) (((UINTa)x) == ((UINTa)y)) - -#define AIL_ptr_ne(x,y) (((UINTa)x) != ((UINTa)y)) - -#define AIL_ptr_lin_addr(x) ((UINTa)(x)) - -static inline S32 AIL_abs(S32 v) { return( ( v >=0 ) ? v : -v ); } - - -#elif defined(IS_PS3) - -#define AIL_memmove memmove - -#define AIL_memcpy memcpy - -#define AIL_memset memset - -#define AIL_memcmp memcmp - -#define AIL_strcpy strcpy - -#define AIL_strcmp strcmp - -#define AIL_stricmp strcasecmp_ascii - -#define AIL_strnicmp strncasecmp_ascii - -#define AIL_strlen strlen - -#define AIL_strcat strcat - -#define AIL_ptr_add(ptr,off) ((void*)(((U8*)(ptr))+(off))) - -#define AIL_ptr_dif(p1,p2) ((SINTa)((SINTa) p1) - ((SINTa) p2)) - -#define AIL_ptr_alloc_clone(x) ((void*)x) - -#define AIL_ptr_free_clone(x) - -#ifdef __cplusplus -} - template <typename T> inline T AILptradd( T ptr, U32 off ) { return( T(AIL_ptr_add( ptr, off )) ); } - #define AIL_ptr_inc_clone(x,y) x=AILptradd(x,y) -extern "C" { -#endif - -#define AIL_ptr_fixup_clone(x) - -#define AIL_ptr_lt(x,y) (((UINTa)x) < ((UINTa)y)) - -#define AIL_ptr_ge(x,y) (((UINTa)x) >= ((UINTa)y)) - -#define AIL_ptr_eq(x,y) (((UINTa)x) == ((UINTa)y)) - -#define AIL_ptr_ne(x,y) (((UINTa)x) != ((UINTa)y)) - -#define AIL_ptr_lin_addr(x) ((UINTa)(x)) - -static inline S32 AIL_abs(S32 v) { return( ( v >=0 ) ? v : -v ); } - -#else - -#ifdef IS_WII - -#define AIL_memcpy memcpy - -#define AIL_memmove memmove - -#define AIL_strcpy strcpy - -#define AIL_strcmp strcmp - -#define AIL_strlen strlen - -#define AIL_strcat strcat - -#define AIL_memset memset - -#define AIL_ptr_add(ptr,off) ((void*)(((U8*)(ptr))+(off))) - -#define AIL_ptr_dif(p1,p2) ((SINTa)((SINTa) p1) - ((SINTa) p2)) - -#define AIL_ptr_alloc_clone(x) ((void*)x) - -#define AIL_ptr_free_clone(x) - -#ifdef __cplusplus -} - template <typename T> inline T AILptradd( T ptr, U32 off ) { return( T(AIL_ptr_add( ptr, off )) ); } - #define AIL_ptr_inc_clone(x,y) x=AILptradd(x,y) -extern "C" { -#endif - -#define AIL_ptr_fixup_clone(x) - -#define AIL_ptr_lt(x,y) (((UINTa)x) < ((UINTa)y)) - -#define AIL_ptr_ge(x,y) (((UINTa)x) >= ((UINTa)y)) - -#define AIL_ptr_eq(x,y) (((UINTa)x) == ((UINTa)y)) - -#define AIL_ptr_ne(x,y) (((UINTa)x) != ((UINTa)y)) - -#define AIL_ptr_lin_addr(x) ((UINTa)(x)) - -#ifndef __cplusplus -int abs( int ); -#endif - -#define AIL_abs abs -#define AIL_memcmp memcmp - -#endif - -#endif - -#endif - -#endif - -#endif - -#endif - -#ifndef AIL_ptr_inc_clone -#define AIL_ptr_inc_clone(x,y) AIL_ptr_inc_clone_ref((void * *)(void*) &(x),y) -#endif -#define AIL_ptr_from_clone(clone,hptr) (AIL_ptr_add(hptr,AIL_ptr_dif(clone,hptr))) - - -#ifdef IS_32 - -#define MSS_do_cb1(type,addr,ds,param1) \ - (addr)(param1) - -#define MSS_do_cb3(type,addr,ds,param1,param2,param3) \ - (addr)(param1,param2,param3) - -#define MSS_do_cb4(type,addr,ds,param1,param2,param3,param4) \ - (addr)(param1,param2,param3,param4) - -#define MSS_do_cb1_with_ret(ret,type,addr,ds,param1) \ - ret = (addr)(param1) - -#define MSS_do_cb3_with_ret(ret,type,addr,ds,param1,param2,param3) \ - ret = (addr)(param1,param2,param3) - -#define MSS_do_cb4_with_ret(ret,type,addr,ds,param1,param2,param3,param4) \ - ret = (addr)(param1,param2,param3,param4) - -#define MSS_do_cb5_with_ret(ret,type,addr,ds,param1,param2,param3,param4,param5) \ - ret = (addr)(param1,param2,param3,param4,param5) - -#endif - -#if (defined(IS_MAC) && defined( IS_X86 )) || defined(IS_LINUX) - - -#define MSS_CB_STACK_ALIGN( name ) \ -void MSS_CALLBACK_ALIGNED_NAME(name)(void)\ -{\ - asm (\ - "mov $16,%%eax\n" \ - "sub $64,%%esp\n" \ - "add %%esp, %%eax\n" \ - "and $0xfffffff0,%%eax\n" \ - "movups 8(%%ebp), %%xmm0\n" \ - "movaps %%xmm0, (%%eax)\n" \ - "movl %%esp, 32(%%eax)\n" \ - "mov %%eax,%%esp\n" \ - "call *%0\n" \ - "movl 32(%%esp), %%esp\n" \ - "add $64,%%esp\n" \ - : : "r" (name) : "eax"); \ -} - -#define MSS_DEF_CB_STACK_ALIGN( name ) DXDEF MSS_CB_STACK_ALIGN( name ) -#define MSS_CB_STACK_ALIGN_DEC( name ) void MSS_CALLBACK_ALIGNED_NAME(name)(void); - -#else - -#define MSS_CB_STACK_ALIGN( name ) -#define MSS_DEF_CB_STACK_ALIGN( name ) -#define MSS_CB_STACK_ALIGN_DEC( name ) - -#endif - -#ifdef IS_XENON - -#define XWAVE_FORMAT_XMA 0x0165 - -typedef MSS_STRUCT XXMASTREAMFORMAT -{ - U32 PsuedoBytesPerSec; // Used by encoder - U32 SampleRate; // Sample rate for the stream. - U32 LoopStart; // Loop start offset (in bits). - U32 LoopEnd; // Loop end offset (in bits). - - // Format for SubframeData: eeee ssss. - // e: Subframe number of loop end point [0,3]. - // s: Number of subframes to skip before decoding and outputting at the loop start point [1,4]. - - U8 SubframeData; // Data for decoding subframes. See above. - U8 Channels; // Number of channels in the stream (1 or 2). - U16 ChannelMask; // Channel assignments for the channels in the stream (same as - // lower 16 bits of dwChannelMask in WAVEFORMATEXTENSIBLE). -} XXMASTREAMFORMAT; - -typedef MSS_STRUCT XXMAWAVEFORMAT -{ - U16 FormatTag; // Audio format type (always WAVE_FORMAT_XMA). - U16 BitsPerSample; // Bit depth (currently required to be 16). - U16 EncodeOptions; // Options for XMA encoder/decoder. - U16 LargestSkip; // Largest skip used in interleaving streams. - U16 NumStreams; // Number of interleaved audio streams. - U8 LoopCount; // Number of loop repetitions (255 == infinite). - U8 Version; // Version of the encoder that generated this. - XXMASTREAMFORMAT XmaStreams[1]; // Format info for each stream (can grow based on wNumStreams). -} XXMAWAVEFORMAT; - -#endif - -extern U32 SS_granularity(HSAMPLE S); - -extern S32 MC_open_output_filter(C8 const *name, //) - HDIGDRIVER driver, - S32 is_matrix_filter); - -extern void AILCALL MSS_mixer_mc_copy ( MSS_BB * build, - S32 n_build_buffers, - void * lpWaveAddr, - S32 hw_format, -#ifdef IS_X86 - S32 use_MMX, -#endif - S32 samples_per_buffer, - S32 physical_channels_per_sample ); - -extern void AILCALL MSS_mixer_adpcm_decode( void * dest, - void const * in, - S32 out_len, - S32 in_len, - S32 input_format, - ADPCMDATA *adpcm_data ); -// -// Prototypes for ADPCM decode routines -// - -extern void ASMLINK DecodeADPCM_STEREO( ASMPARM void *out, - ASMPARM void const *in, - ASMPARM S32 out_len, - ASMPARM S32 in_len, - ASMPARM ADPCMDATA *adpcm_data); - -extern void ASMLINK DecodeADPCM_MONO( ASMPARM void *out, - ASMPARM void const *in, - ASMPARM S32 out_len, - ASMPARM S32 in_len, - ASMPARM ADPCMDATA *adpcm_data); - -extern void ASMLINK DecodeADPCM_MONO_8( ASMPARM void *out, - ASMPARM void const *in, - ASMPARM S32 out_len, - ASMPARM S32 in_len, - ASMPARM ADPCMDATA *adpcm_data); - - -// -// .VOC file header -// - -typedef MSS_STRUCT -{ - S8 ID_string[20]; - - U16 data_offset; - U16 version; - U16 ID_code; -} -VOC; - -typedef MSS_STRUCT _ADPCMOUT { - U32 riffmark; - U32 rifflen; - U32 wavemark; - U32 fmtmark; - U32 fmtlen; - U16 fmttag; - U16 channels; - U32 sampersec; - U32 avepersec; - U16 blockalign; - U16 bitspersam; - S16 extra; - S16 samples_per_block; - U32 factmark; - U32 factlen; - U32 samples; - U32 datamark; - U32 datalen; -} ADPCMOUT; - -typedef MSS_STRUCT _WAVEOUT { - U32 riffmark; - U32 rifflen; - U32 wavemark; - U32 fmtmark; - U32 fmtlen; - U16 fmttag; - U16 channels; - U32 sampersec; - U32 avepersec; - U16 blockalign; - U16 bitspersam; - U32 datamark; - U32 datalen; -} WAVEOUT; - -typedef MSS_STRUCT _WAVEOUTEXT { - U32 riffmark; - U32 rifflen; - U32 wavemark; - U32 fmtmark; - U32 fmtlen; - U16 fmttag; - U16 channels; - U32 sampersec; - U32 avepersec; - U16 blockalign; - U16 bitspersam; - U16 size; - U16 sampbits; - U32 chanmask; - U8 subfmt[16]; - U32 datamark; - U32 datalen; -} WAVEOUTEXT; - -F32 evaluate_graph(MSSGRAPHPOINT const* graph, S32 cnt, F32 x); - -// -// platform allocators -// - -void * AILCALLBACK platform_alloc(UINTa size); -void AILCALLBACK platform_free( void * ptr ); - - -// -// Abstracted IO structures. -// - -#ifdef IS_WII -#define MAX_PLATFILE_SPECIFIC_SIZE 512 -#else -#define MAX_PLATFILE_SPECIFIC_SIZE 32 -#endif -typedef struct PLATFORM_FILE -{ - char plat_specific[MAX_PLATFILE_SPECIFIC_SIZE]; // needs to be at the front for wii - U32 offset; // current offset in to our "file" - U32 start_pos; // offset of our "file" from the start of the physical file. - U32 file_length; // length of our "file" - S32 dont_close; // nonzero if we don't own the file handle, so when done, don't close. - U32 raw_length; // length of the entire file that we might be "inside of" -} PLATFORM_FILE; - -typedef struct FNVALUES -{ - char const * filename; - U32 size; - U32 start; -} FNVALUES; - -typedef struct FHVALUES -{ - S32 hand; - S32 length; - S32 pos; -} FHVALUES; - -// -// Functions implemented per platform. -// -extern int Platform_OpenFile(struct PLATFORM_FILE* i_File, char const * fn); -extern void Platform_SeekFromBeginning(PLATFORM_FILE* i_File, S32 i_Offset); -extern U32 Platform_ReadFile(PLATFORM_FILE* i_File, void* o_Buffer, U32 i_ReadBytes); -extern void Platform_CloseFile(PLATFORM_FILE* i_File); - -DXDEC void AILCALL AIL_set_event_settings(void* i_Settings); - -// Auditioner Declarations -//----------------------------------------------------------------------------- -S32 Audition_Status(); -S32 Audition_Pump(); -void* Audition_OpenBank(char const* i_FileName); -S32 Audition_OpenComplete(void* i_Bank); -void Audition_CloseBank(void* i_Bank); - -void Audition_Suppress(S32 i_IsSuppressed); -void Audition_FrameStart(); -void Audition_FrameEnd(); -void Audition_DefragStart(); -void Audition_SetBlend(U64 i_EventId, char const* i_Name); -void Audition_SetPersist(U64 i_EventId, char const* i_Name, char const* i_Preset); -void Audition_Event(char const* i_EventName, U64 i_EventId, U64 i_Filter, S32 i_Exists, void* i_InitBlock, S32 i_InitBlockLen); -void Audition_Sound(U64 i_EventId, U64 i_SoundId, char const* i_Sound, char const* i_Label, float i_Volume, S32 i_Delay, float i_Pitch); -void Audition_SoundComplete(U64 i_SoundId); -void Audition_SoundPlaying(U64 i_SoundId); -void Audition_SoundFlags(U64 i_SoundId, S32 i_Flags); -void Audition_SoundLimited(U64 i_SoundId, char const* i_Label); -void Audition_SoundEvicted(U64 i_SoundId, U64 i_ForSound, S32 i_Reason); -void Audition_Control(U64 i_EventId, char const* i_Labels, U8 i_ControlType, U64 i_Filter); -void Audition_SoundBus(U64 i_SoundId, U8 i_BusIndex); - -void Audition_Error(U64 i_Id, char const* i_Details); - -void Audition_AsyncQueued(U64 i_RelevantId, S32 i_AsyncId, char const* i_Asset); -void Audition_AsyncLoad(S32 i_AsyncId, S32 i_ExpectedData); -void Audition_AsyncError(S32 i_AsyncId); -void Audition_AsyncComplete(S32 i_AsyncId, S32 i_DataLoaded); -void Audition_AsyncCancel(S32 i_AsyncId); -void Audition_ListenerPosition(float x, float y, float z); -void Audition_SoundPosition(U64 i_Sound, float x, float y, float z); -void Audition_SendCPU(HDIGDRIVER i_Driver); -void Audition_UpdateDataCount(S32 i_CurrentDataLoaded); -void Audition_SendCount(S32 i_SoundCount); -void Audition_HandleSystemLoad(S32 i_Avail, S32 i_Total); -void Audition_VarState(char const* i_Var, U64 i_SoundId, S32 i_Int, void* i_4ByteValue); -void Audition_RampState(char const* i_Ramp, U64 i_SoundId, S32 i_Type, float i_Current); -void Audition_SoundState(U64 i_SoundId, float i_FinalVol, float i_3DVol, float i_BlendVol, float i_BlendPitch, float i_RampVol, float i_RampWet, float i_RampLp, float i_RampRate); -void Audition_ClearState(); -void Audition_CompletionEvent(U64 i_CompletionEventId, U64 i_ParentSoundId); -void Audition_AddRamp(U64 i_ParentSoundId, S32 i_Type, char const* i_Name, char const* i_LabelQuery, U64 i_EventId); - -#if defined(IS_WIN32API) || defined(IS_WII) - #pragma pack(pop) -#endif -#ifdef __cplusplus -} -#endif - -#endif - |
