DSP: Add option to enable/disable AAC

This commit is contained in:
wheremyfoodat 2024-11-28 17:47:36 +02:00
parent 93c143d79d
commit b251f84ab1
13 changed files with 44 additions and 23 deletions

View file

@ -18,7 +18,8 @@ namespace Audio::AAC {
public:
// Decode function. Takes in a reference to the AAC response & request, and a callback for paddr -> pointer conversions
void decode(AAC::Message& response, const AAC::Message& request, PaddrCallback paddrCallback);
// We also allow for optionally muting the AAC output (setting all of it to 0) instead of properly decoding it, for debug/research purposes
void decode(AAC::Message& response, const AAC::Message& request, PaddrCallback paddrCallback, bool enableAudio = false);
~Decoder();
};
} // namespace Audio::AAC

View file

@ -14,6 +14,7 @@
// The DSP core must have access to the DSP service to be able to trigger interrupts properly
class DSPService;
class Memory;
struct EmulatorConfig;
namespace Audio {
// There are 160 stereo samples in 1 audio frame, so 320 samples total
@ -31,6 +32,7 @@ namespace Audio {
Memory& mem;
Scheduler& scheduler;
DSPService& dspService;
EmulatorConfig& settings;
Samples sampleBuffer;
bool audioEnabled = false;
@ -39,7 +41,8 @@ namespace Audio {
public:
enum class Type { Null, Teakra, HLE };
DSPCore(Memory& mem, Scheduler& scheduler, DSPService& dspService) : mem(mem), scheduler(scheduler), dspService(dspService) {}
DSPCore(Memory& mem, Scheduler& scheduler, DSPService& dspService, EmulatorConfig& settings)
: mem(mem), scheduler(scheduler), dspService(dspService), settings(settings) {}
virtual ~DSPCore() {}
virtual void reset() = 0;
@ -62,5 +65,5 @@ namespace Audio {
virtual void setAudioEnabled(bool enable) { audioEnabled = enable; }
};
std::unique_ptr<DSPCore> makeDSPCore(DSPCore::Type type, Memory& mem, Scheduler& scheduler, DSPService& dspService);
std::unique_ptr<DSPCore> makeDSPCore(EmulatorConfig& config, Memory& mem, Scheduler& scheduler, DSPService& dspService);
} // namespace Audio

View file

@ -206,7 +206,7 @@ namespace Audio {
SampleBuffer decodeADPCM(const u8* data, usize sampleCount, Source& source);
public:
HLE_DSP(Memory& mem, Scheduler& scheduler, DSPService& dspService);
HLE_DSP(Memory& mem, Scheduler& scheduler, DSPService& dspService, EmulatorConfig& config);
~HLE_DSP() override {}
void reset() override;

View file

@ -23,7 +23,7 @@ namespace Audio {
bool loaded = false; // Have we loaded a component?
public:
NullDSP(Memory& mem, Scheduler& scheduler, DSPService& dspService) : DSPCore(mem, scheduler, dspService) {}
NullDSP(Memory& mem, Scheduler& scheduler, DSPService& dspService, EmulatorConfig& config) : DSPCore(mem, scheduler, dspService, config) {}
~NullDSP() override {}
void reset() override;

View file

@ -77,7 +77,7 @@ namespace Audio {
}
public:
TeakraDSP(Memory& mem, Scheduler& scheduler, DSPService& dspService);
TeakraDSP(Memory& mem, Scheduler& scheduler, DSPService& dspService, EmulatorConfig& config);
~TeakraDSP() override {}
void reset() override;