ISampleGrabber::SetMediaType 方法
[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。
注意
[已被取代。 此 API 可能會從未來的 Windows 版本中移除。]
方法 SetMediaType
會指定範例擷取器輸入針腳上連接的媒體類型。
語法
HRESULT SetMediaType(
const AM_MEDIA_TYPE *pType
);
參數
-
pType
-
AM_MEDIA_TYPE結構的指標會指定必要的媒體類型。 不需要設定所有結構成員;如需詳細資訊,請參閱。
傳回值
傳回S_OK。
備註
根據預設,範例抓取器沒有慣用的媒體類型。 若要確保範例擷取器連線到正確的篩選準則,請先呼叫此方法,再建置篩選圖形。
這個方法會限制篩選準則將接受的媒體類型範圍。 當篩選連線時,它會嘗試比對 pType中指定的媒體類型。 若要這樣做,它會依該順序比較主要類型、子類型和格式類型 GUID。 針對每個 GUID,如果 pType 有值GUID_Null,Sample Grabber 會接受媒體類型,而不需要進一步檢查。 如果 pType 有任何其他值,範例抓取器會將它與連線類型中的 GUID 進行比較。 除非兩個 GUID 完全相符,否則範例擷取器會拒絕連線。
針對視訊媒體類型,範例抓取器會忽略格式區塊。 因此,它會接受任何視訊大小和畫面播放速率。 當您呼叫 SetMediaType
時,請將格式區塊 (pbFormat) 設定為 Null ,並將 cbFormat 的大小 (cbFormat) 設定為零。 如果是音訊媒體類型,範例抓取器會檢查 「其」結構 ,而且需要其他篩選來與該格式連接,除非 pType 中的格式區塊是 Null,或者格式標記是WAVE_FORMAT_PCM,而其他結構成員則是零。
範例 1:
- 主要類型:MEDIATYPE_Video
- 子類型:GUID_Null
- 格式類型:GUID_Null
範例擷取器會接受主要類型等於MEDIATYPE_Video的任何視訊類型。 它不會檢查子類型。
範例 2:
- 主要類型:MEDIATYPE_Video
- 子類型:MEDIASUBTYPE_RGB24
- 格式類型:GUID_Null
現在範例擷取器會檢查子類型,並且只接受 RGB 24 影片。
限制: 不論您設定的類型為何,「範例抓取器篩選」都會拒絕任何具有由上而下方向 (負 biHeight) 的視訊類型,或格式類型為 FORMAT_VideoInfo2。 在此情況下,雖然 SetMediaType
方法成功,但篩選準則將不會連線。
注意
標頭檔 Qedit.h 與 7 版之後的 Direct3D 標頭不相容。
注意
若要取得 Qedit.h,請下載Windows Vista Microsoft Windows SDK Update 和 .NET Framework 3.0。 Qedit.h 不適用於 Windows 7 和 .NET Framework 3.5 Service Pack 1 的 Microsoft Windows SDK。
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|
另請參閱