--- BasiliskII/src/AmigaOS/audio_amiga.cpp 1999/11/01 16:24:09 1.5 +++ BasiliskII/src/AmigaOS/audio_amiga.cpp 2001/07/05 20:30:50 1.9 @@ -1,7 +1,7 @@ /* * audio_amiga.cpp - Audio support, AmigaOS implementation using AHI * - * Basilisk II (C) 1997-1999 Christian Bauer + * Basilisk II (C) 1997-2001 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -37,15 +37,6 @@ #include "debug.h" -// Supported sample rates, sizes and channels -int audio_num_sample_rates = 1; -uint32 audio_sample_rates[] = {22050 << 16}; -int audio_num_sample_sizes = 1; -uint16 audio_sample_sizes[] = {16}; -int audio_num_channel_counts = 1; -uint16 audio_channel_counts[] = {2}; - - // Global variables static ULONG ahi_id = AHI_DEFAULT_ID; // AHI audio ID static struct AHIAudioCtrl *ahi_ctrl = NULL; @@ -64,14 +55,23 @@ static __saveds __attribute__((regparm(3 * Initialization */ +// Set AudioStatus to reflect current audio stream format +static void set_audio_status_format(void) +{ + AudioStatus.sample_rate = audio_sample_rates[0]; + AudioStatus.sample_size = audio_sample_sizes[0]; + AudioStatus.channels = audio_channel_counts[0]; +} + void AudioInit(void) { sample[0].ahisi_Address = sample[1].ahisi_Address = NULL; // Init audio status and feature flags - AudioStatus.sample_rate = audio_sample_rates[0]; - AudioStatus.sample_size = audio_sample_sizes[0]; - AudioStatus.channels = audio_channel_counts[0]; + audio_sample_rates.push_back(22050 << 16); + audio_sample_sizes.push_back(16); + audio_channel_counts.push_back(2); + set_audio_status_format(); AudioStatus.mixer = 0; AudioStatus.num_sources = 0; audio_component_flags = cmpWantsRegisterMessage | kStereoOut | k16BitOut; @@ -192,7 +192,7 @@ static __saveds __attribute__((regparm(3 // Put data into AHI buffer (convert 8-bit data unsigned->signed) if (AudioStatus.sample_size == 16) - memcpy(sample[play_buf].ahisi_Address, Mac2HostAddr(ReadMacInt32(apple_stream_info + scd_buffer)), work_size); + Mac2Host_memcpy(sample[play_buf].ahisi_Address, ReadMacInt32(apple_stream_info + scd_buffer), work_size); else { uint32 *p = (uint32 *)Mac2HostAddr(ReadMacInt32(apple_stream_info + scd_buffer)); uint32 *q = (uint32 *)sample[play_buf].ahisi_Address; @@ -250,16 +250,19 @@ void AudioInterrupt(void) * It is guaranteed that AudioStatus.num_sources == 0 */ -void audio_set_sample_rate(int index) +bool audio_set_sample_rate(int index) { + return true; } -void audio_set_sample_size(int index) +bool audio_set_sample_size(int index) { + return true; } -void audio_set_channels(int index) +bool audio_set_channels(int index) { + return true; }