public override bool Play() { if (!initialized) return false; var input = PlayList[currentIndex]; //Spec.callback = FillBuffer; for (int i = 0; i < formats.Length; i++) { Spec.format = formats[i]; Spec.freq = input.Frequency; Spec.channels = input.Channels; Spec.silence = 255; Spec.samples = Convert.ToUInt16(Math.Pow(2, 15) - 1); Spec.size = 0; try { currentDevice = SdlAudio.OpenAudioDevice(null, 0, ref Spec, out SdlAudioSpec obtained, (int)AudioAdjust.FORMAT_CHANGE); if (currentDevice != 0) { Spec = obtained; break; } } catch { continue; } } opened = currentDevice != 0; if (!opened) return false; SdlAudio.QueueAudio(currentDevice, input.data, input.length); SdlAudio.PauseAudioDevice(currentDevice, 0); return Loop; }
public SdlProducer( NanoClient client, AudioFormat audioFormat, VideoFormat videoFormat, bool fullscreen = false, bool useController = true ) { _cancellationTokenSource = new CancellationTokenSource(); _client = client; _audioRenderer = new SdlAudio((int)audioFormat.SampleRate, (int)audioFormat.Channels); _videoRenderer = new SdlVideo((int)videoFormat.Width, (int)videoFormat.Height, fullscreen); Decoder = new FFmpegDecoder(client, audioFormat, videoFormat); string baseDir = AppDomain.CurrentDomain.BaseDirectory; _useController = useController; if (_useController) { Input = new SdlInput($"{baseDir}/gamecontrollerdb.txt"); HandleInputEvent += Input.HandleInput; } }
public override void Dispose() { if (!initialized) return; IsDisposed = true; if (currentDevice != 0) SdlAudio.CloseAudioDevice(currentDevice); }
public override void Load(string file) { this.file = file; try { SdlAudio.LoadWAV(file, ref Spec, out Buffer, out Length); opened = true; } catch { opened = false; } }
public override bool Play() { if (!opened) return false; try { currentDevice = SdlAudio.OpenAudioDevice(null, 0, ref Spec, out _, (int)AudioAdjust.FORMAT_CHANGE); SdlAudio.QueueAudio(currentDevice, Buffer, Length); SdlAudio.PauseAudioDevice(currentDevice, 0); return Loop; } catch { } return false; }
static SdlSoundBase() { try { drivers = new string[SdlAudio.GetNumAudioDrivers()]; for (int i = 0; i < drivers.Length; ++i) { var driver = SdlAudio.GetAudioDriver(i); drivers[i] = driver; } SdlAudio.Init(SystemFlags.AUDIO); int count = SdlAudio.GetNumAudioDevices(0); devices = new string[count]; for (int i = 0; i < count; ++i) { devices[i] = SdlAudio.GetAudioDeviceName(i, 0); } initialized = true; } catch { } }
public override void Stop() { SdlAudio.CloseAudioDevice(currentDevice); }
public override void Pause() { SdlAudio.PauseAudioDevice(currentDevice, 1); }
public override void Dispose() { if (!initialized) return; SdlAudio.FreeWAV(Buffer); }