45 lines
1.3 KiB
C#
45 lines
1.3 KiB
C#
namespace BizHawk.Emulation.Common
|
|
{
|
|
public enum SyncSoundMode { Sync, Async };
|
|
|
|
public interface ISoundProvider : IEmulatorService
|
|
{
|
|
/// <summary>
|
|
/// Returns true if a core can provide Async sound
|
|
/// </summary>
|
|
bool CanProvideAsync { get; }
|
|
|
|
/// <summary>
|
|
/// Sets sync or async sound mode,
|
|
/// Sync should be the default mode if not set
|
|
/// All implementations must provide sync
|
|
/// If a core can not provide async sound and the mode is set to sync,
|
|
/// an NotSupportedException should be thrown
|
|
/// </summary>
|
|
void SetSyncMode(SyncSoundMode mode);
|
|
|
|
/// <summary>
|
|
/// Reports which mode the sound provider is currently in
|
|
/// </summary>
|
|
SyncSoundMode SyncMode { get; }
|
|
|
|
/// <summary>
|
|
/// Provides samples in syncmode
|
|
/// If the core is not in sync mode, this should throw an InvalidOperationException
|
|
/// </summary>
|
|
void GetSamplesSync(out short[] samples, out int nsamp);
|
|
|
|
/// <summary>
|
|
/// Provides samples in async mode
|
|
/// If the core is not in async mode, this shoudl throw an InvalidOperationException
|
|
/// </summary>
|
|
/// <param name="samples"></param>
|
|
void GetSamplesAsync(short[] samples);
|
|
|
|
/// <summary>
|
|
/// Discards stuff, is there anything more to say here?
|
|
/// </summary>
|
|
void DiscardSamples();
|
|
}
|
|
}
|