summaryrefslogtreecommitdiffstats
path: root/src/track/cueinfoimporter.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/track/cueinfoimporter.h')
-rw-r--r--src/track/cueinfoimporter.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/track/cueinfoimporter.h b/src/track/cueinfoimporter.h
new file mode 100644
index 0000000000..c2f3648184
--- /dev/null
+++ b/src/track/cueinfoimporter.h
@@ -0,0 +1,40 @@
+#pragma once
+
+#include <memory>
+
+#include "track/cueinfo.h"
+
+namespace mixxx {
+
+/// Importer class for CueInfo objects that can correct timing offsets when the
+/// signal info (channel number, sample rate, bitrate) is known.
+class CueInfoImporter {
+ public:
+ CueInfoImporter() = default;
+ explicit CueInfoImporter(const QList<CueInfo>& cueInfos);
+ virtual ~CueInfoImporter() = default;
+
+ /// Returns audio signal dependent timing offset correction.
+ /// The default implementation just returns 0, but this can be overridden
+ /// in subclasses.
+ virtual double guessTimingOffsetMillis(
+ const QString& filePath,
+ const audio::SignalInfo& signalInfo) const;
+
+ void append(const CueInfo& cueInfo);
+ void append(const QList<CueInfo>& cueInfos);
+
+ int size() const;
+ bool isEmpty() const;
+
+ QList<CueInfo> importCueInfosWithCorrectTiming(
+ const QString& filePath,
+ const audio::SignalInfo& signalInfo);
+
+ private:
+ QList<CueInfo> m_cueInfos;
+};
+
+typedef std::shared_ptr<CueInfoImporter> CueInfoImporterPointer;
+
+} // namespace mixxx