Установка и регистрация кодировщика
INF-файл для драйвера с фильтром кодировщика должен содержать записи, определяющие следующее:
Дополнительные компоненты записи потоковой передачи ядра
Какой COM-интерфейс KsProxy должен предоставлять
Значения метаданных, описывающие возможности фильтра кодировщика
Категория потоковой передачи ядра фильтра
Дополнительные компоненты записи потоковой передачи ядра
INF-файл, используемый для установки драйвера для устройства кодировщика, должен ссылаться на ks.inf и kscaptur.inf в разделе [DefaultInstall] в качестве драйверов записи, так как эти файлы добавляют необходимую поддержку компонентов кодировщика. Пример:
[DefaultInstall]
include=ks.inf,kscaptur.inf
needs=[Your driver's DDInstall section],KS.Registration,KSCAPTUR.Registration.NT
Какой COM-интерфейс KsProxy должен предоставлять
В разделе AddReg INF-файла драйвера укажите один из следующих трех идентификаторов GUID, чтобы указать COM-интерфейс, который подключаемый модуль KsProxy (encapi.dll) должен предоставлять клиентам. Com-интерфейс определяется поддержкой свойства, реализованной в фильтре кодировщика:
GUID интерфейса | Имя | Описание |
---|---|---|
{B43C4EEC-8C32-4791-9102-508ADA5EE8E7} |
CLSID_IVideoEncoderProxy |
Укажите этот GUID, чтобы KsProxy предоставил com-интерфейс IVideoEncoder (для обеспечения обратной совместимости с поддержкой кодировщика более старого поколения, предоставляемой корпорацией Майкрософт). Клиенты должны наследовать этот интерфейс от COM-интерфейса IEncoderAPI . |
{7FF0997A-1999-4286-A73C-622B8814E7EB} |
CLSID_ICodecAPIProxy |
Укажите этот GUID, чтобы KsProxy предоставлял com-интерфейс ICodecAPI (для устройств, не являющихся кодировщиками видео, таких как аудиокодировщики). |
{B05DABD9-56E5-4FDC-AFA4-8A47E91F1C9C} |
CLSID_IVideoEncoderCodecAPIProxy |
Укажите этот GUID, чтобы KsProxy предоставлял интерфейсы COM IVideoEncoder и ICodecAPI (для обратной и прямой совместимости). |
Пример:
[Your driver's AddReg section]
HKR,Interfaces\{B43C4EEC-8C32-4791-9102-508ADA5EE8E7},,,
Это приведет к тому, что KsProxy будет предоставлять только com-интерфейс IVideoEncoder (CLSID_IVideoEncoderProxy).
Эти COM-интерфейсы описаны в разделе DirectShow в пакетах SDK для DirectX 9 и Windows для Windows XP с пакетом обновления 1 (SP1) и более поздних версий.
Значения метаданных, объявляющие возможности фильтра кодировщика
Значения метаданных можно указать в области Параметры устройства\Возможности реестра в INF-файле кодировщика. Приложения могут использовать эти значения метаданных, чтобы определить, какие функции следует реализовать или предоставить пользователю.
Пример:
[Your driver's AddReg section]
HKR,Capabilities,,,
HKR,Capabilities,"{12345678-1234-1234-1234-12345678abcd}",,guid1
Это приведет к созданию элемента метаданных "{12345678-1234-1234-1234-12345678abcd} = guid1" в области Параметры устройства\Возможности параметров реестра кодировщика. Пустая строка необходима для создания раздела реестра, если он еще не существует.
Фильтр кодировщика может указывать такие статические метаданные в INF-файле для использования приложениями. Например, Windows XP Media Center Edition проверяет наличие кодировщиков, указывающих, что они совместимы с Windows XP Media Center Edition.
Категория потоковой передачи ядра фильтра
Фильтры потоковой передачи ядра должны указывать категорию потоковой передачи ядра, к которой они относятся. Корпорация Майкрософт определяет идентификаторы GUID для общих категорий, включая фильтры кодировщика и мультиплексорные фильтры .
Фильтры указывают соответствующие категории, указывая один или несколько следующих идентификаторов GUID в директиве AddInterface раздела фильтра INF-файла своего мини-драйвера:
Идентификатор GUID категории потоковой передачи ядра | Имя | Описание |
---|---|---|
{19689BF6-C384-48FD-AD51-90E58C79F70B} |
KSCATEGORY_ENCODER |
Укажите этот GUID для фильтров кодировщика. |
{7A5DE1D3-01A1-452C-B481-4FA2B96271E8} |
KSCATEGORY_MULTIPLEXER |
Укажите этот GUID для фильтров мультиплекса. |
Чтобы зарегистрировать фильтр кодировщика, укажите guid KSCATEGORY_ENCODER в DDInstall драйвера. Интерфейс Раздел INF-файла. Пример:
[Your Driver's DDInstall.Interface section]
AddInterface=%KSCATEGORY_ENCODER%,%KSNAME_Filter%,MyEncoderDevice.AddInterface
[MyEncoderDevice.AddInterface]
AddReg=MyEncoderDevice.AddReg
[MyEncoderDevice.AddReg]
HKR,,CLSID,,%KSProxy.CLSID%
HKR,,FriendlyName,,%MyEncoderDeviceFriendlyName%
[Strings]
KSCATEGORY_ENCODER="{19689BF6-C384-48FD-AD51-90E58C79F70B}"
KSNAME_Filter="{9B365890-165F-11D0-A195-0020AFD156E4}"
KSProxy.CLSID="17CCA71B-ECD7-11D0-B908-00A0C9223196"
MyEncoderDeviceFriendlyName="My Encoder Device"
Примечание: Guid, указанный для KSNAME_Filter , должен соответствовать элементу ReferenceGuid , указанному в структуре KSFILTER_DESCRIPTOR , описывающей фильтр.