Поделиться через


Установка и регистрация кодировщика

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 , описывающей фильтр.