blob: 659734b6dcdff59a0c0e4f5da9ad1ebf6fbe38ab (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
using System.Collections.Concurrent;
using System.Collections.Generic;
namespace Ryujinx.Audio
{
/// <summary>
/// A Dummy audio renderer that does not output any audio
/// </summary>
public class DummyAudioOut : IAalOutput
{
private ConcurrentQueue<long> m_Buffers;
public DummyAudioOut()
{
m_Buffers = new ConcurrentQueue<long>();
}
/// <summary>
/// Dummy audio output is always available, Baka!
/// </summary>
public static bool IsSupported => true;
public PlaybackState GetState(int trackId) => PlaybackState.Stopped;
public int OpenTrack(int sampleRate, int channels, ReleaseCallback callback) => 1;
public void CloseTrack(int trackId) { }
public void Start(int trackId) { }
public void Stop(int trackId) { }
public void AppendBuffer<T>(int trackID, long bufferTag, T[] buffer)
where T : struct
{
m_Buffers.Enqueue(bufferTag);
}
public long[] GetReleasedBuffers(int trackId, int maxCount)
{
List<long> bufferTags = new List<long>();
for (int i = 0; i < maxCount; i++)
{
if (!m_Buffers.TryDequeue(out long tag))
{
break;
}
bufferTags.Add(tag);
}
return bufferTags.ToArray();
}
public bool ContainsBuffer(int trackID, long bufferTag) => false;
public void Dispose()
{
m_Buffers.Clear();
}
}
}
|