完善AudioDSP可选设置采样率,Essgee设置正确采样率

This commit is contained in:
sin365 2025-10-16 15:49:08 +08:00
parent 5cb474d41a
commit be8b64f630
4 changed files with 11 additions and 9 deletions

View File

@ -34,7 +34,7 @@ public class UEGSoundPlayer : MonoBehaviour, AxiAudioPull
private void OnEnable()
{
App.audioMgr.RegisterStream(nameof(UEssgee), AudioSettings.outputSampleRate, this);
App.audioMgr.RegisterStream(nameof(UEssgee), sampleRate, this);
}
void OnDisable()

View File

@ -37,7 +37,7 @@ namespace AxibugEmuOnline.Client
private void OnEnable()
{
App.audioMgr.RegisterStream(nameof(NesEmulator), AudioSettings.outputSampleRate, this);
App.audioMgr.RegisterStream(nameof(NesEmulator), null, this);
}
void OnDisable()

View File

@ -47,7 +47,7 @@ public class SGSoundPlayer : MonoBehaviour, AxiAudioPull
private void OnEnable()
{
App.audioMgr.RegisterStream(nameof(UStoicGoose), AudioSettings.outputSampleRate, this);
App.audioMgr.RegisterStream(nameof(UStoicGoose), null, this);
}
void OnDisable()

View File

@ -78,7 +78,7 @@ namespace AxibugEmuOnline.Client
//函数仅处理设备变化的情况,非设备变化不再本函数处理,避免核心采样率变化和本处循环调用
if (deviceWasChanged)
{
ResetAudioCfg();
ResetAudioCfg(AudioSettings.outputSampleRate);
//AudioConfiguration config = AudioSettings.GetConfiguration();
//AudioSettings.Reset(config);
//TODO 重新播放音效但是DSP不用若有UI BGM后续 这里加重播
@ -119,20 +119,22 @@ namespace AxibugEmuOnline.Client
/// </summary>
/// <param name="channelId">通道标识符 (e.g., "NES", "MAME")</param>
/// <param name="inputSampleRate">该通道的原始采样率</param>
public void RegisterStream(string channelId, int inputSampleRate, AxiAudioPull audioPullHandle)
public void RegisterStream(string channelId, int? inputSampleRate, AxiAudioPull audioPullHandle)
{
_audioStreams = null;
_audioStreams = new AudioStreamData(channelId, inputSampleRate, audioPullHandle);
ResetAudioCfg();
_audioStreams = new AudioStreamData(channelId,
inputSampleRate.HasValue ? inputSampleRate.Value : AudioSettings.outputSampleRate
, audioPullHandle);
ResetAudioCfg(inputSampleRate);
}
private void ResetAudioCfg()
private void ResetAudioCfg(int? inputSampleRate)
{
// 获取当前音频配置
AudioConfiguration config = AudioSettings.GetConfiguration();
// 设置目标音频配置
config.sampleRate = 48000; // 采样率为 44100Hz
config.sampleRate = inputSampleRate.HasValue ? inputSampleRate.Value : 48000; // 采样率为 44100Hz
config.numRealVoices = 32; // 设置最大音频源数量(可选)
config.numVirtualVoices = 512; // 设置虚拟音频源数量(可选)
config.dspBufferSize = 1024; // 设置 DSP 缓冲区大小(可选)