Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/sanear.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/DspTempo2.h')
-rw-r--r--src/DspTempo2.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/DspTempo2.h b/src/DspTempo2.h
new file mode 100644
index 0000000..faf066d
--- /dev/null
+++ b/src/DspTempo2.h
@@ -0,0 +1,43 @@
+#pragma once
+
+#include "DspBase.h"
+
+#include <RubberBandStretcher.h>
+
+namespace SaneAudioRenderer
+{
+ class DspTempo2 final
+ : public DspBase
+ {
+ public:
+
+ DspTempo2() = default;
+ DspTempo2(const DspTempo2&) = delete;
+ DspTempo2& operator=(const DspTempo2&) = delete;
+
+ void Initialize(double tempo, uint32_t rate, uint32_t channels);
+
+ std::wstring Name() override { return L"Tempo"; }
+
+ bool Active() override;
+
+ void Process(DspChunk& chunk) override;
+ void Finish(DspChunk& chunk) override;
+
+ private:
+
+ using DeinterleavedData = std::array<float*, 18>;
+
+ DeinterleavedData MarkData(DspChunk& chunk);
+ DeinterleavedData Deinterleave(DspChunk& chunk);
+ void Interleave(DspChunk& chunk);
+
+ std::unique_ptr<RubberBand::RubberBandStretcher> m_stretcher;
+
+ bool m_active = false;
+ bool m_finish = false;
+
+ uint32_t m_rate = 0;
+ uint32_t m_channels = 0;
+ };
+}