|
|
1.1.1.5 ! root 1: /* 1.1 root 2: * UAE - The Un*x Amiga Emulator 1.1.1.5 ! root 3: * 1.1 root 4: * Support for Solaris sound 1.1.1.5 ! root 5: * 1.1 root 6: * Copyright 1996, 1997 Manfred Thole 7: */ 8: 9: #include "sysconfig.h" 10: #include "sysdeps.h" 11: 12: #include "config.h" 13: #include "options.h" 14: #include "memory.h" 1.1.1.3 root 15: #include "events.h" 1.1 root 16: #include "custom.h" 17: #include "audio.h" 18: #include "gensound.h" 19: #include "sounddep/sound.h" 20: 21: #if !defined HAVE_SYS_AUDIOIO_H 22: 23: /* SunOS 4.1.x */ 24: #include <sys/ioctl.h> 25: #include <sun/audioio.h> 26: #ifndef AUDIO_ENCODING_LINEAR 27: #define AUDIO_ENCODING_LINEAR (3) 28: #endif 29: 30: #else 31: 32: /* SunOS 5.x/NetBSD */ 33: #include <sys/audioio.h> 34: #ifdef HAVE_SYS_IOCTL_H 35: #include <sys/ioctl.h> 36: #endif 37: #endif 38: 39: int sndbufsize; 40: int sound_fd; 41: static int have_sound; 42: uae_u16 sndbuffer[44100]; 43: uae_u16 *sndbufpt; 44: 45: void close_sound(void) 46: { 47: if (have_sound) 48: close(sound_fd); 49: } 50: 51: int setup_sound(void) 52: { 53: sound_fd = open ("/dev/audio", O_WRONLY); 54: have_sound = !(sound_fd < 0); 55: if (!have_sound) 56: return 0; 57: 58: sound_available = 1; 59: return 1; 60: } 61: 62: int init_sound (void) 63: { 64: int rate, dspbits; 65: 66: struct audio_info sfd_info; 67: 68: if (currprefs.sound_maxbsiz < 128 || currprefs.sound_maxbsiz > 44100) { 69: fprintf(stderr, "Sound buffer size %d out of range.\n", currprefs.sound_maxbsiz); 70: currprefs.sound_maxbsiz = 8192; 71: } 72: 73: rate = currprefs.sound_freq; 74: dspbits = currprefs.sound_bits; 75: AUDIO_INITINFO(&sfd_info); 76: sfd_info.play.sample_rate = rate; 77: sfd_info.play.channels = 1; 78: sfd_info.play.precision = dspbits; 79: sfd_info.play.encoding = (dspbits == 8 ) ? AUDIO_ENCODING_ULAW : AUDIO_ENCODING_LINEAR; 80: if (ioctl(sound_fd, AUDIO_SETINFO, &sfd_info)) { 81: fprintf(stderr, "Can't use sample rate %d with %d bits, %s!\n", rate, dspbits, (dspbits ==8) ? "ulaw" : "linear"); 82: return 0; 83: } 1.1.1.4 root 84: scaled_sample_evtime = (unsigned long)MAXHPOS_PAL * MAXVPOS_PAL * VBLANK_HZ_PAL * CYCLE_UNIT / rate; 1.1.1.3 root 85: scaled_sample_evtime_ok = 1; 1.1 root 86: 87: init_sound_table16 (); 88: 1.1.1.2 root 89: if (dspbits == 8) 90: sample_handler = sample_ulaw_handler; 91: else 92: sample_handler = sample16_handler; 1.1 root 93: 94: sndbufpt = sndbuffer; 95: sound_available = 1; 96: sndbufsize = currprefs.sound_maxbsiz; 97: printf ("Sound driver found and configured for %d bits, %s at %d Hz, buffer is %d bytes\n", dspbits, (dspbits ==8) ? "ulaw" : "linear", rate, sndbufsize); 98: return 1; 99: } 100:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.