Skip to content

Commit

Permalink
Merge pull request #22 from daschuer/autodj_intro_outro
Browse files Browse the repository at this point in the history
Autodj intro/outro fixes
  • Loading branch information
Be-ing committed Jul 23, 2019
2 parents 570e50c + d87db38 commit c0052a9
Show file tree
Hide file tree
Showing 7 changed files with 330 additions and 272 deletions.
457 changes: 270 additions & 187 deletions src/library/autodj/autodjprocessor.cpp

Large diffs are not rendered by default.

18 changes: 11 additions & 7 deletions src/library/autodj/autodjprocessor.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,10 @@ class DeckAttributes : public QObject {
public:
int index;
QString group;
double startPos;
double fadeBeginPos;
double fadeDuration;
double startPos; // Set in toDeck nature
double fadeBeginPos; // set in fromDeck nature
double fadeEndPos; // set in fromDeck nature
bool loading; // The data is inconsistent during loading a deck

private:
EngineChannel::ChannelOrientation m_orientation;
Expand All @@ -136,8 +137,8 @@ class AutoDJProcessor : public QObject {
public:
enum AutoDJState {
ADJ_IDLE = 0,
ADJ_P1FADING,
ADJ_P2FADING,
ADJ_LEFT_FADING,
ADJ_RIGHT_FADING,
ADJ_ENABLE_P1LOADED,
ADJ_ENABLE_P1PLAYING,
ADJ_DISABLED
Expand Down Expand Up @@ -233,7 +234,7 @@ class AutoDJProcessor : public QObject {
// right side. (prevents AutoDJ logic from having to check for hamster mode
// every time)
double getCrossfader() const;
void setCrossfader(double value, bool right);
void setCrossfader(double value);

// Following functions return seconds computed from samples or -1 if
// track in deck has invalid sample rate (<= 0)
Expand All @@ -249,7 +250,9 @@ class AutoDJProcessor : public QObject {
TrackPointer getNextTrackFromQueue();
bool loadNextTrackFromQueue(const DeckAttributes& pDeck, bool play = false);
void calculateTransition(DeckAttributes* pFromDeck,
DeckAttributes* pToDeck);
DeckAttributes* pToDeck,
bool fadeNow,
bool seekToStartPoint);
void useFixedFadeTime(DeckAttributes* pFromDeck, DeckAttributes* pToDeck,
double endPoint, double startPoint);
DeckAttributes* getOtherDeck(DeckAttributes* pFromDeck,
Expand All @@ -268,6 +271,7 @@ class AutoDJProcessor : public QObject {
PlaylistTableModel* m_pAutoDJTableModel;

AutoDJState m_eState;
double m_transitionProgress;
double m_transitionTime; // the desired value set by the user
TransitionMode m_transitionMode;

Expand Down
8 changes: 4 additions & 4 deletions src/library/autodj/dlgautodj.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
#include "library/autodj/dlgautodj.h"

#include "library/playlisttablemodel.h"
#include "widget/wtracktableview.h"
#include "util/assert.h"
#include "util/duration.h"
#include "util/compatibility.h"
#include "util/duration.h"
#include "widget/wtracktableview.h"

DlgAutoDJ::DlgAutoDJ(QWidget* parent,
UserSettingsPointer pConfig,
Expand Down Expand Up @@ -208,8 +208,8 @@ void DlgAutoDJ::autoDJStateChanged(AutoDJProcessor::AutoDJState state) {
pushButtonAutoDJ->setText(tr("Disable Auto DJ"));

// If fading, you can't hit fade now.
if (state == AutoDJProcessor::ADJ_P1FADING ||
state == AutoDJProcessor::ADJ_P2FADING ||
if (state == AutoDJProcessor::ADJ_LEFT_FADING ||
state == AutoDJProcessor::ADJ_RIGHT_FADING ||
state == AutoDJProcessor::ADJ_ENABLE_P1LOADED) {
pushButtonFadeNow->setEnabled(false);
} else {
Expand Down
17 changes: 8 additions & 9 deletions src/preferences/dialog/dlgprefdeck.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,20 @@
#include <QLocale>
#include <QDesktopWidget>

#include "mixer/basetrackplayer.h"
#include "preferences/dialog/dlgprefdeck.h"
#include "preferences/usersettings.h"
#include "control/controlobject.h"
#include "control/controlproxy.h"
#include "widget/wnumberpos.h"
#include "engine/enginebuffer.h"
#include "defs_urls.h"
#include "engine/controls/ratecontrol.h"
#include "mixer/playermanager.h"
#include "engine/enginebuffer.h"
#include "mixer/basetrackplayer.h"
#include "mixer/playerinfo.h"
#include "control/controlobject.h"
#include "mixer/playermanager.h"
#include "mixxx.h"
#include "defs_urls.h"
#include "util/duration.h"
#include "preferences/dialog/dlgprefdeck.h"
#include "preferences/usersettings.h"
#include "util/compatibility.h"
#include "util/duration.h"
#include "widget/wnumberpos.h"

namespace {
constexpr int kDefaultRateRangePercent = 8;
Expand Down
89 changes: 29 additions & 60 deletions src/test/autodjprocessor_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ class FakeDeck : public BaseTrackPlayer {
playposition(ConfigKey(group, "playposition"), 0.0, 1.0, 0, 0, true),
play(ConfigKey(group, "play")),
repeat(ConfigKey(group, "repeat")),
seekOnLoadMode(ConfigKey(group, "seekonload_mode")),
introStartPos(ConfigKey(group, "intro_start_position")),
outroStartPos(ConfigKey(group, "outro_start_position")),
outroEndPos(ConfigKey(group, "outro_end_position")) {
Expand Down Expand Up @@ -98,7 +97,6 @@ class FakeDeck : public BaseTrackPlayer {
ControlLinPotmeter playposition;
ControlPushButton play;
ControlPushButton repeat;
ControlObject seekOnLoadMode;
ControlObject introStartPos;
ControlObject outroStartPos;
ControlObject outroEndPos;
Expand Down Expand Up @@ -280,9 +278,6 @@ TEST_F(AutoDJProcessorTest, EnabledSuccess_DecksStopped) {
AutoDJProcessor::AutoDJError err = pProcessor->toggleAutoDJ(true);
EXPECT_EQ(AutoDJProcessor::ADJ_OK, err);
EXPECT_EQ(AutoDJProcessor::ADJ_ENABLE_P1LOADED, pProcessor->getState());
// Makes decks 1 and 2 load tracks at intro cue point.
EXPECT_DOUBLE_EQ(static_cast<double>(SeekOnLoadMode::IntroStart), deck1.seekOnLoadMode.get());
EXPECT_DOUBLE_EQ(static_cast<double>(SeekOnLoadMode::IntroStart), deck2.seekOnLoadMode.get());
// Sets crossfader left and deck 1 playing.
EXPECT_DOUBLE_EQ(-1.0, master.crossfader.get());
// ADJ_ENABLE_P1LOADED logic does not set play directly. It waits for the
Expand Down Expand Up @@ -336,9 +331,6 @@ TEST_F(AutoDJProcessorTest, EnabledSuccess_DecksStopped_TrackLoadFails) {
AutoDJProcessor::AutoDJError err = pProcessor->toggleAutoDJ(true);
EXPECT_EQ(AutoDJProcessor::ADJ_OK, err);
EXPECT_EQ(AutoDJProcessor::ADJ_ENABLE_P1LOADED, pProcessor->getState());
// Makes decks 1 and 2 load tracks at intro cue point.
EXPECT_DOUBLE_EQ(static_cast<double>(SeekOnLoadMode::IntroStart), deck1.seekOnLoadMode.get());
EXPECT_DOUBLE_EQ(static_cast<double>(SeekOnLoadMode::IntroStart), deck2.seekOnLoadMode.get());
// Sets crossfader left.
EXPECT_DOUBLE_EQ(-1.0, master.crossfader.get());
// ADJ_ENABLE_P1LOADED logic does not set play directly. It waits for the
Expand Down Expand Up @@ -409,9 +401,6 @@ TEST_F(AutoDJProcessorTest, EnabledSuccess_DecksStopped_TrackLoadFailsRightDeck)
AutoDJProcessor::AutoDJError err = pProcessor->toggleAutoDJ(true);
EXPECT_EQ(AutoDJProcessor::ADJ_OK, err);
EXPECT_EQ(AutoDJProcessor::ADJ_ENABLE_P1LOADED, pProcessor->getState());
// Makes decks 1 and 2 load tracks at intro cue point.
EXPECT_DOUBLE_EQ(static_cast<double>(SeekOnLoadMode::IntroStart), deck1.seekOnLoadMode.get());
EXPECT_DOUBLE_EQ(static_cast<double>(SeekOnLoadMode::IntroStart), deck2.seekOnLoadMode.get());
// Sets crossfader left.
EXPECT_DOUBLE_EQ(-1.0, master.crossfader.get());
// ADJ_ENABLE_P1LOADED logic does not set play directly. It waits for the
Expand Down Expand Up @@ -487,10 +476,6 @@ TEST_F(AutoDJProcessorTest, EnabledSuccess_PlayingDeck1) {
EXPECT_EQ(AutoDJProcessor::ADJ_OK, err);
EXPECT_EQ(AutoDJProcessor::ADJ_IDLE, pProcessor->getState());

// Makes decks 1 and 2 load tracks at intro cue point.
EXPECT_DOUBLE_EQ(static_cast<double>(SeekOnLoadMode::IntroStart), deck1.seekOnLoadMode.get());
EXPECT_DOUBLE_EQ(static_cast<double>(SeekOnLoadMode::IntroStart), deck2.seekOnLoadMode.get());

EXPECT_DOUBLE_EQ(-1, master.crossfader.get());
EXPECT_DOUBLE_EQ(1.0, deck1.play.get());
EXPECT_DOUBLE_EQ(0.0, deck2.play.get());
Expand Down Expand Up @@ -532,10 +517,6 @@ TEST_F(AutoDJProcessorTest, EnabledSuccess_PlayingDeck1_TrackLoadFailed) {
EXPECT_EQ(AutoDJProcessor::ADJ_OK, err);
EXPECT_EQ(AutoDJProcessor::ADJ_IDLE, pProcessor->getState());

// Makes decks 1 and 2 load tracks at intro cue point.
EXPECT_DOUBLE_EQ(static_cast<double>(SeekOnLoadMode::IntroStart), deck1.seekOnLoadMode.get());
EXPECT_DOUBLE_EQ(static_cast<double>(SeekOnLoadMode::IntroStart), deck2.seekOnLoadMode.get());

// No change to the crossfader or play states.
EXPECT_DOUBLE_EQ(-1, master.crossfader.get());
EXPECT_DOUBLE_EQ(1.0, deck1.play.get());
Expand Down Expand Up @@ -590,10 +571,6 @@ TEST_F(AutoDJProcessorTest, EnabledSuccess_PlayingDeck2) {
EXPECT_EQ(AutoDJProcessor::ADJ_OK, err);
EXPECT_EQ(AutoDJProcessor::ADJ_IDLE, pProcessor->getState());

// Makes decks 1 and 2 load tracks at intro cue point.
EXPECT_DOUBLE_EQ(static_cast<double>(SeekOnLoadMode::IntroStart), deck1.seekOnLoadMode.get());
EXPECT_DOUBLE_EQ(static_cast<double>(SeekOnLoadMode::IntroStart), deck2.seekOnLoadMode.get());

// No change to the crossfader or play states.
EXPECT_DOUBLE_EQ(1.0, master.crossfader.get());
EXPECT_DOUBLE_EQ(0.0, deck1.play.get());
Expand Down Expand Up @@ -636,10 +613,6 @@ TEST_F(AutoDJProcessorTest, EnabledSuccess_PlayingDeck2_TrackLoadFailed) {
EXPECT_EQ(AutoDJProcessor::ADJ_OK, err);
EXPECT_EQ(AutoDJProcessor::ADJ_IDLE, pProcessor->getState());

// Makes decks 1 and 2 load tracks at intro cue point.
EXPECT_DOUBLE_EQ(static_cast<double>(SeekOnLoadMode::IntroStart), deck1.seekOnLoadMode.get());
EXPECT_DOUBLE_EQ(static_cast<double>(SeekOnLoadMode::IntroStart), deck2.seekOnLoadMode.get());

// No change to the crossfader or play states.
EXPECT_DOUBLE_EQ(1, master.crossfader.get());
EXPECT_DOUBLE_EQ(0.0, deck1.play.get());
Expand Down Expand Up @@ -681,10 +654,6 @@ TEST_F(AutoDJProcessorTest, EnabledDisabledSuccess) {
EXPECT_EQ(AutoDJProcessor::ADJ_OK, err);
EXPECT_EQ(AutoDJProcessor::ADJ_ENABLE_P1LOADED, pProcessor->getState());

// Makes decks 1 and 2 load tracks at intro cue point.
EXPECT_DOUBLE_EQ(static_cast<double>(SeekOnLoadMode::IntroStart), deck1.seekOnLoadMode.get());
EXPECT_DOUBLE_EQ(static_cast<double>(SeekOnLoadMode::IntroStart), deck2.seekOnLoadMode.get());

err = pProcessor->toggleAutoDJ(false);
EXPECT_EQ(AutoDJProcessor::ADJ_OK, err);
EXPECT_EQ(AutoDJProcessor::ADJ_DISABLED, pProcessor->getState());
Expand Down Expand Up @@ -733,13 +702,13 @@ TEST_F(AutoDJProcessorTest, FadeToDeck1_LoadOnDeck2_TrackLoadSuccess) {
EXPECT_DOUBLE_EQ(0.0, deck1.play.get());
EXPECT_DOUBLE_EQ(1.0, deck2.play.get());

// Expect that we will transition into P2FADING mode.
EXPECT_CALL(*pProcessor, emitAutoDJStateChanged(AutoDJProcessor::ADJ_P2FADING));
// Expect that we will transition into RIGHT_FADING mode.
EXPECT_CALL(*pProcessor, emitAutoDJStateChanged(AutoDJProcessor::ADJ_RIGHT_FADING));

// Pretend the track is over (should trigger an instant-fade).
deck2.playposition.set(1.0);

EXPECT_EQ(AutoDJProcessor::ADJ_P2FADING, pProcessor->getState());
EXPECT_EQ(AutoDJProcessor::ADJ_RIGHT_FADING, pProcessor->getState());
EXPECT_DOUBLE_EQ(1.0, master.crossfader.get());
EXPECT_DOUBLE_EQ(1.0, deck1.play.get());
EXPECT_DOUBLE_EQ(0.0, deck2.play.get());
Expand Down Expand Up @@ -815,13 +784,13 @@ TEST_F(AutoDJProcessorTest, FadeToDeck1_LoadOnDeck2_TrackLoadFailed) {
EXPECT_DOUBLE_EQ(0.0, deck1.play.get());
EXPECT_DOUBLE_EQ(1.0, deck2.play.get());

// Expect that we will transition into P2FADING mode.
EXPECT_CALL(*pProcessor, emitAutoDJStateChanged(AutoDJProcessor::ADJ_P2FADING));
// Expect that we will transition into RIGHT_FADING mode.
EXPECT_CALL(*pProcessor, emitAutoDJStateChanged(AutoDJProcessor::ADJ_RIGHT_FADING));

// Pretend the track is over (should trigger an instant-fade).
deck2.playposition.set(1.0);

EXPECT_EQ(AutoDJProcessor::ADJ_P2FADING, pProcessor->getState());
EXPECT_EQ(AutoDJProcessor::ADJ_RIGHT_FADING, pProcessor->getState());
EXPECT_DOUBLE_EQ(1.0, master.crossfader.get());
EXPECT_DOUBLE_EQ(1.0, deck1.play.get());
EXPECT_DOUBLE_EQ(0.0, deck2.play.get());
Expand Down Expand Up @@ -909,13 +878,13 @@ TEST_F(AutoDJProcessorTest, FadeToDeck2_LoadOnDeck1_TrackLoadSuccess) {
EXPECT_DOUBLE_EQ(1.0, deck1.play.get());
EXPECT_DOUBLE_EQ(0.0, deck2.play.get());

// Expect that we will transition into P1FADING mode.
EXPECT_CALL(*pProcessor, emitAutoDJStateChanged(AutoDJProcessor::ADJ_P1FADING));
// Expect that we will transition into LEFT_FADING mode.
EXPECT_CALL(*pProcessor, emitAutoDJStateChanged(AutoDJProcessor::ADJ_LEFT_FADING));

// Pretend the track is over (should trigger an instant-fade).
deck1.playposition.set(1.0);

EXPECT_EQ(AutoDJProcessor::ADJ_P1FADING, pProcessor->getState());
EXPECT_EQ(AutoDJProcessor::ADJ_LEFT_FADING, pProcessor->getState());
EXPECT_DOUBLE_EQ(-1.0, master.crossfader.get());
EXPECT_DOUBLE_EQ(0.0, deck1.play.get());
EXPECT_DOUBLE_EQ(1.0, deck2.play.get());
Expand Down Expand Up @@ -991,13 +960,13 @@ TEST_F(AutoDJProcessorTest, FadeToDeck2_LoadOnDeck1_TrackLoadFailed) {
EXPECT_DOUBLE_EQ(1.0, deck1.play.get());
EXPECT_DOUBLE_EQ(0.0, deck2.play.get());

// Expect that we will transition into P1FADING mode.
EXPECT_CALL(*pProcessor, emitAutoDJStateChanged(AutoDJProcessor::ADJ_P1FADING));
// Expect that we will transition into LEFT_FADING mode.
EXPECT_CALL(*pProcessor, emitAutoDJStateChanged(AutoDJProcessor::ADJ_LEFT_FADING));

// Pretend the track is over (should trigger an instant-fade).
deck1.playposition.set(1.0);

EXPECT_EQ(AutoDJProcessor::ADJ_P1FADING, pProcessor->getState());
EXPECT_EQ(AutoDJProcessor::ADJ_LEFT_FADING, pProcessor->getState());
EXPECT_DOUBLE_EQ(-1.0, master.crossfader.get());
EXPECT_DOUBLE_EQ(0.0, deck1.play.get());
EXPECT_DOUBLE_EQ(1.0, deck2.play.get());
Expand Down Expand Up @@ -1090,12 +1059,12 @@ TEST_F(AutoDJProcessorTest, FadeToDeck2_Long_Transition) {
EXPECT_EQ(AutoDJProcessor::ADJ_IDLE, pProcessor->getState());
EXPECT_DOUBLE_EQ(-1.0, master.crossfader.get());

// Expect that we will transition into P1FADING mode.
EXPECT_CALL(*pProcessor, emitAutoDJStateChanged(AutoDJProcessor::ADJ_P1FADING));
// Expect that we will transition into LEFT_FADING mode.
EXPECT_CALL(*pProcessor, emitAutoDJStateChanged(AutoDJProcessor::ADJ_LEFT_FADING));

// Seek track to 55 % it should fade
deck1.playposition.set(0.55);
EXPECT_EQ(AutoDJProcessor::ADJ_P1FADING, pProcessor->getState());
EXPECT_EQ(AutoDJProcessor::ADJ_LEFT_FADING, pProcessor->getState());

EXPECT_LT(-1.0, master.crossfader.get());

Expand All @@ -1107,7 +1076,7 @@ TEST_F(AutoDJProcessorTest, FadeToDeck2_Long_Transition) {

// Seek track to End
deck1.playposition.set(1.0);
EXPECT_EQ(AutoDJProcessor::ADJ_P1FADING, pProcessor->getState());
EXPECT_EQ(AutoDJProcessor::ADJ_LEFT_FADING, pProcessor->getState());

qDebug() << "master.crossfader.get()" << master.crossfader.get();

Expand Down Expand Up @@ -1163,14 +1132,14 @@ TEST_F(AutoDJProcessorTest, FadeToDeck2_Pause_Transition) {
EXPECT_DOUBLE_EQ(1.0, deck1.play.get());
EXPECT_DOUBLE_EQ(0.0, deck2.play.get());

// Expect that we will transition into P1FADING mode.
EXPECT_CALL(*pProcessor, emitAutoDJStateChanged(AutoDJProcessor::ADJ_P1FADING));
// Expect that we will transition into LEFT_FADING mode.
EXPECT_CALL(*pProcessor, emitAutoDJStateChanged(AutoDJProcessor::ADJ_LEFT_FADING));

// Seek track in deck1 to its end.
deck1.playposition.set(1.0);

// We should have transitioned into P1FADING.
EXPECT_EQ(AutoDJProcessor::ADJ_P1FADING, pProcessor->getState());
// We should have transitioned into LEFT_FADING.
EXPECT_EQ(AutoDJProcessor::ADJ_LEFT_FADING, pProcessor->getState());

// The track should have been seeked back by the duration of transition.
EXPECT_DOUBLE_EQ(-0.1, deck2.playposition.get());
Expand Down Expand Up @@ -1227,13 +1196,13 @@ TEST_F(AutoDJProcessorTest, FadeToDeck2_SeekEnd) {
// Seek deck 2 to the very end 99 %
deck2.playposition.set(0.99);

// Expect that we will transition into P1FADING mode.
EXPECT_CALL(*pProcessor, emitAutoDJStateChanged(AutoDJProcessor::ADJ_P1FADING));
// Expect that we will transition into LEFT_FADING mode.
EXPECT_CALL(*pProcessor, emitAutoDJStateChanged(AutoDJProcessor::ADJ_LEFT_FADING));

// Seek track to 99 % it should fade
// not 100 % because the final step is done by deck2
deck1.playposition.set(0.99);
EXPECT_EQ(AutoDJProcessor::ADJ_P1FADING, pProcessor->getState());
EXPECT_EQ(AutoDJProcessor::ADJ_LEFT_FADING, pProcessor->getState());

EXPECT_LT(-1.0, master.crossfader.get());

Expand Down Expand Up @@ -1295,12 +1264,12 @@ TEST_F(AutoDJProcessorTest, FadeToDeck2_RespectIntroCue) {
EXPECT_DOUBLE_EQ(1.0, deck1.play.get());
EXPECT_DOUBLE_EQ(0.0, deck2.play.get());

// Expect that we will transition into P1FADING mode.
EXPECT_CALL(*pProcessor, emitAutoDJStateChanged(AutoDJProcessor::ADJ_P1FADING));
// Expect that we will transition into LEFT_FADING mode.
EXPECT_CALL(*pProcessor, emitAutoDJStateChanged(AutoDJProcessor::ADJ_LEFT_FADING));

// Seek the outgoing track to where outro end cue is placed. It should fade.
deck1.playposition.set(0.9);
EXPECT_EQ(AutoDJProcessor::ADJ_P1FADING, pProcessor->getState());
EXPECT_EQ(AutoDJProcessor::ADJ_LEFT_FADING, pProcessor->getState());

// The incoming track should have been seeked back.
EXPECT_DOUBLE_EQ(-0.15, deck2.playposition.get());
Expand Down Expand Up @@ -1371,12 +1340,12 @@ TEST_F(AutoDJProcessorTest, FadeToDeck2_RespectOutroCue) {
EXPECT_EQ(AutoDJProcessor::ADJ_IDLE, pProcessor->getState());
EXPECT_DOUBLE_EQ(-1.0, master.crossfader.get());

// Expect that we will transition into P1FADING mode.
EXPECT_CALL(*pProcessor, emitAutoDJStateChanged(AutoDJProcessor::ADJ_P1FADING));
// Expect that we will transition into LEFT_FADING mode.
EXPECT_CALL(*pProcessor, emitAutoDJStateChanged(AutoDJProcessor::ADJ_LEFT_FADING));

// Seek track to 55 %. It should fade.
deck1.playposition.set(0.55);
EXPECT_EQ(AutoDJProcessor::ADJ_P1FADING, pProcessor->getState());
EXPECT_EQ(AutoDJProcessor::ADJ_LEFT_FADING, pProcessor->getState());

EXPECT_LT(-1.0, master.crossfader.get());

Expand Down
2 changes: 0 additions & 2 deletions src/test/cuecontrol_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ class CueControlTest : public BaseSignalPathTest {
BaseSignalPathTest::SetUp();

m_pQuantizeEnabled = std::make_unique<ControlProxy>(m_sGroup1, "quantize");
m_pSeekOnLoadMode = std::make_unique<ControlProxy>(m_sGroup1, "seekonload_mode");
m_pCuePoint = std::make_unique<ControlProxy>(m_sGroup1, "cue_point");
m_pIntroStartPosition = std::make_unique<ControlProxy>(m_sGroup1, "intro_start_position");
m_pIntroStartEnabled = std::make_unique<ControlProxy>(m_sGroup1, "intro_start_enabled");
Expand Down Expand Up @@ -55,7 +54,6 @@ class CueControlTest : public BaseSignalPathTest {
}

std::unique_ptr<ControlProxy> m_pQuantizeEnabled;
std::unique_ptr<ControlProxy> m_pSeekOnLoadMode;
std::unique_ptr<ControlProxy> m_pCuePoint;
std::unique_ptr<ControlProxy> m_pIntroStartPosition;
std::unique_ptr<ControlProxy> m_pIntroStartEnabled;
Expand Down
Loading

0 comments on commit c0052a9

Please sign in to comment.