Я не думаю, что SDL имеет функцию отключения звука помимо того, что вы делаете, хотя я даже не вижу этих функций в документации на веб-сайте libsdl.org .Глядя на API, я предполагаю, что он просто управляет внутренним программным микшером (регулятор громкости PCM находится в списке пожеланий SDL 1.3), но вы можете проверить это, отрегулировав громкость и подняв настройки громкости системы с помощью alsamixer ( ключ для выхода).Грязный обходной путь - использовать системный вызов для выполнения программы amixer.Вам нужно иметь #include <stdlib.h>
и запустить system("amixer set Headphone mute");
.Кроме того, я бы искал что-то еще, например alsa, для реального отключения звука и написал бы свою собственную функцию отключения звука, чтобы ее можно было легко заменить позже.Если вам нужна поддержка Windows, вы можете написать в ней свой блок #ifdef _WIN32/#else/#endif
.
Хотя я не рекомендую исправлять проблемы с программным обеспечением с помощью аппаратного обеспечения, похоже, что лучше использовать звуковую карту.Кроме того, вы, вероятно, получите лучший звук, если будете использовать задние разъемы на компьютере, чем передние.Я всегда слышал много шума от тонких звуковых кабелей, которые подключаются к материнской плате.