diff --git a/src/media/audio/audiolayer.cpp b/src/media/audio/audiolayer.cpp
index e45e740393743f98d0e16448aa091c571aec8a82..29382c04d2536dbfad26bb87e5475f15cd488540 100644
--- a/src/media/audio/audiolayer.cpp
+++ b/src/media/audio/audiolayer.cpp
@@ -155,13 +155,10 @@ AudioLayer::setHasNativeAEC(bool hasNativeAEC)
 void
 AudioLayer::createAudioProcessor()
 {
-    auto nb_channels = std::min(audioFormat_.nb_channels, audioInputFormat_.nb_channels);
-    auto sample_rate = std::min(audioFormat_.sample_rate, audioInputFormat_.sample_rate);
+    auto nb_channels = std::max(audioFormat_.nb_channels, audioInputFormat_.nb_channels);
+    auto sample_rate = std::max(audioFormat_.sample_rate, audioInputFormat_.sample_rate);
 
-    // TODO: explain/rework this math??
-    if (sample_rate % 16000u != 0)
-        sample_rate = 16000u * ((sample_rate / 16000u) + 1u);
-    sample_rate = std::clamp(sample_rate, 16000u, 96000u);
+    sample_rate = std::clamp(sample_rate, 16000u, 48000u);
 
     AudioFormat formatForProcessor {sample_rate, nb_channels};