diff options
author | Daniel Schürmann <daschuer@mixxx.org> | 2023-05-07 17:28:47 +0200 |
---|---|---|
committer | Daniel Schürmann <daschuer@mixxx.org> | 2023-05-07 17:28:47 +0200 |
commit | 9273a4a40f4b74285823cff2a0b725bc3539aadb (patch) | |
tree | 3adbf7cc00fdee5eec7719cebee2bc6866769838 | |
parent | 767573ae6feceb3dabacb1dd6f74f70d879d7020 (diff) | |
parent | 47b056f0b3fca82cba6e99a50daa6ecedfc542d7 (diff) |
Merge remote-tracking branch 'upstream/2.3' into 2.4
-rw-r--r-- | CHANGELOG.md | 52 | ||||
-rw-r--r-- | packaging/debian/changelog | 6 | ||||
-rw-r--r-- | res/linux/org.mixxx.Mixxx.metainfo.xml | 88 | ||||
-rw-r--r-- | src/analyzer/analyzersilence.cpp | 2 | ||||
-rw-r--r-- | src/test/analyserwaveformtest.cpp | 56 | ||||
-rw-r--r-- | src/test/reference_buffers/AnalyzerWaveformsTest | bin | 0 -> 485 bytes | |||
-rw-r--r-- | src/widget/wtrackmenu.cpp | 4 |
7 files changed, 202 insertions, 6 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ea9281f69..d8d6b7f21c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -880,6 +880,58 @@ * Tango: Remove VU peak indicators from stacked layout. This fixes a visual regression in Mixxx 2.3.4. [#11430](https://github.com/mixxxdj/mixxx/pull/11430) [#11362](https://github.com/mixxxdj/mixxx/issues/11362) +* Hercules P32: Allow optional using pregain instead of dry/wet knob + [#3538](https://github.com/mixxxdj/mixxx/pull/3538) +* Improve Color Picker dialog + [#11439](https://github.com/mixxxdj/mixxx/pull/11439) +* Fix blank Waveform overview after changing Skin with a track loaded + [#11453](https://github.com/mixxxdj/mixxx/pull/11453) +* Linux: Log a warning when the audio thread is not scheduled with real-time policy + [#11472](https://github.com/mixxxdj/mixxx/pull/11472) + [#11465](https://github.com/mixxxdj/mixxx/issues/11465) +* Auto DJ: Fixes stop due to tracks with changed length + [#11479](https://github.com/mixxxdj/mixxx/pull/11479) + [#11492](https://github.com/mixxxdj/mixxx/pull/11492) + [#11448](https://github.com/mixxxdj/mixxx/issues/11448) + * Auto DJ: Fix Auto DJ indicator state when controlling it via shortcut (SHIFT+F12) + [#11494](https://github.com/mixxxdj/mixxx/issues/11494) + [#11495](https://github.com/mixxxdj/mixxx/pull/11495) +* Fix building with Clang 15/16 + [#11490](https://github.com/mixxxdj/mixxx/pull/11490) + [#11485](https://github.com/mixxxdj/mixxx/pull/11485) +* Fix EQ and waveforms analysis when compiling with GCC 13 + [#11501](https://github.com/mixxxdj/mixxx/pull/11501) + [#11483](https://github.com/mixxxdj/mixxx/issues/11483) + [#11502](https://github.com/mixxxdj/mixxx/pull/11502) + [#11480](https://github.com/mixxxdj/mixxx/pull/11480) + [#11488](https://github.com/mixxxdj/mixxx/pull/11488) +* Numark Mixtrack Pro FX: Fix sound output via WDM-KS on Windows + [#11393](https://github.com/mixxxdj/mixxx/issues/11393) +* Fix crash on startup caused by faulty ASIO driver like FlexASIO 1.4 or Music Maker + [#11426](https://github.com/mixxxdj/mixxx/issues/11426) + [#10081](https://github.com/mixxxdj/mixxx/issues/10081) +* Windows: Show a loopback device that allows to mix in system sound + [#11427](https://github.com/mixxxdj/mixxx/issues/11427) + [#11451](https://github.com/mixxxdj/mixxx/issues/11451) +* Fix sorting via column header in external library features + [#11491](https://github.com/mixxxdj/mixxx/issues/11491) + [#11499](https://github.com/mixxxdj/mixxx/pull/11499) +* Fix wrong waveform background color on recent Linux distributions like Fedora 37 + [#11164](https://github.com/mixxxdj/mixxx/issues/11164) + [#11523](https://github.com/mixxxdj/mixxx/pull/11523) +* Serato Metadata: Don't import empty (black) cue points + [#11534](https://github.com/mixxxdj/mixxx/pull/11534) + [#11530](https://github.com/mixxxdj/mixxx/issues/11530) + [#11467](https://github.com/mixxxdj/mixxx/pull/11467) + [#11466](https://github.com/mixxxdj/mixxx/pull/11466) + [#11283](https://github.com/mixxxdj/mixxx/issues/11283) +* Track context menu: Immediately adopt new position when resetting cues + [#11482](https://github.com/mixxxdj/mixxx/pull/11482) +* Windows: Fix possible crash with faulty mp3 files + [#11535](https://github.com/mixxxdj/mixxx/pull/11535) + [#11531](https://github.com/mixxxdj/mixxx/issues/11531) + [#11528](https://github.com/mixxxdj/mixxx/pull/11528) + [#11521](https://github.com/mixxxdj/mixxx/issues/11521) ## [2.3.4](https://launchpad.net/mixxx/+milestone/2.3.4) (2023-03-03) diff --git a/packaging/debian/changelog b/packaging/debian/changelog index 133591df69..3ac10cd950 100644 --- a/packaging/debian/changelog +++ b/packaging/debian/changelog @@ -1,3 +1,9 @@ +mixxx (2.3.4-1~bionic) bionic; urgency=medium + + * Build of 2.3.4 + + -- RJ Skerry-Ryan <rryan@mixxx.org> Fri, 03 Mar 2023 15:00:16 +0000 + mixxx (2.3.3-1~bionic) bionic; urgency=medium * Build of 2.3.3 diff --git a/res/linux/org.mixxx.Mixxx.metainfo.xml b/res/linux/org.mixxx.Mixxx.metainfo.xml index be867e9fcb..cfd0bc706c 100644 --- a/res/linux/org.mixxx.Mixxx.metainfo.xml +++ b/res/linux/org.mixxx.Mixxx.metainfo.xml @@ -96,7 +96,7 @@ Do not edit it manually. --> <releases> - <release version="2.4.0" type="development" date="2023-04-03" timestamp="1680480478"> + <release version="2.4.0" type="development" date="2023-05-05" timestamp="1683306291"> <description> <p> Cover Art @@ -1529,7 +1529,7 @@ </ul> </description> </release> - <release version="2.3.5" type="development" date="2023-04-03" timestamp="1680480478"> + <release version="2.3.5" type="development" date="2023-05-05" timestamp="1683306291"> <description> <ul> <li> @@ -1588,6 +1588,90 @@ #11430 #11362 </li> + <li> + Hercules P32: Allow optional using pregain instead of dry/wet knob + #3538 + </li> + <li> + Improve Color Picker dialog + #11439 + </li> + <li> + Fix blank Waveform overview after changing Skin with a track loaded + #11453 + </li> + <li> + Linux: Log a warning when the audio thread is not scheduled with real-time policy + #11472 + #11465 + </li> + <li> + Auto DJ: Fixes stop due to tracks with changed length + #11479 + #11492 + #11448 + </li> + <li> + Auto DJ: Fix Auto DJ indicator state when controlling it via shortcut (SHIFT+F12) + #11494 + #11495 + </li> + <li> + Fix building with Clang 15/16 + #11490 + #11485 + </li> + <li> + Fix EQ and waveforms analysis when compiling with GCC 13 + #11501 + #11483 + #11502 + #11480 + #11488 + </li> + <li> + Numark Mixtrack Pro FX: Fix sound output via WDM-KS on Windows + #11393 + </li> + <li> + Fix crash on startup caused by faulty ASIO driver like FlexASIO 1.4 or Music Maker + #11426 + #10081 + </li> + <li> + Windows: Show a loopback device that allows to mix in system sound + #11427 + #11451 + </li> + <li> + Fix sorting via column header in external library features + #11491 + #11499 + </li> + <li> + Fix wrong waveform background color on recent Linux distributions like Fedora 37 + #11164 + #11523 + </li> + <li> + Serato Metadata: Don't import empty (black) cue points + #11534 + #11530 + #11467 + #11466 + #11283 + </li> + <li> + Track context menu: Immediately adopt new position when resetting cues + #11482 + </li> + <li> + Windows: Fix possible crash with faulty mp3 files + #11535 + #11531 + #11528 + #11521 + </li> </ul> </description> </release> diff --git a/src/analyzer/analyzersilence.cpp b/src/analyzer/analyzersilence.cpp index 5e57053633..c93820b91e 100644 --- a/src/analyzer/analyzersilence.cpp +++ b/src/analyzer/analyzersilence.cpp @@ -132,7 +132,7 @@ void AnalyzerSilence::storeResults(TrackPointer pTrack) { pN60dBSound->setStartAndEndPosition(firstSoundPosition, lastSoundPosition); } - setupMainAndIntroCue(pTrack.get(), firstSoundPosition, m_pConfig.get()); + setupMainAndIntroCue(pTrack.get(), firstSoundPosition, m_pConfig.data()); setupOutroCue(pTrack.get(), lastSoundPosition); } diff --git a/src/test/analyserwaveformtest.cpp b/src/test/analyserwaveformtest.cpp index ad6a4ad2a8..91be1adc39 100644 --- a/src/test/analyserwaveformtest.cpp +++ b/src/test/analyserwaveformtest.cpp @@ -11,10 +11,11 @@ namespace { -constexpr std::size_t kBigBufSize = 1024 * 1024; // Megabyte +constexpr std::size_t kBigBufSize = 2 * 1920; // Matches the WaveformSummary constexpr std::size_t kCanarySize = 1024 * 4; constexpr float kMagicFloat = 1234.567890f; constexpr float kCanaryFloat = 0.0f; +const QString kReferenceBuffersPath = QStringLiteral("/src/test/reference_buffers/"); class AnalyzerWaveformTest : public MixxxTest { protected: @@ -45,6 +46,49 @@ class AnalyzerWaveformTest : public MixxxTest { } } + void assertWaveformReference( + ConstWaveformPointer pWaveform, + const QString& reference_title) { + pWaveform->dump(); + + QFile f(QDir::currentPath() + kReferenceBuffersPath + reference_title); + bool pass = true; + // If the file is not there, we will fail and write out the .actual + // reference file. + QByteArray actual = pWaveform->toByteArray(); + QByteArray reference; + + ASSERT_TRUE(f.open(QFile::ReadOnly)); + reference = f.readAll(); + + if (actual.size() == reference.size()) { + for (int i = 0; i < actual.size(); ++i) { + if (actual[i] != reference[i]) { + qDebug() << "#" << i << QString::number(actual[i], 16) + << QString::number(reference[i], 16); + pass = false; + } + } + } else { + qDebug() << "##" << actual.size() << reference.size(); + pass = false; + } + + // Fail if either we didn't pass, or the comparison file was empty. + if (!pass) { + QString fname_actual = reference_title + ".actual"; + qWarning() << "Buffer does not match" << reference_title + << ", actual buffer written to " + << "reference_buffers/" + fname_actual; + QFile actualFile(QDir::currentPath() + kReferenceBuffersPath + fname_actual); + ASSERT_TRUE(actualFile.open(QFile::WriteOnly)); + actualFile.write(actual); + actualFile.close(); + EXPECT_TRUE(false); + } + f.close(); + } + void TearDown() override { } @@ -70,6 +114,16 @@ TEST_F(AnalyzerWaveformTest, canary) { for (; i < 2 * kCanarySize + kBigBufSize; i++) { EXPECT_FLOAT_EQ(m_canaryBigBuf[i], kCanaryFloat); } + + // Small reference, compare bitwise + assertWaveformReference(m_pTrack->getWaveform(), "AnalyzerWaveformsTest"); + + // The summary is always big, so we check only the metadata + ConstWaveformPointer pWaveformSummary = m_pTrack->getWaveformSummary(); + ASSERT_NE(pWaveformSummary, nullptr); + EXPECT_EQ(pWaveformSummary->getDataSize(), 3842); + EXPECT_EQ(pWaveformSummary->getCompletion(), 3842); + EXPECT_DOUBLE_EQ(pWaveformSummary->getAudioVisualRatio(), 1.0); } } // namespace diff --git a/src/test/reference_buffers/AnalyzerWaveformsTest b/src/test/reference_buffers/AnalyzerWaveformsTest Binary files differnew file mode 100644 index 0000000000..7b38eebe47 --- /dev/null +++ b/src/test/reference_buffers/AnalyzerWaveformsTest diff --git a/src/widget/wtrackmenu.cpp b/src/widget/wtrackmenu.cpp index 35aa937f49..d4bc7877bd 100644 --- a/src/widget/wtrackmenu.cpp +++ b/src/widget/wtrackmenu.cpp @@ -1701,7 +1701,7 @@ class ResetMainCueTrackPointerOperation : public mixxx::TrackPointerOperation { if (pN60dBSound) { mixxx::audio::FramePos firstSound = pN60dBSound->getPosition(); if (firstSound.isValid()) { - AnalyzerSilence::setupMainAndIntroCue(pTrack.get(), firstSound, m_pConfig.get()); + AnalyzerSilence::setupMainAndIntroCue(pTrack.get(), firstSound, m_pConfig.data()); } } } @@ -1723,7 +1723,7 @@ class ResetIntroTrackPointerOperation : public mixxx::TrackPointerOperation { if (pN60dBSound) { mixxx::audio::FramePos firstSound = pN60dBSound->getPosition(); if (firstSound.isValid()) { - AnalyzerSilence::setupMainAndIntroCue(pTrack.get(), firstSound, m_pConfig.get()); + AnalyzerSilence::setupMainAndIntroCue(pTrack.get(), firstSound, m_pConfig.data()); } } } |