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