int muroard_driver_init(const char * dev) { if ( (muroard_state_member(driver_fh) = muroar_connect(dev, MUROARD_DEFAULT_DRIVER_CLIENT_NAME)) == -1 ) return -1; if ( (muroard_state_member(driver_fh) = muroar_stream(muroard_state_member(driver_fh), MUROAR_PLAY_WAVE, NULL, MUROAR_CODEC_PCM, muroard_state_member(sa_rate), muroard_state_member(sa_channels), 16)) == -1 ) return -1; return 0; }
static int muroar_rsd_open(void* data, wav_header_t *w) { muroar_t* interface = data; int bits = -1; int codec = -1; switch ( w->rsd_format ) { case RSD_S32_LE: bits = 32; codec = MUROAR_CODEC_PCM_S_LE; break; case RSD_S32_BE: bits = 32; codec = MUROAR_CODEC_PCM_S_BE; break; case RSD_U32_LE: bits = 32; codec = MUROAR_CODEC_PCM_U_LE; break; case RSD_U32_BE: bits = 32; codec = MUROAR_CODEC_PCM_U_BE; break; case RSD_S16_LE: bits = 16; codec = MUROAR_CODEC_PCM_S_LE; break; case RSD_U16_LE: bits = 16; codec = MUROAR_CODEC_PCM_U_LE; break; case RSD_U16_BE: bits = 16; codec = MUROAR_CODEC_PCM_U_BE; break; case RSD_S16_BE: bits = 16; codec = MUROAR_CODEC_PCM_S_BE; break; case RSD_U8: bits = 8; codec = MUROAR_CODEC_PCM_U; break; case RSD_S8: bits = 8; codec = MUROAR_CODEC_PCM_S; break; case RSD_ALAW: bits = 8; codec = MUROAR_CODEC_ALAW; break; case RSD_MULAW: bits = 8; codec = MUROAR_CODEC_MULAW; break; default: return -1; } if ( (interface->fh = muroar_connect(NULL, "rsd")) == -1 ) { log_printf("Error opening device.\n"); return -1; } if ( muroar_stream(interface->fh, MUROAR_PLAY_WAVE, NULL, codec, w->sampleRate, w->numChannels, bits) == -1 ) { log_printf("Error opening device.\n"); return -1; } return 0; }