public void TrackModifiedConfiguration(AudioOutputConfiguration config) { AudioOutputConfiguration modified = _modifiedAudioOutputConfigurations.Where(AEC => AEC.token == config.token).FirstOrDefault(); if (modified == null) { _modifiedAudioOutputConfigurations.Add(config); } }
/// <summary> /// Open a new <see cref="AudioOutputSystem"/>. /// </summary> /// <param name="outputDeviceName">The output device name selected by the <see cref="AudioOutputSystem"/></param> /// <param name="outputConfiguration">The output audio configuration selected by the <see cref="AudioOutputSystem"/></param> /// <param name="obj">The new <see cref="AudioOutputSystem"/></param> /// <param name="memoryManager">The memory manager that will be used for all guest memory operations</param> /// <param name="inputDeviceName">The input device name wanted by the user</param> /// <param name="sampleFormat">The sample format to use</param> /// <param name="parameter">The user configuration</param> /// <param name="appletResourceUserId">The applet resource user id of the application</param> /// <param name="processHandle">The process handle of the application</param> /// <returns>A <see cref="ResultCode"/> reporting an error or a success</returns> public ResultCode OpenAudioOut(out string outputDeviceName, out AudioOutputConfiguration outputConfiguration, out AudioOutputSystem obj, IVirtualMemoryManager memoryManager, string inputDeviceName, SampleFormat sampleFormat, ref AudioInputConfiguration parameter, ulong appletResourceUserId, uint processHandle, float volume) { int sessionId = AcquireSessionId(); _sessionsBufferEvents[sessionId].Clear(); IHardwareDeviceSession deviceSession = _deviceDriver.OpenDeviceSession(IHardwareDeviceDriver.Direction.Output, memoryManager, sampleFormat, parameter.SampleRate, parameter.ChannelCount, volume); AudioOutputSystem audioOut = new AudioOutputSystem(this, _lock, deviceSession, _sessionsBufferEvents[sessionId]); ResultCode result = audioOut.Initialize(inputDeviceName, sampleFormat, ref parameter, sessionId); if (result == ResultCode.Success) { outputDeviceName = audioOut.DeviceName; outputConfiguration = new AudioOutputConfiguration { ChannelCount = audioOut.ChannelCount, SampleFormat = audioOut.SampleFormat, SampleRate = audioOut.SampleRate, AudioOutState = audioOut.GetState(), }; obj = audioOut; Register(audioOut); } else { ReleaseSessionId(sessionId); obj = null; outputDeviceName = null; outputConfiguration = default; } return(result); }
private bool TuneBackchannelProfile(Profile profile, MediaConfigurationChangeLog changeLog, string Codec) { AudioOutputConfiguration o = profile.Extension.AudioOutputConfiguration; if ((o.SendPrimacy != null) && (o.SendPrimacy == "www.onvif.org/ver20/HalfDuplex/Server")) { AudioOutputConfigurationOptions opt = GetAudioOutputConfigurationOptions(o.token, null); if (opt != null && opt.SendPrimacyOptions != null) { string s = opt.SendPrimacyOptions.FirstOrDefault(c => c != "www.onvif.org/ver20/HalfDuplex/Server"); if (s != null) { o.SendPrimacy = s; changeLog.TrackModifiedConfiguration(o); SetAudioOutputConfiguration(o, false); } } } if ((o.SendPrimacy != null) && (o.SendPrimacy == "www.onvif.org/ver20/HalfDuplex/Server")) { return(false); } AudioDecoderConfiguration d = profile.Extension.AudioDecoderConfiguration; AudioDecoderConfigurationOptions Options = GetAudioDecoderConfigurationOptions(d.token, profile.token); if (Options == null) { return(false); } if (Codec == "G711" && Options.G711DecOptions == null) { return(false); } if (Codec == "G726" && Options.G726DecOptions == null) { return(false); } if (Codec == "AAC" && Options.AACDecOptions == null) { return(false); } return(true); }
public ResultCode OpenAudioOut(ServiceCtx context, out string outputDeviceName, out AudioOutputConfiguration outputConfiguration, out IAudioOut obj, string inputDeviceName, ref AudioInputConfiguration parameter, ulong appletResourceUserId, uint processHandle, float volume) { var memoryManager = context.Process.HandleTable.GetKProcess((int)processHandle).CpuMemory; ResultCode result = (ResultCode)_impl.OpenAudioOut(out outputDeviceName, out outputConfiguration, out AudioOutputSystem outSystem, memoryManager, inputDeviceName, SampleFormat.PcmInt16, ref parameter, appletResourceUserId, processHandle, volume); if (result == ResultCode.Success) { obj = new AudioOut.AudioOut(outSystem, context.Device.System.KernelContext, processHandle); } else { obj = null; } return(result); }
public override void SetAudioOutputConfiguration(AudioOutputConfiguration Configuration, bool ForcePersistence, ref System.Xml.XmlElement[] Any) { throw new NotImplementedException(); }
public Task SetAudioOutputConfigurationAsync(AudioOutputConfiguration Configuration, bool ForcePersistence) { throw new NotImplementedException(); }
public override void SetAudioOutputConfiguration(AudioOutputConfiguration Configuration) { throw new NotImplementedException(); }