summaryrefslogtreecommitdiff
path: root/src/factories/oot/OoTAudioSampleWriter.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/factories/oot/OoTAudioSampleWriter.h')
-rw-r--r--src/factories/oot/OoTAudioSampleWriter.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/factories/oot/OoTAudioSampleWriter.h b/src/factories/oot/OoTAudioSampleWriter.h
new file mode 100644
index 0000000..5522402
--- /dev/null
+++ b/src/factories/oot/OoTAudioSampleWriter.h
@@ -0,0 +1,24 @@
+#pragma once
+
+#include "OoTAudioTypes.h"
+
+namespace OoT {
+
+class AudioSampleWriter {
+public:
+ bool Extract(std::vector<uint8_t>& buffer, YAML::Node& node,
+ SafeAudioBankReader& audioBank,
+ const std::vector<AudioTableEntry>& fontTable,
+ const std::vector<AudioTableEntry>& sampleBankTable,
+ std::map<uint32_t, SampleInfo>& sampleMap);
+
+private:
+ void DiscoverSamples(const std::vector<AudioTableEntry>& fontTable, AudioParseContext& ctx);
+ void WriteCompanionFiles(const std::map<uint32_t, SampleInfo>& sampleMap,
+ const std::vector<uint8_t>& audioTable);
+ std::map<int, std::map<int, std::string>> ParseSampleNames(YAML::Node& node);
+ void ParseSample(int bankIndex, uint32_t sampleAddr, uint32_t baseOffset, AudioParseContext& ctx);
+ void ParseSFESample(int bankIndex, uint32_t sfeAddr, uint32_t baseOffset, AudioParseContext& ctx);
+};
+
+} // namespace OoT