From 13dc290ea78d2ca17474ef03e5752cac4896dfac Mon Sep 17 00:00:00 2001 From: Uwe Klotz Date: Sun, 10 Feb 2019 11:31:00 +0100 Subject: [PATCH 1/2] Fix compiler warnings --- src/effects/builtin/balanceeffect.cpp | 1 - src/effects/builtin/moogladder4filtereffect.cpp | 1 - src/util/denormalsarezero.h | 16 ++++++++++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/effects/builtin/balanceeffect.cpp b/src/effects/builtin/balanceeffect.cpp index b4ca00aedae9..41c23fe6bcb5 100644 --- a/src/effects/builtin/balanceeffect.cpp +++ b/src/effects/builtin/balanceeffect.cpp @@ -5,7 +5,6 @@ namespace { const double kMaxCornerHz = 500; const double kMinCornerHz = 16; - const unsigned int kStartupSamplerate = 44100; } // anonymous namespace // static diff --git a/src/effects/builtin/moogladder4filtereffect.cpp b/src/effects/builtin/moogladder4filtereffect.cpp index f73bfe6e780e..d0d622d9de1e 100644 --- a/src/effects/builtin/moogladder4filtereffect.cpp +++ b/src/effects/builtin/moogladder4filtereffect.cpp @@ -4,7 +4,6 @@ static const double kMinCorner = 0.0003; // 13 Hz @ 44100 static const double kMaxCorner = 0.5; // 22050 Hz @ 44100 -static const unsigned int kStartupSamplerate = 44100; // static QString MoogLadder4FilterEffect::getId() { diff --git a/src/util/denormalsarezero.h b/src/util/denormalsarezero.h index 0608154d02f3..694463d03947 100644 --- a/src/util/denormalsarezero.h +++ b/src/util/denormalsarezero.h @@ -1,6 +1,5 @@ -#ifndef DENORMALSAREZERO_H -#define DENORMALSAREZERO_H +#pragma once // This was copied from the gcc header pmmintrin.h which requires SSE3 // According to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=21408 @@ -12,18 +11,29 @@ // See: https://software.intel.com/en-us/articles/x87-and-sse-floating-point-assists-in-ia-32-flush-to-zero-ftz-and-denormals-are-zero-daz /* Additional bits in the MXCSR. */ +#if !defined(_MM_DENORMALS_ZERO_MASK) #define _MM_DENORMALS_ZERO_MASK 0x0040 +#endif +#if !defined(_MM_DENORMALS_ZERO_ON) #define _MM_DENORMALS_ZERO_ON 0x0040 +#endif +#if !defined(_MM_DENORMALS_ZERO_OFF) #define _MM_DENORMALS_ZERO_OFF 0x0000 +#endif #ifdef __SSE__ #include +#if !defined(_MM_SET_DENORMALS_ZERO_MODE) #define _MM_SET_DENORMALS_ZERO_MODE(mode) \ _mm_setcsr ((_mm_getcsr () & ~_MM_DENORMALS_ZERO_MASK) | (mode)) +#endif + +#if !defined(_MM_GET_DENORMALS_ZERO_MODE) #define _MM_GET_DENORMALS_ZERO_MODE() \ (_mm_getcsr() & _MM_DENORMALS_ZERO_MASK) +#endif #else @@ -35,5 +45,3 @@ #define _MM_GET_DENORMALS_ZERO_MODE() #endif - -#endif /* DENORMALSAREZERO_H */ From 398b291eca9c33841db9f38eefd9824541698d07 Mon Sep 17 00:00:00 2001 From: Uwe Klotz Date: Sun, 10 Feb 2019 11:58:27 +0100 Subject: [PATCH 2/2] Improve error handling for corrupt MP3 files ...thereby fixing compiler warnings. --- src/sources/soundsourcemp3.cpp | 40 ++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/src/sources/soundsourcemp3.cpp b/src/sources/soundsourcemp3.cpp index a4d1d89cbbef..d550b35208be 100644 --- a/src/sources/soundsourcemp3.cpp +++ b/src/sources/soundsourcemp3.cpp @@ -270,13 +270,20 @@ SoundSource::OpenResult SoundSourceMp3::tryOpen( } const ChannelCount madChannelCount(MAD_NCHANNELS(&madHeader)); - if (maxChannelCount.valid() && (madChannelCount != maxChannelCount)) { - kLogger.warning() << "Differing number of channels" - << madChannelCount << "<>" << maxChannelCount - << "in some MP3 frame headers:" + if (madChannelCount.valid()) { + if (maxChannelCount.valid() && (madChannelCount != maxChannelCount)) { + kLogger.warning() + << "Differing number of channels" + << madChannelCount << "<>" << maxChannelCount + << "in MP3 frame headers:" + << m_file.fileName(); + } + maxChannelCount = math_max(madChannelCount, maxChannelCount); + } else { + kLogger.warning() + << "Missing number of channels in MP3 frame header:" << m_file.fileName(); } - maxChannelCount = math_max(madChannelCount, maxChannelCount); const int sampleRateIndex = getIndexBySampleRate(SampleRate(madSampleRate)); if (sampleRateIndex >= kSampleRateCount) { @@ -321,7 +328,7 @@ SoundSource::OpenResult SoundSourceMp3::tryOpen( if (m_seekFrameList.empty()) { // This is not a working MP3 file. - kLogger.warning() << "SSMP3: This is not a working MP3 file:" + kLogger.warning() << "This is not a working MP3 file:" << m_file.fileName(); // Abort return OpenResult::Failed; @@ -354,15 +361,24 @@ SoundSource::OpenResult SoundSourceMp3::tryOpen( kLogger.warning() << "Mixxx tries to plays it with the most common sample rate for this file"; } - if (mostCommonSampleRateIndex < kSampleRateCount) { - setSampleRate(getSampleRateByIndex(mostCommonSampleRateIndex)); - } else { - kLogger.warning() << "No single valid sample rate in header"; + // Initialize the AudioSource + if (mostCommonSampleRateIndex > kSampleRateCount) { + kLogger.warning() + << "Unknown sample rate in MP3 file:" + << m_file.fileName(); + // Abort + return OpenResult::Failed; + } + setSampleRate(getSampleRateByIndex(mostCommonSampleRateIndex)); + if (!maxChannelCount.valid() || (maxChannelCount > kChannelCountMax)) { + kLogger.warning() + << "Invalid number of channels" + << maxChannelCount + << "in MP3 file:" + << m_file.fileName(); // Abort return OpenResult::Failed; } - - // Initialize the AudioSource setChannelCount(maxChannelCount); initFrameIndexRangeOnce(IndexRange::forward(0, m_curFrameIndex));