Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При реализации драйвера для выгрузки звука вы разрабатываете драйвер, который может обрабатывать выгруженные звуковые потоки, а также предоставлять эту возможность звуковой системе Windows.
В этом разделе представлены сведения о реализации звукового драйвера, разработанного для звукового адаптера, который может обрабатывать аппаратные выгруженные звуковые потоки.
В этих дополнительных разделах рассматриваются проблемы, которые следует учитывать при разработке звукового драйвера для звукового адаптера, реализующего аппаратный звуковой модуль для обработки отключенных аудиопотоков.
Вспомогательные интерфейсы Portcls для разгруженной обработки аудио
Отчеты о глитчах для отключенных звуковых
Разгрузка оборудования — топология фильтров KS
Windows поддерживает использование звукового адаптера, который может использовать аппаратный аппаратный звуковой модуль для обработки звуковых потоков. При разработке такого звукового адаптера связанный звуковой драйвер должен выявлять данный факт для аудиосистемы в пользовательском режиме определенным образом, чтобы аудиосистема могла обнаруживать, использовать и корректно раскрывать функции этого адаптера и его драйвера.
GUID KSNODETYPE_AUDIO_ENGINE для дескрипторов узлов
Если звуковой адаптер может обрабатывать отключенные звуковые потоки, звуковой драйвер адаптера предоставляет эту возможность с помощью узла в фильтре KS для адаптера.
Если звуковой адаптер может обрабатывать отключенные звуковые потоки, звуковой драйвер адаптера предоставляет эту возможность с помощью определенного узла в фильтре KS для адаптера.
Каждый узел в пути аудиопотока имеет дескриптор узла; для аппаратной разгрузки драйвер должен задать GUID типа на KSNODETYPE_AUDIO_ENGINE.
Ниже приведен пример того, как драйвер может настроить дескриптор узла для этого узла:
typedef struct _KSNODE_DESCRIPTOR {
const KSAUTOMATION_TABLE *AutomationTable; // drv specific
const GUID *Type; // must be set to KSNODETYPE_AUDIO_ENGINE
const GUID *Name; // drv specific (KSNODETYPE_AUDIO_ENGINE?)
} KSNODE_DESCRIPTOR, *PKSNODE_DESCRIPTOR;
Если для GUID имени задано значение KSNODETYPE_AUDIO_ENGINE, необходимо создать строку имени по умолчанию для этого узла. Затем вы добавите эту строку в ks.inf, чтобы во время установки драйвера можно использовать строку для заполнения раздела реестра MediaCategories .
Определение GUID для типа узла KSNODETYPE_AUDIO_ENGINE выглядит следующим образом:
Code style
#define STATIC_KSNODETYPE_AUDIO_ENGINE\
0x35caf6e4, 0xf3b3, 0x4168, 0xbb, 0x4b, 0x55, 0xe7, 0x7a, 0x46, 0x1c, 0x7e
DEFINE_GUIDSTRUCT("35CAF6E4-F3B3-4168-BB4B-55E77A461C7E", KSNODETYPE_AUDIO_ENGINE);
#define KSNODETYPE_AUDIO_ENGINE DEFINE_GUIDNAMED(KSNODETYPE_AUDIO_ENGINE)
Дополнительные сведения см. в файле заголовка ksmedia.h .
И на основе предыдущих сведений дескриптор для мини-порта может выглядеть следующим образом:
PCNODE_DESCRIPTOR MiniportNodes[] =
{
// KSNODE_WAVE_AUDIO_ENGINE
{
0, // Flags
NULL, // AutomationTable
&KSNODETYPE_AUDIO_ENGINE, // Type KSNODETYPE_AUDIO_ENGINE
NULL // Name
}
};
Набор свойств KSPROPSETID_AudioEngine KS для аудиодвижков.
Набор свойств KSPROPSETID_AudioEngine используется для поддержки аппаратных аудиодвижков и аппаратно-выгруженной обработки звука. Поэтому драйвер адаптера, который может обрабатывать отключенные звуковые потоки, должен поддерживать свойства в этом новом наборе свойств.
Набор свойств, KSPROPSETID_AudioEngine, определяется следующим образом:
#define STATIC_KSPROPSETID_AudioEngine\
0x3A2F82DCL, 0x886F, 0x4BAA, 0x9E, 0xB4, 0x8, 0x2B, 0x90, 0x25, 0xC5, 0x36
DEFINE_GUIDSTRUCT("3A2F82DC-886F-4BAA-9EB4-082B9025C536", KSPROPSETID_AudioEngine);
#define KSPROPSETID_AudioEngine DEFINE_GUIDNAMED(KSPROPSETID_AudioEngine)
Имена свойств в этом наборе свойств определяются в перечислении KSPROPERTY_AUDIOENGINE , и драйвер должен поддерживать эти имена.
Ниже приведены свойства в наборе свойств KSPROPSETID_AudioEngine :
KSPROPERTY_AUDIOENGINE_BUFFER_SIZE_RANGE
KSPROPERTY_AUDIOENGINE_DESCRIPTOR
KSPROPERTY_AUDIOENGINE_DEVICEFORMAT
KSPROPERTY_AUDIOENGINE_GFXENABLE
KSPROPERTY_AUDIOENGINE_LFXENABLE
KSPROPERTY_AUDIOENGINE_LOOPBACK_PROTECTION
KSPROPERTY_AUDIOENGINE_MIXFORMAT
KSPROPERTY_AUDIOENGINE_SUPPORTEDDEVICEFORMATS
KSPROPERTY_AUDIOENGINE_VOLUMELEVEL
Обязательные свойства в наборе свойств KSPROPSETID_ Audio
Помимо поддержки свойств в наборе свойств KSPROPSETID_AudioEngine драйвер также должен поддерживать следующие существующие свойства в наборе свойств KSPROPSETID_Audio :
Чтобы завершить реализацию поддержки драйверов для аппаратной разгрузки звуковой обработки, в наборе свойств KSPROPSETID_Audio доступны необходимые свойства.
KSPROPERTY_AUDIO_LINEAR_BUFFER_POSITION
KSPROPERTY_AUDIO_PRESENTATION_POSITION
KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION
Обновления драйверов класса портов и отчеты о сбоях
Помимо поддержки, описанной в предыдущих разделах для аппаратной разгрузки аудиообработки, драйвер порта Windows предоставляет вспомогательные интерфейсы, чтобы упростить разработку драйвера, который может работать с разгруженными аудиопотоками. И когда такой драйвер обнаруживает сбои, существует механизм, позволяющий водителю сообщать об ошибках сбоя. В следующих разделах содержатся дополнительные сведения об вспомогательных интерфейсах и отчетах о сбоях.
Вспомогательные интерфейсы Portcls для разгрузки обработки звука Помимо поддержки, описанной в предыдущих разделах для аппаратной разгрузки аудиообработки, драйвер класса портов Windows также включает вспомогательные интерфейсы, чтобы упростить разработку драйвера, который может работать с разгруженными звуковыми потоками. И когда такой драйвер обнаруживает сбои, существует механизм, позволяющий водителю сообщать об ошибках сбоя. В следующих разделах содержатся дополнительные сведения об вспомогательных интерфейсах и отчетах о сбоях.