具有編碼器過濾器的驅動程式 INF 檔案必須包含定義下列專案的條目:
其他核心串流擷取元件
KsProxy 應該公開哪個 COM 介面
描述編碼器篩選功能的中繼資料值
篩選器的核心串流類別
其他核心串流擷取元件
用來安裝編碼器裝置驅動程式的 INF 檔案必須在其 [DefaultInstall] 區段中參考 ks.inf 和 kscaptur.inf 作為擷取驅動程式,因為這些檔案會新增編碼器元件的必要支援。 例如:
[DefaultInstall]
include=ks.inf,kscaptur.inf
needs=[Your driver's DDInstall section],KS.Registration,KSCAPTUR.Registration.NT
哪些 COM 介面 KsProxy 應該公開
在驅動程式 INF 檔案的 AddReg 區段中,指定下列三個 GUID 之一,以指出 KsProxy 外掛程式 (encapi.dll) 應該公開給用戶端的 COM 介面。 COM 介面是由您在編碼器篩選中實作的屬性支援所決定:
| 介面 GUID | 名稱 | 說明 |
|---|---|---|
{B43C4EEC-8C32-4791-9102-508ADA5EE8E7} |
CLSID_IVideoEncoderProxy |
指定此 GUID 讓 KsProxy 顯露 IVideoEncoder COM 介面,以便與 Microsoft 所提供的舊世代編碼器支援向下相容。 用戶端必須從 IEncoderAPI COM 介面衍生此介面。 |
{7FF0997A-1999-4286-A73C-622B8814E7EB} |
CLSID_ICodecAPIProxy |
指定此 GUID ,讓 KsProxy 公開 ICodecAPI COM 介面 (適用於非視訊編碼裝置,例如純音訊編碼器) 。 |
{B05DABD9-56E5-4FDC-AFA4-8A47E91F1C9C} |
CLSID_IVideoEncoderCodecAPIProxy |
指定此 GUID ,讓 KsProxy 公開 IVideoEncoder 和 ICodecAPI COM 介面 (,以取得回溯和向前相容性) 。 |
例如:
[Your driver's AddReg section]
HKR,Interfaces\{B43C4EEC-8C32-4791-9102-508ADA5EE8E7},,,
這會導致 KsProxy 只公開 IVideoEncoder (CLSID_IVideoEncoderProxy) COM 介面。
這些 COM 介面記載於適用於 Windows XP SP1 和更新版本的 DirectX 9 和 Windows SDK 的 DirectShow 區段。
公告編碼器篩選功能的中繼資料值
您可以在編碼器 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 規範。
篩選器的核心串流類別
核心串流篩選必須指定它們所屬的核心串流類別。 Microsoft 會定義常見類別的 GUID,包括編碼器篩選器和多工器 (mux) 篩選器。
篩選會在其迷你驅動程式 INF 檔案中篩選區段的 AddInterface 指示詞中指定下列一或多個 GUID,以指出其各自的類別:
| 內核串流類別 GUID | 名稱 | 說明 |
|---|---|---|
{19689BF6-C384-48FD-AD51-90E58C79F70B} |
KSCATEGORY_ENCODER |
請指定此 GUID 來用於編碼器篩選。 |
{7A5DE1D3-01A1-452C-B481-4FA2B96271E8} |
KSCATEGORY_MULTIPLEXER |
指定此 GUID 給 Mux 篩選器。 |
若要註冊編碼器篩選,請在驅動程式的 DDInstall 中指定KSCATEGORY_ENCODER GUID。界面 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"
注意:針對KSNAME_Filter指定的 GUID 必須符合您在描述篩選器的KSFILTER_DESCRIPTOR結構中指定的 ReferenceGuid 成員。