Implement HwOpus multistream functions (#3275)

* Implement HwOpus multistream functions

* Avoid one copy
This commit is contained in:
gdkchan 2022-04-15 18:16:28 -03:00 committed by GitHub
parent 610fc84f3e
commit 9444b4a647
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 380 additions and 212 deletions

View file

@ -0,0 +1,28 @@
using Concentus.Structs;
namespace Ryujinx.HLE.HOS.Services.Audio.HardwareOpusDecoderManager
{
class MultiSampleDecoder : IDecoder
{
private readonly OpusMSDecoder _decoder;
public int SampleRate => _decoder.SampleRate;
public int ChannelsCount { get; }
public MultiSampleDecoder(int sampleRate, int channelsCount, int streams, int coupledStreams, byte[] mapping)
{
ChannelsCount = channelsCount;
_decoder = new OpusMSDecoder(sampleRate, channelsCount, streams, coupledStreams, mapping);
}
public int Decode(byte[] inData, int inDataOffset, int len, short[] outPcm, int outPcmOffset, int frameSize)
{
return _decoder.DecodeMultistream(inData, inDataOffset, len, outPcm, outPcmOffset, frameSize, 0);
}
public void ResetState()
{
_decoder.ResetState();
}
}
}