Annotation of uae/src/od-pOS/sound.h, revision 1.1

1.1     ! root        1:  /* 
        !             2:   * UAE - The Un*x Amiga Emulator
        !             3:   * 
        !             4:   * Support for Amiga audio.device sound
        !             5:   * 
        !             6:   * Copyright 1996, 1997 Samuel Devulder
        !             7:   */
        !             8: 
        !             9: struct pOS_Locale;
        !            10: struct pOS_Library;
        !            11: struct pOS_ExecBase;
        !            12: struct pOS_DosBase;
        !            13: struct pOS_Method;
        !            14: struct pOS_Resource;
        !            15: struct pOS_RawDoFmtData;
        !            16: struct pOS_AsciiDoFmtData;
        !            17: struct pOS_AsciiFmtData;
        !            18: struct pOS_ClassGrp;
        !            19: struct pOS_DosDevPathInfo;
        !            20: struct pOS_ShellScript;
        !            21: struct pOS_SegmentInfo;
        !            22: struct IClass;
        !            23: struct Isrvstr;
        !            24: struct TagItem;
        !            25: struct MemHeader;
        !            26: struct SemaphoreMessage;
        !            27: struct StackSwapStruct;
        !            28: struct Interrupt;
        !            29: struct StandardPacket;
        !            30: struct InfoData;
        !            31: struct WBStartup;
        !            32: 
        !            33: #define _SIZE_T /* to avoid interference with <sys/types.h> */
        !            34: #include <pExec/Types.h>
        !            35: #include <pDOS/ArgTags.h>
        !            36: #include <pDOS/DosSig.h>
        !            37: #include <pDOS/DosErrors.h>
        !            38: #include <pAudio/Audio.h>
        !            39: #include <pAudio/AudioTags.h>
        !            40: #include <pAudio/InfoData.h>
        !            41: #include <pAudio/StdAMap.h>
        !            42: #include <pAudio/AudioLib.h>
        !            43: 
        !            44: #include <pInline/pExec2.h>
        !            45: 
        !            46: extern struct pOS_ExecBase        *gb_ExecBase;
        !            47: extern struct pOS_ExecLibFunction *gb_ExecLib;
        !            48: extern struct pOS_DosBase         *gb_DosBase;
        !            49: 
        !            50: extern struct pOS_AudioIO     *AudioIO;
        !            51: extern struct pOS_Std8AudioMap AudioMap;
        !            52: 
        !            53: extern unsigned char *buffers[2];
        !            54: extern uae_u16 *sndbuffer, *sndbufpt;
        !            55: extern int bufidx, devopen;
        !            56: extern int sndbufsize;
        !            57: 
        !            58: extern int have_sound;
        !            59: 
        !            60: extern FILE *AUDIO_FILE;
        !            61: 
        !            62: static __inline__ void flush_sound_buffer(void)
        !            63: {
        !            64:     if(AUDIO_FILE) {
        !            65:        fwrite(buffers[bufidx], sndbufsize, 1, AUDIO_FILE);
        !            66:     } else {
        !            67:         static char IOSent = 0;
        !            68: 
        !            69:        AudioMap.bam_Sample                   = (SBYTE *)buffers[bufidx];
        !            70: 
        !            71:        AudioIO->aio_Command                  = CMD_WRITE;
        !            72:        AudioIO->aio_Flags                    = IOREQF_Quick;
        !            73:        AudioIO->aio_U.aio_Map.amio_Volume    = 0xFFFF; 
        !            74:        AudioIO->aio_U.aio_Map.amio_Cycles    = 1;
        !            75:        AudioIO->aio_U.aio_Map.amio_Frequency = currprefs.sound_freq;  
        !            76:        AudioIO->aio_U.aio_Map.amio_Length    = sndbufsize;
        !            77: 
        !            78:         if(IOSent) pOS_WaitIO((void*)AudioIO); else IOSent=1;
        !            79:        pOS_BeginIO((void*)AudioIO);
        !            80: 
        !            81:         /* double buffering */
        !            82:         bufidx = 1 - bufidx;
        !            83:         sndbuffer = sndbufpt = (uae_u16*)buffers[bufidx];
        !            84:     }
        !            85: }
        !            86: 
        !            87: static __inline__ void check_sound_buffers (void)
        !            88: {
        !            89:     if ((char *)sndbufpt - (char *)sndbuffer >= sndbufsize) {
        !            90:         flush_sound_buffer();
        !            91:     }
        !            92: }
        !            93: 
        !            94: #define PUT_SOUND_BYTE(b) do { *(uae_u8 *)sndbufpt = b; sndbufpt = (uae_u16 *)(((uae_u8 *)sndbufpt) + 1); } while (0)
        !            95: #define PUT_SOUND_WORD(b) do { *(uae_u16 *)sndbufpt = b; sndbufpt = (uae_u16 *)(((uae_u8 *)sndbufpt) + 2); } while (0)
        !            96: #define SOUND16_BASE_VAL 0
        !            97: #define SOUND8_BASE_VAL 0
        !            98: 
        !            99: #define DEFAULT_SOUND_MAXB 8192
        !           100: #define DEFAULT_SOUND_MINB 8192
        !           101: #define DEFAULT_SOUND_BITS 8
        !           102: #define DEFAULT_SOUND_FREQ 11025
        !           103: 
        !           104: #define UNSUPPORTED_OPTION_b
        !           105: 
        !           106: #undef DONT_WANT_SOUND

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.