|
|
1.1 ! root 1: // ======================================================================= ! 2: // Sound client does nothing but walk a circular sound buffer ! 3: // ======================================================================= ! 4: ! 5: //#include <fcntl.h> ! 6: #include <sys/types.h> ! 7: //#include <sys/ioctl.h> ! 8: #include <stdio.h> ! 9: #include <audio.h> ! 10: ! 11: #include "quakedef.h" ! 12: ! 13: extern int samplewidth; ! 14: extern int numfragments; ! 15: extern int fragmentsize; ! 16: ! 17: extern dma_t *shm; ! 18: ! 19: void I_Error(char *, ...); ! 20: void I_Warn(char *, ...); ! 21: int log2(int); ! 22: ! 23: // ======================================================================= ! 24: // System-specific data ! 25: // ======================================================================= ! 26: ! 27: static ALconfig al_config; ! 28: static ALport al_outport; ! 29: ! 30: // ======================================================================= ! 31: // Initializes DMA-like sound device ! 32: // ======================================================================= ! 33: ! 34: void I_InitDMASound(void) ! 35: { ! 36: ! 37: long paramset[2]; ! 38: ! 39: // open & setup audio device ! 40: ! 41: ALseterrorhandler(0); // turn off audio library error handler ! 42: al_config = ALnewconfig(); ! 43: ! 44: ALsetchannels(al_config, AL_STEREO); ! 45: ALsetsampfmt(al_config, AL_SAMPFMT_TWOSCOMP); ! 46: ALsetwidth(al_config, samplewidth); ! 47: ALsetqueuesize(al_config, fragmentsize * 2); ! 48: ! 49: al_outport = ALopenport("iddigout2", "w", al_config); ! 50: ! 51: if (!al_outport) ! 52: I_Error("Could not open audio port"); ! 53: ! 54: paramset[0] = AL_OUTPUT_RATE; ! 55: paramset[1] = shm->speed; ! 56: ALsetparams(AL_DEFAULT_DEVICE, paramset, 2); ! 57: ! 58: } ! 59: ! 60: // ======================================================================= ! 61: // Submits data to DMA-like sound device ! 62: // ======================================================================= ! 63: ! 64: void I_SubmitDMABuffer(void *buffer, int size) ! 65: { ! 66: ALwritesamps(al_outport, buffer, size); ! 67: } ! 68: ! 69: // ======================================================================= ! 70: // Shuts down DMA-like sound device ! 71: // ======================================================================= ! 72: ! 73: void I_ShutdownDMASound(void) ! 74: { ! 75: ALfreeconfig(al_config); ! 76: ALcloseport(al_outport); ! 77: } ! 78:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.