void UpdateSettings() { if (string.IsNullOrEmpty(_camID)) { _camID = AudioDeviceManager.ALTNAMEFORNULL; } MixCastData.CameraCalibrationData curCam = MixCast.Settings.GetCameraByID(_camID); if (curCam == null || curCam.audioData == null) { return; // shouldn't happen, but just in case. } var device = AudioDeviceManager.GetAudioDeviceByAltName(curCam.audioData.audioAltName); if (device != null) { _adeviceAltName = device.audioDeviceAltName; _adeviceBitsPerSample = (int)device.bitsPerSample; _adeviceChannels = (int)device.channel; _adeviceConfiguration = device.defaultSettings.audioConfig; _adeviceSamplingRate = (int)device.samplingRate; _adeviceDelayMs = (int)device.desktopDelayMs; // deviceName = device.audioDeviceName; // commenting out so no import warning in SDK } }
//private bool waitPreselectDesktopCnt = false; // Use this for initialization protected override void OnEnable() { base.OnEnable(); if (context != null && context.Data != null && context.Data.audioData != null) { if (AudioAsyncFeed.Instance(context.Data.id).audAsyncDec == IntPtr.Zero) { audioConfig = context.Data.audioData.audioConfig; } } }
public void SetAudioConfiguration(MixCastAV.AUDIOCONFIG cfgType) { if (audAsyncDec != IntPtr.Zero) { //useful for debugging //if (cfgType == MixCastAV.AUDIOCONFIG.MICROPHONE_AND_DESKTOP) // Debug.Log("The audio mode is set to : MICROPHONE_AND_DESKTOP"); //if (cfgType == MixCastAV.AUDIOCONFIG.DESKTOP_ONLY) // Debug.Log("The audio mode is set to : DESKTOP_ONLY"); //if (cfgType == MixCastAV.AUDIOCONFIG.MICROPHONE_ONLY) // Debug.Log("The audio mode is set to : MICROPHONE_ONLY"); //if (cfgType == MixCastAV.AUDIOCONFIG.NO_AUDIO) // Debug.Log("The audio mode is set to : NO_AUDIO"); MixCastAV.setCfgAudioDecodeAsync(audAsyncDec, cfgType); _adeviceConfiguration = cfgType; // save the configuration change } //Debug.LogWarning( "Setting audio config to " + cfgType.ToString() ); }
//multi tool function public RETURNCHANGETYPE SetPlay(string altName, int numChannels, int samplingRate, int bitsPerSample, MixCastAV.AUDIOCONFIG audioConfig, float micVolume, float desktopVolume, int delayMs) { if (_suppressingPlayback) { return(RETURNCHANGETYPE.NothingNewDoNothing); } //Debug.Log( "SetPlay()" ); if (delayMs > 1000) { Debug.LogWarning("Delay is too high for the audio, " + delayMs + "ms, setting it to 1000ms."); delayMs = 1000; } //create the audio asynchronous interface string DeviceNameSwitch = altName; int nChannelsSwitch = numChannels; int samplingRateSwitch = samplingRate; int bitsPerSampleSwitch = bitsPerSample; MixCastAV.AUDIOCONFIG configSwitch = audioConfig; //when the string is null, we want to use some defaults for a null audio track still if (string.IsNullOrEmpty(altName) == true || altName.Contains(AudioDeviceManager.ALTNAMEFORNULL)) { //dummy info for null track when no data found DeviceNameSwitch = AudioDeviceManager.ALTNAMEFORNULL; nChannelsSwitch = MixCastAV.DEFAUDIO_CHANNELS; samplingRateSwitch = MixCastAV.DEFAUDIO_SAMPLING; bitsPerSampleSwitch = MixCastAV.DEFAUDIO_BITDEPTH; } //if it is exactly the same as last configuration if (audAsyncDec != IntPtr.Zero) { if (_adeviceAltName == altName && _adeviceBitsPerSample == bitsPerSample && _adeviceChannels == numChannels && _adeviceSamplingRate == samplingRate && _adeviceDelayMs == delayMs) { if (_adeviceConfiguration == audioConfig) { //Debug.LogWarning( "No audio change for " + altName ); return(RETURNCHANGETYPE.NothingNewDoNothing); //nothing to do since it is the same as last time } else { // only audioConfig changed SetAudioConfiguration(audioConfig); //Debug.LogWarning( "Audio Config: " + audioConfig.ToString() ); return(RETURNCHANGETYPE.ConfigurationChangeOnly); } } else { Stop(); } } //Debug.LogError("devicename: " + deviceName + ", nCh: " + numChannels + ", sampling: " + samplingRate + ", bitsPer: " + bitsPerSample + ", cfg: " + audioConfig); audAsyncDec = MixCastAV.createAudioDecodeAsync(DeviceNameSwitch, nChannelsSwitch, samplingRateSwitch, bitsPerSampleSwitch, delayMs, MixCastAV.AUDIOCONFIG.MICROPHONE_AND_DESKTOP, MixCastAV.chunksPerSec); //Debug.Log("delay is set to : " + delayMs); if (audAsyncDec == IntPtr.Zero) { //Debug.LogError("Error creating Audio Device Async Interface." + audAsyncDec); Debug.LogWarning("Error creating decoder"); return(RETURNCHANGETYPE.ErrorCreating); } else //audAsyncDec is already ready { //successfully created, so save the variables _adeviceAltName = DeviceNameSwitch; _adeviceChannels = nChannelsSwitch; _adeviceSamplingRate = samplingRateSwitch; _adeviceBitsPerSample = bitsPerSampleSwitch; _adeviceConfiguration = configSwitch; _adeviceDelayMs = delayMs; MixCastAV.setMicVolume(audAsyncDec, micVolume); MixCastAV.setDesktopVolume(audAsyncDec, desktopVolume); Play(); SetAudioConfiguration(audioConfig); //set intended configuration //if (LibAvStuff.checkStartedAudioDecodeAsync(audAsyncDec) == 0) // deviceName = _adeviceAltName; // commenting out so no import warning in SDK return(RETURNCHANGETYPE.MadeNewDevice); } }