mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-01-25 22:40:26 -05:00
Additional pair of parameters has been added to current implementation of equalizer to enable changing playback path gain during audio path fine-tuning
86 lines
2.6 KiB
C++
86 lines
2.6 KiB
C++
// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#define CATCH_CONFIG_MAIN
|
|
#include "catch2/catch.hpp"
|
|
|
|
#include <Audio/Profiles/ProfileConfigUtils.hpp>
|
|
#include <purefs/filesystem_paths.hpp>
|
|
|
|
TEST_CASE("QFilterCoefficients - overloaded operator test")
|
|
{
|
|
audio::equalizer::QFilterCoefficients coeffs1{1, 1, 1, 1, 1}, coeffs2{1, 1, 1, 1, 1};
|
|
|
|
SECTION("Equals")
|
|
{
|
|
REQUIRE(coeffs1 == coeffs2);
|
|
}
|
|
|
|
SECTION("Differs 1/5")
|
|
{
|
|
coeffs1.b0 = 2;
|
|
REQUIRE(coeffs1 != coeffs2);
|
|
}
|
|
|
|
SECTION("Differs 2/5")
|
|
{
|
|
coeffs2.b1 = 2;
|
|
REQUIRE(coeffs1 != coeffs2);
|
|
}
|
|
|
|
SECTION("Differs 3/5")
|
|
{
|
|
coeffs1.a1 = 2;
|
|
REQUIRE(coeffs1 != coeffs2);
|
|
}
|
|
|
|
SECTION("Differs 4/5")
|
|
{
|
|
coeffs2.a2 = 2;
|
|
REQUIRE(coeffs1 != coeffs2);
|
|
}
|
|
|
|
SECTION("Differs 5/5")
|
|
{
|
|
coeffs2.b2 = 2;
|
|
REQUIRE(coeffs1 != coeffs2);
|
|
}
|
|
}
|
|
|
|
TEST_CASE("Audio profile config utils")
|
|
{
|
|
SECTION("Loading config from json file")
|
|
{
|
|
auto config = audio::loadConfigurationFromFile("testfiles/testProfile.json");
|
|
|
|
REQUIRE(config.sampleRate_Hz == 44100);
|
|
REQUIRE(config.bitWidth == 8);
|
|
REQUIRE(config.flags == 1);
|
|
REQUIRE(config.inputGain == 2.0);
|
|
REQUIRE(config.outputVolume == 1.0);
|
|
REQUIRE(config.inputPath == audio::codec::InputPath::None);
|
|
REQUIRE(config.outputPath == audio::codec::OutputPath::None);
|
|
REQUIRE(config.playbackPathGain == 2);
|
|
REQUIRE(config.playbackPathAtten == 3);
|
|
|
|
audio::equalizer::Equalizer filterCoefficients = {
|
|
qfilter_CalculateCoeffs(audio::equalizer::FilterType::None, 1000.2f, 44100, 0.7f, 10),
|
|
qfilter_CalculateCoeffs(audio::equalizer::FilterType::HighPass, 2000.0f, 8000, 1.7f, -10),
|
|
qfilter_CalculateCoeffs(audio::equalizer::FilterType::LowPass, 10000.0f, 44100, 0.75f, 2.5),
|
|
qfilter_CalculateCoeffs(audio::equalizer::FilterType::Notch, 2500.0f, 44100, 4.4f, 5.3),
|
|
qfilter_CalculateCoeffs(audio::equalizer::FilterType::BandPass, 1000, 44100, 0.7f, 10)};
|
|
|
|
for (size_t i = 0; i < audio::equalizer::bands; i++) {
|
|
REQUIRE(config.filterCoefficients.at(i) == filterCoefficients.at(i));
|
|
}
|
|
}
|
|
|
|
SECTION("Checking if fallback values are loaded when playback path parameters are out of range")
|
|
{
|
|
auto config = audio::loadConfigurationFromFile("testfiles/testProfileFallback.json");
|
|
|
|
REQUIRE(config.playbackPathGain == 0);
|
|
REQUIRE(config.playbackPathAtten == 5);
|
|
}
|
|
}
|