Update Cryville.Audio.

This commit is contained in:
2023-11-01 01:01:13 +08:00
parent 724cb10bc1
commit b57959b4bf
29 changed files with 1289 additions and 967 deletions

View File

@@ -26,6 +26,7 @@ namespace Cryville.Crtr {
public static string GameDataPath { get; private set; }
public static string UnityDataPath { get; private set; }
public static IAudioDeviceManager AudioManager;
public static IAudioDevice AudioDevice;
public static AudioClient AudioClient;
public static SimpleSequencerSource AudioSequencer;
public static SimpleSequencerSession AudioSession;
@@ -89,6 +90,16 @@ namespace Cryville.Crtr {
ffmpeg.RootPath = "";
#else
#error No FFmpeg search path.
#endif
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
EngineBuilder.Engines.Add(typeof(Audio.Wasapi.MMDeviceEnumeratorWrapper));
EngineBuilder.Engines.Add(typeof(Audio.WaveformAudio.WaveDeviceManager));
#elif UNITY_ANDROID
EngineBuilder.Engines.Add(typeof(Audio.AAudio.AAudioManager));
EngineBuilder.Engines.Add(typeof(Audio.OpenSLES.Engine));
#else
#error No audio engine defined.
#endif
while (true) {
try {
@@ -99,8 +110,13 @@ namespace Cryville.Crtr {
}
else {
Logger.Log("main", 1, "Audio", "Using audio API: {0}", AudioManager.GetType().Namespace);
AudioClient = AudioManager.GetDefaultDevice(DataFlow.Out).Connect();
AudioClient.Init(AudioClient.DefaultFormat);
AudioDevice = AudioManager.GetDefaultDevice(DataFlow.Out);
AudioClient = AudioDevice.Connect(AudioDevice.DefaultFormat, AudioDevice.MinimumBufferSize + AudioDevice.BurstSize);
Logger.Log(
"main", 1, "Audio",
"Audio Output = {{ Name = \"{0}\", BurstSize = {1}, Format = {2}, BufferSize = {3} }}",
AudioDevice.Name, AudioDevice.BurstSize, AudioClient.Format, AudioClient.BufferSize
);
AudioClient.Source = AudioSequencer = new SimpleSequencerSource();
AudioSession = AudioSequencer.NewSession();
AudioSequencer.Playing = true;
@@ -147,6 +163,7 @@ namespace Cryville.Crtr {
try {
AudioClient.Dispose();
AudioSequencer.Dispose();
AudioDevice.Dispose();
AudioManager.Dispose();
}
catch (Exception ex) {