ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Unix/Solaris/audio_solaris.cpp
(Generate patch)

Comparing BasiliskII/src/Unix/Solaris/audio_solaris.cpp (file contents):
Revision 1.2 by cebix, 1999-10-20T15:13:58Z vs.
Revision 1.6 by cebix, 2001-07-05T20:30:53Z

# Line 3 | Line 3
3   *
4   *  Adapted from Frodo's Solaris sound routines by Marc Chabanas
5   *
6 < *  Basilisk II (C) 1997-1999 Christian Bauer
6 > *  Basilisk II (C) 1997-2001 Christian Bauer
7   *
8   *  This program is free software; you can redistribute it and/or modify
9   *  it under the terms of the GNU General Public License as published by
# Line 40 | Line 40
40   #include "debug.h"
41  
42  
43 // Supported sample rates, sizes and channels
44 int audio_num_sample_rates = 1;
45 uint32 audio_sample_rates[] = {44100 << 16};
46 int audio_num_sample_sizes = 1;
47 uint16 audio_sample_sizes[] = {16};
48 int audio_num_channel_counts = 1;
49 uint16 audio_channel_counts[] = {2};
50
43   // Global variables
44   static int fd = -1;                                                     // fd of /dev/audio
45   static sem_t audio_irq_done_sem;                        // Signal from interrupt to streaming thread: data block read
# Line 64 | Line 56 | static void *stream_func(void *arg);
56   *  Initialization
57   */
58  
59 + // Set AudioStatus to reflect current audio stream format
60 + static void set_audio_status_format(void)
61 + {
62 +        AudioStatus.sample_rate = audio_sample_rates[0];
63 +        AudioStatus.sample_size = audio_sample_sizes[0];
64 +        AudioStatus.channels = audio_channel_counts[0];
65 + }
66 +
67   void AudioInit(void)
68   {
69          char str[256];
70  
71          // Init audio status and feature flags
72 <        AudioStatus.sample_rate = audio_sample_rates[0];
73 <        AudioStatus.sample_size = audio_sample_sizes[0];
74 <        AudioStatus.channels = audio_channel_counts[0];
72 >        audio_sample_rates.push_back(44100 << 16);
73 >        audio_sample_sizes.push_back(16);
74 >        audio_channel_counts.push_back(2);
75 >        set_audio_status_format();
76          AudioStatus.mixer = 0;
77          AudioStatus.num_sources = 0;
78          audio_component_flags = cmpWantsRegisterMessage | kStereoOut | k16BitOut;
# Line 210 | Line 211 | static void *stream_func(void *arg)
211                                          write(fd, Mac2HostAddr(ReadMacInt32(apple_stream_info + scd_buffer)), sound_buffer_size);
212                                  else {
213                                          // Last buffer
214 <                                        memcpy(last_buffer, Mac2HostAddr(ReadMacInt32(apple_stream_info + scd_buffer)), work_size);
214 >                                        Mac2Host_memcpy(last_buffer, ReadMacInt32(apple_stream_info + scd_buffer), work_size);
215                                          memset((uint8 *)last_buffer + work_size, 0, sound_buffer_size - work_size);
216                                          write(fd, last_buffer, sound_buffer_size);
217                                  }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines