Немой объем SDL в C ++ - PullRequest
       26

Немой объем SDL в C ++

0 голосов
/ 09 августа 2011

Как отключить звук с помощью SDL в C ++?
Динамики подключены к разъему для наушников.Если громкость не включена, я могу слышать фоновый шум, но когда я выключаю звук (с помощью «amixer set Headphone mute»), он останавливается.Я пытался Mix_VolumeMusic () и Mix_Volume (), чтобы установить громкость на ноль, чтобы добиться того же, но он просто меняет музыку voulme, шум все еще там.

Среда:
Debian Sqeeze
Пакет: libsdl1.2-dev
Версия: 1.2.14-6.1

1 Ответ

0 голосов
/ 10 августа 2011

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

Хотя я не рекомендую исправлять проблемы с программным обеспечением с помощью аппаратного обеспечения, похоже, что лучше использовать звуковую карту.Кроме того, вы, вероятно, получите лучший звук, если будете использовать задние разъемы на компьютере, чем передние.Я всегда слышал много шума от тонких звуковых кабелей, которые подключаются к материнской плате.

...