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;
}
Example #2
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;
}