共用方式為


動作補償設備磁碟機的操作對應

[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]

本節包含 DirectX VA 介面的動作補償設備磁碟機端的描述。 (參考:Windows 2000 DDK - 圖形驅動程式 - 設計指南 - 3.0 DirectDraw DDI - 3.12 動作補償。如需 boldface.) 結構的檔,請參閱 Windows DDK

下列專案是指透過 DD_MOTIONCOMPCALLBACKS 結構存取的專案:

  1. 在相關處理開始時,設備磁碟機的 DdMoCompCreate 會用來通知驅動程式軟體解碼器會開始使用視訊加速物件。
  2. IAMVideoAccelerator::GetVideoAcceleratorGUID 接收的 GUID 源自設備磁碟機的 DdMoCompGetGUIDs
  3. 呼叫下游輸入釘選的 IAMVideoAccelerator::GetUncompFormatsSupported 會從設備磁碟機的 DdMoCompGetFormats傳回資料。
  4. DXVA_ConnectMode 解碼器 IAMVideoAcceleratorNotify::GetCreateVideoAcceleratorData 中的資料結構會傳遞至設備磁碟機的 DdMoCompCreate
  5. IAMVideoAccelerator::GetCompBufferInfo 傳回的資料來源自設備磁碟機的 DdMoCompGetBuffInfo
  6. 使用 IAMVideoAccelerator::Execute 傳送的緩衝區會由設備磁碟機的 DdMoCompRender接收。
  7. 使用 IAMVideoAccelerator::QueryRenderStatus 會叫用設備磁碟機的 DdMoCompQueryStatus。 主機解碼器會顯示來自 DdMoCompQueryStatus DDERR_WASSTILLDRAWING的傳回碼,作為 IAMVideoAccelerator::QueryRenderStatus E_PENDING的傳回碼。
  8. 傳送至 IAMVideoAccelerator::BeginFrame 的資料會由設備磁碟機的 DdMoCompBeginFrame接收。 DdMoCompBeginFrame 需要E_PENDING的傳回碼碼,主機解碼器才能看到E_PENDING,以回應 IAMVideoAccelerator::BeginFrame
  9. 傳送至 IAMVideoAccelerator::EndFrame 的資料會由設備磁碟機的 DdMoCompEndFrame接收。
  10. 在相關處理結束時,會使用設備磁碟機的 DdMoCompDestroy 通知驅動程式目前影片加速物件不再使用,以便驅動程式執行任何必要的清除。