[與此頁面相關聯的功能,DirectShow是舊版功能。 它已被 MediaPlayer、imfMediaEngine 取代,並在媒體基金會 音訊/視訊擷取。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能在媒體 基礎中使用 MediaPlayer、IMFMediaEngine 和 音訊/視訊擷取,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]
IMediaParamInfo::GetParamInfo 方法會傳回描述參數的 MP_PARAMINFO 結構。 此結構包含下列資訊:
- mpType 成員表示參數值的數據類型。 為了提高效率,所有參數都會實作為 32 位浮點值。 MP_TYPE 列舉定義是否要將值解譯為整數、浮點值、布爾值或列舉型別(整數數列)。
- mopCaps 成員表示此參數支援的曲線。 如果數據類型為布爾值或列舉,則參數可支援的唯一曲線是 「Jump」。
- mpdMinValue 和 mpdMaxValue 成員定義此參數的最小值和最大值。 此參數的任何曲線都必須落在此範圍內。
- mpdNeutralValue 成員是 參數的預設值。
- szLabel 成員是參數的名稱,而 szUnitText 成員 是參數的測量單位名稱。 範例可能包括「磁碟區」和「分貝」或「頻率」和「kHz」。這兩個字串都是英文,而且永遠不會當地語系化。 DMO 可以透過 IMediaParamInfo::GetParamText 方法提供當地語系化版本。
每個參數的信息都會在 DMO 的存留期內維持固定狀態。 因此,客戶端可以查詢此資訊一次,然後加以快取。
時間格式
用戶端必須時間戳輸入數據,以便 DMO 可以計算對應的參數值。 根據預設,時間戳代表 100 奈秒的單位,也稱為 參考時間。 不過,對於每個應用程式來說,這個時間單位並不方便,因此 DMO 可以選擇支援其他時間格式。 時間格式是由 GUID 所識別。
| GUID | 描述 |
|---|---|
| GUID_TIME_REFERENCE | 參考時間 |
| GUID_TIME_MUSIC | 每季零件附註 (PPQN) |
| GUID_TIME_SAMPLES | 每秒樣本數 |
鼓勵第三方視需要定義自己的時間格式。 不過,所有 DMO 都必須支援參考時間。 這會提供每個人都可以使用的標準基準。 若要判斷 DMO 支援的時間格式,請呼叫 IMediaParamInfo::GetNumTimeFormats 方法。 若要列舉支援的格式,請呼叫 IMediaParamInfo::GetSupportedTimeFormat 方法。
若要設定時間格式,請呼叫 IMediaParams::SetTimeFormat。 此方法會指定時間格式 GUID 和 時間資料,這是每個時鐘刻度的單位數。 例如,如果時間格式為每秒樣本,而時間數據為 32,則時間戳值為 10 會對應至 320 個樣本。
相關主題