コード例 #1
0
ファイル: SdlAudio.cs プロジェクト: MananAdhvaryu/GWS
 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;
 }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
ファイル: SdlAudio.cs プロジェクト: MananAdhvaryu/GWS
 public override void Dispose()
 {
     if (!initialized)
         return;
     IsDisposed = true;
     if (currentDevice != 0)
         SdlAudio.CloseAudioDevice(currentDevice);
 }
コード例 #4
0
ファイル: SdlAudio.cs プロジェクト: MananAdhvaryu/GWS
 public override void Load(string file)
 {
     this.file = file;
     try
     {
         SdlAudio.LoadWAV(file, ref Spec, out Buffer, out Length);
         opened = true;
     }
     catch
     {
         opened = false;
     }
 }
コード例 #5
0
ファイル: SdlAudio.cs プロジェクト: MananAdhvaryu/GWS
 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;
 }
コード例 #6
0
ファイル: SdlAudio.cs プロジェクト: MananAdhvaryu/GWS
            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 { }
            }
コード例 #7
0
ファイル: SdlAudio.cs プロジェクト: MananAdhvaryu/GWS
 public override void Stop()
 {
     SdlAudio.CloseAudioDevice(currentDevice);
 }
コード例 #8
0
ファイル: SdlAudio.cs プロジェクト: MananAdhvaryu/GWS
 public override void Pause()
 {
     SdlAudio.PauseAudioDevice(currentDevice, 1);
 }
コード例 #9
0
ファイル: SdlAudio.cs プロジェクト: MananAdhvaryu/GWS
 public override void Dispose()
 {
     if (!initialized)
         return;
     SdlAudio.FreeWAV(Buffer);
 }