blob: a5d0a0555f272758f3f0aa7bb2a0a628d5725416 (
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
// enginecontrol.cpp
// Created 7/5/2009 by RJ Ryan (rryan@mit.edu)
#include "engine/controls/enginecontrol.h"
#include "engine/enginemaster.h"
#include "engine/enginebuffer.h"
#include "engine/sync/enginesync.h"
#include "mixer/playermanager.h"
EngineControl::EngineControl(QString group,
UserSettingsPointer pConfig)
: m_group(group),
m_pConfig(pConfig),
m_pEngineMaster(nullptr),
m_pEngineBuffer(nullptr) {
setCurrentSample(0.0, 0.0, 0.0);
}
EngineControl::~EngineControl() {
}
void EngineControl::process(const double dRate,
const double dCurrentSample,
const int iBufferSize) {
Q_UNUSED(dRate);
Q_UNUSED(dCurrentSample);
Q_UNUSED(iBufferSize);
}
void EngineControl::trackLoaded(TrackPointer pNewTrack) {
Q_UNUSED(pNewTrack);
}
void EngineControl::trackBeatsUpdated(mixxx::BeatsPointer pBeats) {
Q_UNUSED(pBeats);
}
void EngineControl::hintReader(HintVector*) {
}
void EngineControl::setEngineMaster(EngineMaster* pEngineMaster) {
m_pEngineMaster = pEngineMaster;
}
void EngineControl::setEngineBuffer(EngineBuffer* pEngineBuffer) {
m_pEngineBuffer = pEngineBuffer;
}
void EngineControl::setCurrentSample(
const double dCurrentSample, const double dTotalSamples, const double dTrackSampleRate) {
SampleOfTrack sot;
sot.current = dCurrentSample;
sot.total = dTotalSamples;
sot.rate = dTrackSampleRate;
m_sampleOfTrack.setValue(sot);
}
QString EngineControl::getGroup() const {
return m_group;
}
UserSettingsPointer EngineControl::getConfig() {
return m_pConfig;
}
EngineMaster* EngineControl::getEngineMaster() {
return m_pEngineMaster;
}
EngineBuffer* EngineControl::getEngineBuffer() {
return m_pEngineBuffer;
}
void EngineControl::seekAbs(double samplePosition) {
if (m_pEngineBuffer) {
m_pEngineBuffer->slotControlSeekAbs(samplePosition);
}
}
void EngineControl::seekExact(double playPosition) {
if (m_pEngineBuffer) {
m_pEngineBuffer->slotControlSeekExact(playPosition);
}
}
void EngineControl::seek(double sample) {
if (m_pEngineBuffer) {
m_pEngineBuffer->slotControlSeek(sample);
}
}
void EngineControl::notifySeek(double dNewPlaypos) {
SampleOfTrack sot = m_sampleOfTrack.getValue();
sot.current = dNewPlaypos;
m_sampleOfTrack.setValue(sot);
}
EngineBuffer* EngineControl::pickSyncTarget() {
EngineMaster* pMaster = getEngineMaster();
if (!pMaster) {
return nullptr;
}
EngineSync* pEngineSync = pMaster->getEngineSync();
if (!pEngineSync) {
return nullptr;
}
EngineChannel* pThisChannel = pMaster->getChannel(getGroup());
Syncable* pSyncable = pEngineSync->pickNonSyncSyncTarget(pThisChannel);
// pickNonSyncSyncTarget can return nullptr, but if it doesn't the Syncable
// definitely has an EngineChannel.
if (pSyncable) {
return pSyncable->getChannel()->getEngineBuffer();
}
return nullptr;
}
|