summaryrefslogtreecommitdiffstats
path: root/src/track/beatsimporter.h
blob: 0b58b3743349be931dc42f07aba4d6ec11cd4fc1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#pragma once

#include <QVector>
#include <memory>

#include "audio/streaminfo.h"

namespace mixxx {

/// Importer class for Beats that can correct timing offsets when the
/// signal info (channel number, sample rate, bitrate) is known.
class BeatsImporter {
  public:
    virtual ~BeatsImporter() = default;

    virtual bool isEmpty() const = 0;

    /// Determines the timing offset and returns a Vector of frame positions
    /// to use as input for the BeatMap constructor
    virtual QVector<double> importBeatsAndApplyTimingOffset(
            const QString& filePath, const audio::StreamInfo& streamInfo) = 0;
};

typedef std::shared_ptr<BeatsImporter> BeatsImporterPointer;

} // namespace mixxx