public static void RebuildMixCastAudioDevices(int samplingRate)
 {
     MixCast.Settings.audioDevices.Clear();
     for (int i = 0; i < devices.Count; i++)
     {
         if (devices[i] != null)
         {
             MixCastData.AudioCalibrationData audioDevice = new MixCastData.AudioCalibrationData();
             audioDevice.audioDeviceName    = devices[i].name;
             audioDevice.audioDeviceAltName = devices[i].altname;
             if (devices[i].outputs.Count > 0)
             {
                 int       index = Utility.Find.Index <AudioInfo>(devices[i].outputs, o => o != null && o.samplingRate == samplingRate);
                 AudioInfo output;
                 output = devices[i].outputs[index >= 0 ? index : 0];
                 audioDevice.avgBytesPerSec = output.avgBytesPerSec;
                 audioDevice.bitsPerSample  = output.bitPerSample;
                 audioDevice.blockAlign     = output.blockAlign;
                 audioDevice.channel        = output.channel;
                 audioDevice.samplingRate   = output.samplingRate;
             }
             MixCast.Settings.audioDevices.Add(audioDevice);
         }
     }
 }
        public RETURNCHANGETYPE PlayWithSettings(MixCastData.CameraCalibrationData cam)
        {
            if (_suppressingPlayback)
            {
                return(RETURNCHANGETYPE.NothingNewDoNothing);
            }

            cam.audioData.delayMs = (int)cam.bufferTime;
            micData = AudioDeviceManager.GetAudioDeviceByAltName(cam.audioData.audioAltName);
            if (cam != null)
            {
                if (micData != null)
                {
                    return(SetPlay(cam.audioData.audioAltName, (int)micData.channel, (int)micData.samplingRate, (int)micData.bitsPerSample,
                                   cam.audioData.audioConfig, cam.audioData.volume, cam.audioData.desktopVolume, cam.audioData.delayMs));
                }
                cam.audioData.useAudioInput = false; // mic is null
                return(SetPlay("", 0, 0, 0, cam.audioData.audioConfig, 0.0f, cam.audioData.desktopVolume, cam.audioData.delayMs));
            }
            return(SetPlay("", 0, 0, 0, MixCastAV.AUDIOCONFIG.NO_AUDIO, 0.0f, 0.0f, 0));
        }