在 Windows XP Service Pack 1 中,Microsoft 在 ksmedia.h 中定義了三個核心串流屬性集和一個列舉,以支援僅限視訊的編碼器裝置。 每個屬性集都包含單一屬性。 換句話說,每個屬性都會收到自己的屬性集。 如果您的驅動程式進行 get-property 或 Set-property 呼叫,請在 KSPROPERTY 結構的 Set 成員中指定屬性集的 GUID (如 ksmedia.h 中所定義) ,並在設定呼叫時在 Id 成員中指定零:
| 屬性集 | 說明 |
|---|---|
| ENCAPIPARAM_BITRATE | 實作此屬性集,以指定編碼器裝置支援的編碼位元速率。 如需詳細資訊,請參閱編碼器程式碼範例。 |
| ENCAPIPARAM_BITRATE_MODE | 實作此屬性集,以指定裝置支援的編碼模式。 此屬性集會使用 VIDEOENCODER_BITRATE_MODE 列舉來指定支援的模式。 如需詳細資訊,請參閱編碼器程式碼範例。 |
| ENCAPIPARAM_PEAK_BITRATE | 實作此屬性集,以指定裝置的最大編碼位元速率。 |
用戶端會從 IEncoderAPI COM 介面衍生 IVideoEncoder COM 介面來存取這些屬性 (Windows 軟體開發套件 (SDK) 檔中所述) 。
迷你驅動程式必須為每個 ENCAPIPARAM_Xxx 屬性指定預設值。 編碼器程式碼範例主題示範如何指定預設屬性值。 在編碼器過濾器的開發和除錯期間,可以從支援 ENCAPIPARAM_BITRATE 屬性集的迷你驅動程式中啟動當前的屬性頁。
在 DirectX 9.0 中, ksmedia.h 中定義了六個額外的屬性集和一個事件集,以更好地支援更廣泛的編碼器,包括僅限音訊的編碼器。 如同 ENCAPIPARAM_Xxx 屬性,每個屬性都會收到自己的屬性集:
| 屬性集 | 說明 |
|---|---|
| CODECAPI_VIDEO_ENCODER | 如果您的裝置支援編碼視訊串流 (包括輔助音訊,例如電視音訊),請實作此屬性集的支援。 |
| CODECAPI_AUDIO_ENCODER | 如果您的裝置是純音訊編碼器,請實作此屬性集的支援,而不是CODECAPI_VIDEO_ENCODER。 |
| CODECAPI_SETALLDEFAULTS | 實作此屬性集,以重設編碼器裝置的所有內部設定,例如編碼位元速率和編碼模式為其預設值。 |
| CODECAPI_ALLSETTINGS | 實作此屬性集,以傳達編碼器裝置的目前設定。 此屬性集用於與用戶端之間的通訊。 |
| CODECAPI_SUPPORTSEVENTS | 如果您的裝置支援使用者模式中的事件,例如變更編碼模式、位元速率或其他設定,請實作此屬性集。 如果您實作此屬性集,則也必須實作CODECAPI_CHANGELISTS事件的支援。 |
| CODECAPI_CURRENTCHANGELIST | 實作此屬性集,以判斷在先前呼叫中變更哪些編碼器參數,以設定一或多個編碼器屬性。 |
| 事件集合 | 說明 |
|---|---|
如果裝置支援藉由 CODECAPI_SUPPORTSEVENTS 屬性集來回應使用者模式事件,那麼請實作此事件集,以傳回因用戶端先前呼叫 CODECAPI_SETALLDEFAULTS 或 CODECAPI_ALLSETTINGS Set 屬性而變更的編碼器設定清單。 |
用戶端會透過 ICodecAPI COM 介面存取這些屬性 (在 Windows SDK 檔中所述) 。 如需 COM 介面的詳細資訊,請參閱 編碼 器安裝和註冊 ,包括如何指定 KsProxy 應該公開的介面。
迷你驅動程式應該實作基本 get-property 查詢的支援。 編碼器程式碼範例主題示範如何支援取得屬性查詢。
開發編碼器篩選器時,請將編碼功能移至與視訊擷取篩選器不同的篩選中。 定義您自己的私人媒體,以便圖形建構器可以正確連接編碼器和擷取篩選器。 如果您的硬體能夠匯流排掌握非編碼內容,那麼您也可以公開公共媒體。 如果您同時實作公有和私有媒體,請先列出私有媒體,因為它會減少圖形建置時間;在建立篩選器圖表時尋找正確的篩選器。
如需有關使用介質和篩選器的多個實例(在不同的篩選圖中)的詳細資訊,請參閱 媒體和類別。