⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tl_sound.c

📁 gameboy 模拟器的源代码
💻 C
字号:
/*** thinlib (c) 2001 Matthew Conte (matt@conte.com)****** tl_sound.c**** sound driver**** $Id: $*/#include "tl_types.h"#include "tl_sound.h"#include "tl_sb.h"#include "tl_log.h"typedef struct snddriver_s{   const char *name;   int  (*init)(int *sample_rate, int *frag_size, int *format);   void (*shutdown)(void);   int  (*start)(audio_callback_t callback, void *user_data);   void (*stop)(void);   void (*setrate)(int sample_rate);   audio_callback_t callback;   void *user_data;} snddriver_t;static snddriver_t sb ={   "Sound Blaster",   thin_sb_init,   thin_sb_shutdown,   thin_sb_start,   thin_sb_stop,   thin_sb_setrate,   NULL,   NULL};static snddriver_t *driver_list[] ={   &sb,   NULL};static snddriver_t snddriver;int thin_sound_init(thinsound_t *sound_params){   snddriver_t **iter;   int sample_rate, frag_size, format;   THIN_ASSERT(sound_params);      sample_rate = sound_params->sample_rate;   frag_size = sound_params->frag_size;   format = sound_params->format;   for (iter = driver_list; *iter != NULL; iter++)   {      if (0 == (*iter)->init(&sample_rate, &frag_size, &format))      {         snddriver = **iter;         /* copy the parameters back */         sound_params->sample_rate = sample_rate;         sound_params->frag_size = frag_size;         sound_params->format = format;         /* and set the callback */         snddriver.callback = sound_params->callback;         snddriver.user_data = sound_params->user_data;         return 0;      }   }   snddriver.name = NULL;   thin_printf("thin: could not find any sound drivers.\n");   return -1;}void thin_sound_shutdown(void){   if (NULL == snddriver.name)      return;   snddriver.shutdown();   memset(&snddriver, 0, sizeof(snddriver_t));}void thin_sound_start(void){   if (NULL == snddriver.name)      return;   THIN_ASSERT(snddriver.callback);   snddriver.start(snddriver.callback, snddriver.user_data);}void thin_sound_stop(void){   if (NULL == snddriver.name)      return;   snddriver.stop();}void thin_sound_setrate(int sample_rate){   if (snddriver.setrate)      snddriver.setrate(sample_rate);}/*** $Log: $*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -