mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-07-24 15:07:10 +02:00
Audio Renderer improvements (#210)
* Partial voice implementation on audio renderer * Implemented audren resampler (based on original impl) * Fix BiquadFilter struct * Pause audio playback on last stream buffer * Split audren/audout files into separate folders, some minor cleanup * Use AudioRendererParameter on GetWorkBufferSize aswell * Bump audren version to REV4, name a few things, increase sample buffer size * Remove useless new lines
This commit is contained in:
parent
be31f5b46d
commit
98c6ceede5
34 changed files with 1168 additions and 271 deletions
|
@ -2,12 +2,12 @@ namespace Ryujinx.HLE.OsHle.Utilities
|
|||
{
|
||||
static class IntUtils
|
||||
{
|
||||
public static int RoundUp(int Value, int Size)
|
||||
public static int AlignUp(int Value, int Size)
|
||||
{
|
||||
return (Value + (Size - 1)) & ~(Size - 1);
|
||||
}
|
||||
|
||||
public static long RoundUp(long Value, int Size)
|
||||
public static long AlignUp(long Value, int Size)
|
||||
{
|
||||
return (Value + (Size - 1)) & ~((long)Size - 1);
|
||||
}
|
||||
|
|
45
Ryujinx.HLE/OsHle/Utilities/StructReader.cs
Normal file
45
Ryujinx.HLE/OsHle/Utilities/StructReader.cs
Normal file
|
@ -0,0 +1,45 @@
|
|||
using ChocolArm64.Memory;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Ryujinx.HLE.OsHle.Utilities
|
||||
{
|
||||
class StructReader
|
||||
{
|
||||
private AMemory Memory;
|
||||
|
||||
public long Position { get; private set; }
|
||||
|
||||
public StructReader(AMemory Memory, long Position)
|
||||
{
|
||||
this.Memory = Memory;
|
||||
this.Position = Position;
|
||||
}
|
||||
|
||||
public T Read<T>() where T : struct
|
||||
{
|
||||
T Value = AMemoryHelper.Read<T>(Memory, Position);
|
||||
|
||||
Position += Marshal.SizeOf<T>();
|
||||
|
||||
return Value;
|
||||
}
|
||||
|
||||
public T[] Read<T>(int Size) where T : struct
|
||||
{
|
||||
int StructSize = Marshal.SizeOf<T>();
|
||||
|
||||
int Count = Size / StructSize;
|
||||
|
||||
T[] Output = new T[Count];
|
||||
|
||||
for (int Index = 0; Index < Count; Index++)
|
||||
{
|
||||
Output[Index] = AMemoryHelper.Read<T>(Memory, Position);
|
||||
|
||||
Position += StructSize;
|
||||
}
|
||||
|
||||
return Output;
|
||||
}
|
||||
}
|
||||
}
|
25
Ryujinx.HLE/OsHle/Utilities/StructWriter.cs
Normal file
25
Ryujinx.HLE/OsHle/Utilities/StructWriter.cs
Normal file
|
@ -0,0 +1,25 @@
|
|||
using ChocolArm64.Memory;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Ryujinx.HLE.OsHle.Utilities
|
||||
{
|
||||
class StructWriter
|
||||
{
|
||||
private AMemory Memory;
|
||||
|
||||
public long Position { get; private set; }
|
||||
|
||||
public StructWriter(AMemory Memory, long Position)
|
||||
{
|
||||
this.Memory = Memory;
|
||||
this.Position = Position;
|
||||
}
|
||||
|
||||
public void Write<T>(T Value) where T : struct
|
||||
{
|
||||
AMemoryHelper.Write(Memory, Position, Value);
|
||||
|
||||
Position += Marshal.SizeOf<T>();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue