summaryrefslogtreecommitdiffstats
path: root/src/engine/engine.h
blob: 014b369b378255a78509aff31d01f3b67125f564 (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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#pragma once

#include "util/audiosignal.h"


namespace mixxx {
    // TODO(XXX): When we move from stereo to multi-channel this needs updating.
    static constexpr mixxx::AudioSignal::ChannelCount kEngineChannelCount(2);

    // Contains the information needed to process a buffer of audio
    class EngineParameters {
      public:
        SINT framesPerBuffer() const {
            return m_framesPerBuffer;
        }
        SINT samplesPerBuffer() const {
            return m_audioSignal.frames2samples(framesPerBuffer());
        }

        mixxx::AudioSignal::ChannelCount channelCount() const {
            return m_audioSignal.channelCount();
        }

        mixxx::AudioSignal::SampleRate sampleRate() const {
            return m_audioSignal.sampleRate();
        }

        explicit EngineParameters(
                AudioSignal::SampleRate sampleRate,
                SINT framesPerBuffer)
          : m_audioSignal(mixxx::AudioSignal::SampleLayout::Interleaved,
                          kEngineChannelCount, sampleRate),
            m_framesPerBuffer(framesPerBuffer) {
            DEBUG_ASSERT(framesPerBuffer > 0);
        }

      private:
        const mixxx::AudioSignal m_audioSignal;
        const SINT m_framesPerBuffer;
    };
}