Программирование звука в DirectSound
Страница 9. DSBCAPS - параметры звукового буфера



DSBCAPS - параметры звукового буфера

Структура описывает возможности и параметры существующего звукового буфера. Для удобства определен тип LPCDSBCAPS - константный указатель на тип DSBCAPS.

DWORD   dwSize;
DWORD   dwFlags;
DWORD   dwBufferBytes;
DWORD   dwUnlockTransferRate;
DWORD   dwPlayCpuOverhead;
  • dwSize - размер структуры в байтах;
  • dwFlags - флаги возможностей, параметров и режимов буфера. Имена констант флагов имеют префикс DSBCAPS_:/

PRIMARYBUFFER

Буфер является первичным. Если флаг не установлен - буфер является вторичным

STATIC

Буфер является статическим

LOCHARDWARE

Буфер размещается в памяти адаптера

LOCSOFTWARE

Буфер размещается в основной памяти

LOCDEFER

Размещение буфера в определенном типе памяти отложено до момента его активизации

CTRL3D

Допускается управление пространственным звучанием (координаты, скорость, ориентация и т.п.). Флаг относится к расширению DirectSound3D

CTRLFREQUENCY

Допускается управление частотой дискретизации

CTRLPAN

Допускается управление панорамой (стереобалансом)

CTRLVOLUME

Допускается управление громкостью

CTRLPOSITIONNOTIFY

Допускается заказ уведомлений о достижении заданных позиций буфера. Перед проигрыванием такого буфера необходимо заказать уведомление посредством интерфейса IDirectSoundNotify

GETCURRENTPOSITION2

Метод GetCurrentPosition возвращает более правильное положение позиции воспроизведения для эмулируемых устройств. В первой версии DirectX, за счет задержек при эмуляции метод возвращал позицию, значительно опережающую реальное звучание. В последующих версиях была введена компенсация, вычисление которой включается при задании этого флага

GLOBALFOCUS

Источник звука, представленный буфером, является глобальным и будет звучать независимо от того, является приложение текущим (foreground) или нет. Однако, если текущим становится приложение с исключительным или более высоким уровнем взаимодействия, <чужие> источники звука всегда заглушаются

STICKYFOCUS

Источник звука, представленный буфером, будет звучать при переключении на приложения, не использующие DirectSound. Обычные источники, не объявленные глобальными, заглушаются, если текущим становится другое приложение. Этим флагом рекомендуется снабжать источники фонового звука - например, музыки. Однако, если текущим становится приложение, использующее DirectSound, источники с этим флагом также заглушаются

MUTE3DATMAXDISTANCE

Звучание источника должно быть остановлено при достижении максимального расстояния от слушателя, где звук перестает быть слышимым. В этот момент DirectSound прекращает снижать громкость источника и останавливает его, во избежание лишних расходов. При уменьшении расстояния звучание будет запущено автоматически. Этот флаг относится только к буферам, описывающим пространственные источники

Необходимо иметь в виду, что даже если звук источников, помеченных как звучащие в фоне (когда приложение не является текущим), будет слышен при переключении на другое приложение, то этот звук может приводиться к другому формату. Например, если одно приложение использует стереофонический формат и фоновые источники и происходит переключение на приложение, устанавливающее монофонический формат, звук от фоновых источников также станет монофоническим. Если текущее приложение устанавливает менее качественный формат - звук от более качественных фоновых источников может приобретать заметные искажения вследствие понижения разрядности и/или частоты дискретизации; 

  • dwBufferBytes - размер буфера в байтах;
  • dwUnlockTransferRate - скорость загрузки данных в буфер (килобайт в секунду). Для буферов, расположенных в основной памяти, скорость обычно значительно выше, чем для расположенных в памяти адаптера. Это значение позволяет оценить время выполнения метода Unlock, осуществляющего пересылку данных в буфер;
  • dwPlayCpuOverhead - доля процессорного времени (в %), необходимая для добавления (смешивания) звучания данного буфера в общий звук. Для буферов с аппаратным смешиванием это значение равно нулю, для программно смешиваемых оно зависит от скорости процессора, формата этого и первичного буферов.

 

 
« Предыдущая статья   Следующая статья »