From 488faeb17214dbea0ad858c813e71ca4b3a4072e Mon Sep 17 00:00:00 2001 From: Uwe Klotz Date: Mon, 2 Mar 2020 11:49:03 +0100 Subject: Reformat code: Wrap long lines --- src/track/cue.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'src/track/cue.cpp') diff --git a/src/track/cue.cpp b/src/track/cue.cpp index b171b1244d..e11cb432af 100644 --- a/src/track/cue.cpp +++ b/src/track/cue.cpp @@ -21,7 +21,8 @@ void CuePointer::deleteLater(Cue* pCue) { } } -Cue::Cue(TrackId trackId) +Cue::Cue( + TrackId trackId) : m_bDirty(false), m_iId(-1), m_trackId(trackId), @@ -34,7 +35,15 @@ Cue::Cue(TrackId trackId) DEBUG_ASSERT(!m_label.isNull()); } -Cue::Cue(int id, TrackId trackId, mixxx::CueType type, double position, double length, int hotCue, QString label, PredefinedColorPointer color) +Cue::Cue( + int id, + TrackId trackId, + mixxx::CueType type, + double position, + double length, + int hotCue, + QString label, + PredefinedColorPointer color) : m_bDirty(false), m_iId(id), m_trackId(trackId), @@ -55,7 +64,10 @@ Cue::Cue(int id, TrackId trackId, mixxx::CueType type, double position, double l } } -Cue::Cue(TrackId trackId, mixxx::AudioSignal::SampleRate sampleRate, const mixxx::CueInfo& cueInfo) +Cue::Cue( + TrackId trackId, + mixxx::AudioSignal::SampleRate sampleRate, + const mixxx::CueInfo& cueInfo) : m_bDirty(false), m_iId(-1), m_trackId(trackId), -- cgit v1.2.3 From ed2ca0191f6e90617b634b619dad7cd4ca49e47f Mon Sep 17 00:00:00 2001 From: Uwe Klotz Date: Mon, 2 Mar 2020 12:02:59 +0100 Subject: Read CueInfo from Cue object --- src/track/cue.cpp | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'src/track/cue.cpp') diff --git a/src/track/cue.cpp b/src/track/cue.cpp index e11cb432af..00ebbd4493 100644 --- a/src/track/cue.cpp +++ b/src/track/cue.cpp @@ -11,7 +11,21 @@ #include "util/color/color.h" namespace { - const QString kDefaultLabel = ""; // empty string, not null + +const QString kDefaultLabel = ""; // empty string, not null + +inline std::optional samplePositionToMillis( + double samplePosition, + mixxx::AudioSignal::SampleRate sampleRate) { + DEBUG_ASSERT(sampleRate.valid()); + if (samplePosition == Cue::kNoPosition) { + return std::nullopt; + } + const auto sampleRateKhz = sampleRate / 1000.0; + DEBUG_ASSERT(sampleRateKhz > 0.0); + return samplePosition / (sampleRateKhz * mixxx::kEngineChannelCount); +} + } //static @@ -97,6 +111,24 @@ Cue::Cue( } } +void Cue::readInfo( + mixxx::AudioSignal::SampleRate sampleRate, + mixxx::CueInfo* pCueInfo, + bool* pDirty) const { + DEBUG_ASSERT(pCueInfo); + QMutexLocker lock(&m_mutex); + *pCueInfo = mixxx::CueInfo( + m_type, + samplePositionToMillis(m_sampleStartPosition, sampleRate), + samplePositionToMillis(m_sampleEndPosition, sampleRate), + m_iHotCue == kNoHotCue ? std::nullopt : std::make_optional(m_iHotCue), + m_label, + m_color ? mixxx::RgbColor::fromQColor(m_color->m_defaultRgba) : std::nullopt); + if (pDirty) { + *pDirty = m_bDirty; + } +} + int Cue::getId() const { QMutexLocker lock(&m_mutex); return m_iId; -- cgit v1.2.3 From 7cb8c0abb578b6bbda797fc4ba152ced70d99f8f Mon Sep 17 00:00:00 2001 From: Uwe Klotz Date: Wed, 4 Mar 2020 08:54:31 +0100 Subject: Return CueInfo by value --- src/track/cue.cpp | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) (limited to 'src/track/cue.cpp') diff --git a/src/track/cue.cpp b/src/track/cue.cpp index 00ebbd4493..59b77dc358 100644 --- a/src/track/cue.cpp +++ b/src/track/cue.cpp @@ -111,22 +111,16 @@ Cue::Cue( } } -void Cue::readInfo( - mixxx::AudioSignal::SampleRate sampleRate, - mixxx::CueInfo* pCueInfo, - bool* pDirty) const { - DEBUG_ASSERT(pCueInfo); +mixxx::CueInfo Cue::getCueInfo( + mixxx::AudioSignal::SampleRate sampleRate) const { QMutexLocker lock(&m_mutex); - *pCueInfo = mixxx::CueInfo( + return mixxx::CueInfo( m_type, samplePositionToMillis(m_sampleStartPosition, sampleRate), samplePositionToMillis(m_sampleEndPosition, sampleRate), m_iHotCue == kNoHotCue ? std::nullopt : std::make_optional(m_iHotCue), m_label, m_color ? mixxx::RgbColor::fromQColor(m_color->m_defaultRgba) : std::nullopt); - if (pDirty) { - *pDirty = m_bDirty; - } } int Cue::getId() const { -- cgit v1.2.3 From fd89721c8206fc2d496974a23f7b3e2925d943bd Mon Sep 17 00:00:00 2001 From: Uwe Klotz Date: Thu, 5 Mar 2020 21:58:35 +0100 Subject: Replace integer literal with constant --- src/track/cue.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/track/cue.cpp') diff --git a/src/track/cue.cpp b/src/track/cue.cpp index 59b77dc358..862a0171fe 100644 --- a/src/track/cue.cpp +++ b/src/track/cue.cpp @@ -43,7 +43,7 @@ Cue::Cue( m_type(mixxx::CueType::Invalid), m_sampleStartPosition(Cue::kNoPosition), m_sampleEndPosition(Cue::kNoPosition), - m_iHotCue(-1), + m_iHotCue(Cue::kNoHotCue), m_label(kDefaultLabel), m_color(Color::kPredefinedColorsSet.noColor) { DEBUG_ASSERT(!m_label.isNull()); -- cgit v1.2.3 From 02c6e58d10f919addc5dc2a50e61c0d6a287b771 Mon Sep 17 00:00:00 2001 From: Uwe Klotz Date: Thu, 5 Mar 2020 21:58:57 +0100 Subject: Use null string instead of empty string as default --- src/track/cue.cpp | 3 --- 1 file changed, 3 deletions(-) (limited to 'src/track/cue.cpp') diff --git a/src/track/cue.cpp b/src/track/cue.cpp index 862a0171fe..7ffbcded6e 100644 --- a/src/track/cue.cpp +++ b/src/track/cue.cpp @@ -12,8 +12,6 @@ namespace { -const QString kDefaultLabel = ""; // empty string, not null - inline std::optional samplePositionToMillis( double samplePosition, mixxx::AudioSignal::SampleRate sampleRate) { @@ -44,7 +42,6 @@ Cue::Cue( m_sampleStartPosition(Cue::kNoPosition), m_sampleEndPosition(Cue::kNoPosition), m_iHotCue(Cue::kNoHotCue), - m_label(kDefaultLabel), m_color(Color::kPredefinedColorsSet.noColor) { DEBUG_ASSERT(!m_label.isNull()); } -- cgit v1.2.3 From 9723f6f02563189f94592cd00d811b7ba350a0cf Mon Sep 17 00:00:00 2001 From: Uwe Klotz Date: Fri, 6 Mar 2020 17:08:09 +0100 Subject: Fix inconsistencies and debug assertions --- src/track/cue.cpp | 3 --- 1 file changed, 3 deletions(-) (limited to 'src/track/cue.cpp') diff --git a/src/track/cue.cpp b/src/track/cue.cpp index 7ffbcded6e..e21edee3a3 100644 --- a/src/track/cue.cpp +++ b/src/track/cue.cpp @@ -43,7 +43,6 @@ Cue::Cue( m_sampleEndPosition(Cue::kNoPosition), m_iHotCue(Cue::kNoHotCue), m_color(Color::kPredefinedColorsSet.noColor) { - DEBUG_ASSERT(!m_label.isNull()); } Cue::Cue( @@ -63,7 +62,6 @@ Cue::Cue( m_iHotCue(hotCue), m_label(label), m_color(color) { - DEBUG_ASSERT(!m_label.isNull()); if (length) { if (position != Cue::kNoPosition) { m_sampleEndPosition = position + length; @@ -88,7 +86,6 @@ Cue::Cue( m_iHotCue(Cue::kNoHotCue), m_label(cueInfo.getLabel()), m_color(Color::kPredefinedColorsSet.predefinedColorFromRgbColor(cueInfo.getColor())) { - DEBUG_ASSERT(!m_label.isNull()); DEBUG_ASSERT(sampleRate.valid()); const double sampleRateKhz = sampleRate / 1000.0; -- cgit v1.2.3 From 34288906c59c6108d5f8885780d1698d6a0600b9 Mon Sep 17 00:00:00 2001 From: Uwe Klotz Date: Sat, 7 Mar 2020 02:01:20 +0100 Subject: Add cue conversion tests --- src/track/cue.cpp | 71 +++++++++++++++++++++++++++---------------------------- 1 file changed, 35 insertions(+), 36 deletions(-) (limited to 'src/track/cue.cpp') diff --git a/src/track/cue.cpp b/src/track/cue.cpp index e21edee3a3..c6fd9fdb4c 100644 --- a/src/track/cue.cpp +++ b/src/track/cue.cpp @@ -12,16 +12,30 @@ namespace { -inline std::optional samplePositionToMillis( - double samplePosition, +inline std::optional positionSamplesToMillis( + double positionSamples, mixxx::AudioSignal::SampleRate sampleRate) { - DEBUG_ASSERT(sampleRate.valid()); - if (samplePosition == Cue::kNoPosition) { + VERIFY_OR_DEBUG_ASSERT(sampleRate.valid()) { + return Cue::kNoPosition; + } + if (positionSamples == Cue::kNoPosition) { return std::nullopt; } - const auto sampleRateKhz = sampleRate / 1000.0; - DEBUG_ASSERT(sampleRateKhz > 0.0); - return samplePosition / (sampleRateKhz * mixxx::kEngineChannelCount); + // Try to avoid rounding errors + return (positionSamples * 1000) / (sampleRate * mixxx::kEngineChannelCount); +} + +inline double positionMillisToSamples( + std::optional positionMillis, + mixxx::AudioSignal::SampleRate sampleRate) { + VERIFY_OR_DEBUG_ASSERT(sampleRate.valid()) { + return Cue::kNoPosition; + } + if (!positionMillis) { + return Cue::kNoPosition; + } + // Try to avoid rounding errors + return (*positionMillis * sampleRate * mixxx::kEngineChannelCount) / 1000; } } @@ -33,11 +47,9 @@ void CuePointer::deleteLater(Cue* pCue) { } } -Cue::Cue( - TrackId trackId) +Cue::Cue() : m_bDirty(false), m_iId(-1), - m_trackId(trackId), m_type(mixxx::CueType::Invalid), m_sampleStartPosition(Cue::kNoPosition), m_sampleEndPosition(Cue::kNoPosition), @@ -74,35 +86,22 @@ Cue::Cue( } Cue::Cue( - TrackId trackId, - mixxx::AudioSignal::SampleRate sampleRate, - const mixxx::CueInfo& cueInfo) + const mixxx::CueInfo& cueInfo, + mixxx::AudioSignal::SampleRate sampleRate) : m_bDirty(false), m_iId(-1), - m_trackId(trackId), m_type(cueInfo.getType()), - m_sampleStartPosition(Cue::kNoPosition), - m_sampleEndPosition(Cue::kNoPosition), - m_iHotCue(Cue::kNoHotCue), + m_sampleStartPosition( + positionMillisToSamples( + cueInfo.getStartPositionMillis(), + sampleRate)), + m_sampleEndPosition( + positionMillisToSamples( + cueInfo.getEndPositionMillis(), + sampleRate)), + m_iHotCue(cueInfo.getHotCueNumber() ? *cueInfo.getHotCueNumber() : kNoHotCue), m_label(cueInfo.getLabel()), m_color(Color::kPredefinedColorsSet.predefinedColorFromRgbColor(cueInfo.getColor())) { - DEBUG_ASSERT(sampleRate.valid()); - - const double sampleRateKhz = sampleRate / 1000.0; - const double millisecsToSamplesFactor = sampleRateKhz * mixxx::kEngineChannelCount; - DEBUG_ASSERT(millisecsToSamplesFactor > 0); - - if (cueInfo.getStartPositionMillis()) { - m_sampleStartPosition = (*cueInfo.getStartPositionMillis()) * millisecsToSamplesFactor; - } - - if (cueInfo.getEndPositionMillis()) { - m_sampleEndPosition = (*cueInfo.getEndPositionMillis()) * millisecsToSamplesFactor; - } - - if (cueInfo.getHotCueNumber()) { - m_iHotCue = *cueInfo.getHotCueNumber(); - } } mixxx::CueInfo Cue::getCueInfo( @@ -110,8 +109,8 @@ mixxx::CueInfo Cue::getCueInfo( QMutexLocker lock(&m_mutex); return mixxx::CueInfo( m_type, - samplePositionToMillis(m_sampleStartPosition, sampleRate), - samplePositionToMillis(m_sampleEndPosition, sampleRate), + positionSamplesToMillis(m_sampleStartPosition, sampleRate), + positionSamplesToMillis(m_sampleEndPosition, sampleRate), m_iHotCue == kNoHotCue ? std::nullopt : std::make_optional(m_iHotCue), m_label, m_color ? mixxx::RgbColor::fromQColor(m_color->m_defaultRgba) : std::nullopt); -- cgit v1.2.3 From 234ff0afa4e0a1cf4e935eebbc95985fc2322108 Mon Sep 17 00:00:00 2001 From: Uwe Klotz Date: Sat, 7 Mar 2020 16:21:57 +0100 Subject: Fix remaining debug assertions --- src/track/cue.cpp | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/track/cue.cpp') diff --git a/src/track/cue.cpp b/src/track/cue.cpp index c6fd9fdb4c..c5dc66f862 100644 --- a/src/track/cue.cpp +++ b/src/track/cue.cpp @@ -207,8 +207,6 @@ QString Cue::getLabel() const { } void Cue::setLabel(const QString label) { - //qDebug() << "setLabel()" << m_label << "-" << label; - DEBUG_ASSERT(!label.isNull()); QMutexLocker lock(&m_mutex); m_label = label; m_bDirty = true; -- cgit v1.2.3