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

1.1.1.2 ! root        1:  /*
1.1       root        2:   * UAE - The Un*x Amiga Emulator
1.1.1.2 ! root        3:   *
1.1       root        4:   * Support for Amiga audio.device sound
1.1.1.2 ! root        5:   *
1.1       root        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 {
1.1.1.2 ! root       67:        static char IOSent = 0;
1.1       root       68: 
                     69:        AudioMap.bam_Sample                   = (SBYTE *)buffers[bufidx];
                     70: 
                     71:        AudioIO->aio_Command                  = CMD_WRITE;
                     72:        AudioIO->aio_Flags                    = IOREQF_Quick;
1.1.1.2 ! root       73:        AudioIO->aio_U.aio_Map.amio_Volume    = 0xFFFF;
1.1       root       74:        AudioIO->aio_U.aio_Map.amio_Cycles    = 1;
1.1.1.2 ! root       75:        AudioIO->aio_U.aio_Map.amio_Frequency = currprefs.sound_freq;
1.1       root       76:        AudioIO->aio_U.aio_Map.amio_Length    = sndbufsize;
                     77: 
1.1.1.2 ! root       78:        if(IOSent) pOS_WaitIO((void*)AudioIO); else IOSent=1;
1.1       root       79:        pOS_BeginIO((void*)AudioIO);
                     80: 
1.1.1.2 ! root       81:        /* double buffering */
        !            82:        bufidx = 1 - bufidx;
        !            83:        sndbuffer = sndbufpt = (uae_u16*)buffers[bufidx];
1.1       root       84:     }
                     85: }
                     86: 
                     87: static __inline__ void check_sound_buffers (void)
                     88: {
                     89:     if ((char *)sndbufpt - (char *)sndbuffer >= sndbufsize) {
1.1.1.2 ! root       90:        flush_sound_buffer();
1.1       root       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.