Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
примечание Эти сведения относятся к Windows XP и более ранним операционным системам. Начиная с Windows Vista IDirectSound::GetSpeakerConfig и IDirectSound::SetSpeakerConfig устарели.
DirectSound отслеживает текущий параметр конфигурации динамиков в реестре и применяет этот параметр к звуковому оборудованию при каждом создании нового устройства DirectSound.
Программа приложения может изменить конфигурацию динамиков на уровне системы, вызвав метод IDirectSound::SetSpeakerConfig , который обновляет параметр конфигурации говорящего в реестре. Метод также пытается применить новый параметр немедленно к оборудованию, хотя звуковые устройства обычно не могут изменять параметры динамиков во время существования объекта DirectSound. Список конфигураций динамиков, которые DirectSound определяет для этого метода, см. в разделе Перевод Speaker-Configuration запросов.
Пользователь может изменить конфигурацию с помощью диалогового окна конфигурации говорящего на странице "Свойства мультимедиа " (mmsys.cpl) на панели управления. Чтобы найти диалоговое окно конфигурации динамиков DirectSound в Windows XP, выполните следующие действия:
На панели управления дважды щелкните значок "Звуки и звуковые устройства ".
На вкладке "Звук" выберите устройство из списка воспроизведения звука .
Нажмите кнопку Advanced (Дополнительно).
Выберите вкладку "Динамики".
На этом этапе вы должны увидеть метку Настройка динамиков рядом со списком конфигураций динамиков, которые можно выбрать.
DirectSound использует запрос установки свойства KSPROPERTY_AUDIO_CHANNEL_CONFIG для отправки сведений о конфигурации динамиков на 3D-узел или узел DAC (KSNODETYPE_3D_EFFECTS или KSNODETYPE_DAC) в графе аудио-фильтра. Для трехмерного узла целевой объект для запроса свойства фактически является пин-кодом (объект 3D-stream), который передает узел. Для узла DAC целевой объект — это объект фильтра, содержащий узел DAC. В любом случае параметр конфигурации динамиков является глобальным и влияет на звуковое устройство в целом. Все звуковые приложения, которые впоследствии выполняются, подвергаются новому параметру, пока DirectSound снова не изменит параметр.
Обратите внимание, что только версии DirectSound, поставляемые с Windows Me, Windows XP и более поздними версиями, отправляют запросы свойств конфигурации динамиков на узлы DAC. Более ранние версии DirectSound не поддерживают эту функцию. Однако все версии DirectSound отправляют эти запросы на трехмерные узлы.
Если программа приложения создала несколько трехмерных узлов, DirectSound отправляет запросы конфигурации динамика только на первый 3D-узел, который был создан.
DirectSound отправляет запросы конфигурации говорящего на узлы 3D и DAC каждый раз, когда приложение создает объект DirectSound или вызывает метод IDirectSound::SetSpeakerConfig . Звуковые устройства обычно не могут изменять конфигурацию динамиков во время управления активными потоками, и DirectSound пытается избежать этого ограничения по возможности. Например, при создании объекта DirectSound, DirectSound отправляет запросы конфигурации динамиков после создания экземпляра фильтра, но до того, как на фильтре будут созданы штифты, то есть до создания любых потоков.
Это ограничение сложнее избежать в случае вызова SetSpeakerConfig. Когда приложение вызывает SetSpeakerConfig, драйвер адаптера обычно завершает запрос конфигурации говорящего DirectSound. Это связано с тем, что объект DirectSound уже существует, что означает, что устройство уже имеет активные потоки для управления.
В этой ситуации драйвер адаптера имеет два варианта для работы с запросом конфигурации динамиков, который завершился неудачей.
Драйвер может запомнить запрошенную конфигурацию и применить её, как только все его потоки будут уничтожены.
Драйвер может игнорировать запрос и полагаться на DirectSound, чтобы отправить другой запрос конфигурации говорящего при следующем создании объекта DirectSound.
Первый вариант обеспечивает лучший пользовательский интерфейс, так как если пользователь выбирает новый параметр через диалоговое окно конфигурации говорящего, изменение вступает в силу сразу же во всех приложениях, а не только в приложениях DirectSound. (Конечно, если все звуковые приложения выполняются во время выбора нового параметра, изменение откладывается до завершения всех звуковых приложений.) Однако при втором варианте изменения не вступают в силу, пока не будет запущено приложение DirectSound. Например, если приложение, использующее API waveOut мультимедиа Windows, будет первым запущенным приложением после изменения настройки в панели управления, пользователь может задаться вопросом, почему новое изменение не оказывает заметного эффекта.
В ответ на запрос конфигурации динамиков, отправленный на 3D-узел или узел DAC, типичный драйвер адаптера обновляет конфигурацию динамиков в звуковом оборудовании, только если пин-коды в настоящее время не создаются любым звуковым приложением. Это означает, что если приложение waveOut, например, имеет один или несколько каналов открытыми, когда второе приложение вызывает DirectSoundCreate, драйвер может потребоваться отложить любые предстоящие изменения конфигурации динамиков звукового устройства на более позднее время.
Если драйвер не может выполнить запрос на изменение конфигурации динамиков устройства, он должен просто отклонить запрос. Сбой запроса конфигурации говорящего во время создания объекта DirectSound или вызова SetSpeakerConfig не приводит к сбою вызова объекта DirectSound или SetSpeakerConfig .
Во время загрузки драйвер аудиоадаптера инициализирует конфигурацию динамиков оборудования в его параметре по умолчанию, который обычно является стерео. Как только любое приложение создает объект DirectSound, DirectSound применяет параметр, хранящийся в реестре, к оборудованию. Программа приложения должна создать устройство DirectSound, прежде чем он может вызвать SetSpeakerConfig , чтобы изменить параметры конфигурации говорящего в реестре, но этот параметр реестра обычно действует в оборудовании только после выпуска устройства DirectSound и второго устройства DirectSound.
Сразу после установки звукового устройства или при возникновении ошибки конфигурации динамиков конфигурация DirectSound по умолчанию использует стерео.