|
|
1.1 root 1: /*
2: * UAE - The Un*x Amiga Emulator
3: *
4: * Support for the AF sound system
5: *
6: * Copyright 1996 Marcus Sundberg
7: */
8:
9: #include "sysconfig.h"
10: #include "sysdeps.h"
11:
12: #include "config.h"
13: #include "options.h"
14: #include "memory.h"
15: #include "custom.h"
16: #include "audio.h"
17: #include "gensound.h"
18: #include "sounddep/sound.h"
19: #include "events.h"
20:
21: AFAudioConn *aud;
22: AC ac;
23: long aftime;
24: int rate;
25: uae_u16 sndbuffer[44100];
26: uae_u16 *sndbufpt;
27: int sndbufsize;
28:
29: static int have_sound;
30:
31: void close_sound(void)
32: {
33: }
34:
35: int init_sound (void)
36: {
37: AFSetACAttributes attributes;
38: AFDeviceDescriptor *aDev;
39: int device;
40:
41: aud = AFOpenAudioConn(NULL);
42: have_sound = !(aud == NULL);
43: if (!have_sound) {
44: return 0;
45: }
46:
47: for(device = 0; device < ANumberOfAudioDevices(aud); device++) {
48: aDev = AAudioDeviceDescriptor(aud, device);
49: rate = aDev->playSampleFreq;
50: sndbufsize = (rate / 8) * 4;
51: if(aDev->inputsFromPhone == 0
52: && aDev->outputsToPhone == 0
53: && aDev->playNchannels == 1)
54: break;
55: }
56: if (device == ANumberOfAudioDevices(aud)) {
57: return 0;
58: }
59:
60: attributes.type = LIN16;
61: ac = AFCreateAC(aud, device, ACEncodingType, &attributes);
62: aftime = AFGetTime(ac);
63:
64: init_sound_table16 ();
65: eventtab[ev_sample].handler = sample16_handler;
66: sample_evtime = (long)maxhpos * maxvpos * 50 / rate;
67:
68: sndbufpt = sndbuffer;
69: sound_available = 1;
70: printf ("Sound driver found and configured for %d bits at %d Hz, buffer is %d bytes\n", 16, rate, sndbufsize);
71: return 1;
72: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.