Страница 9 из 22
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 - доля процессорного времени (в %), необходимая для добавления (смешивания) звучания данного буфера в общий звук. Для буферов с аппаратным смешиванием это значение равно нулю, для программно смешиваемых оно зависит от скорости процессора, формата этого и первичного буферов.
|