共用方式為


以引腳為中心的處理

撰寫 AVStream 迷你驅動程式時,您會提供使用兩種處理模式之一的過濾器:以插針為中心的處理或 以過濾器為中心的處理

以針腳為中心的處理表示 AVStream 會在新的畫面到達針腳佇列時呼叫迷你驅動程式的針腳進程分派常式。

以篩選為核心的處理表示,當每個實例化的接腳上有可用的資料框架時,AVStream 會呼叫迷你驅動程式的篩選處理分派常式。 請注意,這些定義會指定預設行為;迷你驅動程式可以在 KSPIN_DESCRIPTOR_EX 結構中設定旗標,以修改預設行為。

一般而言,軟體濾波器使用以濾波器為中心的處理,而硬體濾波器則使用以引腳為中心的處理。 例如,轉換或轉譯資料的硬體可以在以引腳為中心的篩選器上路由資料。 在極少數情況下,這些角色可能會被顛倒。

若要提供以針腳為中心的篩選,迷你驅動程式會在每個KSPIN_DISPATCH結構中提供 AVStrMiniPinProcess 回呼常式的指標;請勿在KSFILTER_DISPATCH結構中提供處理分派。

如果迷你驅動程式未修改KSPIN_DESCRIPTOR_EX結構中的旗標設定,AVStream 會在三種情況下呼叫廠商提供的 AVStrMiniPinProcess 回呼常式:

  • 引腳轉換到最小處理狀態。 佇列中必須已存在框架,而且腳位必須從低於最小處理狀態轉換成至少最小處理狀態。

  • 新框架到貨。 引腳必須至少處於最小處理狀態,且前緣或前緣之前不得有幀。

  • 迷你驅動程式會明確呼叫 KsPinAttemptProcessing

依預設,暫停是最低處理狀態。

此外,如果腳位的 AND 閘道已關閉,AVStream 不會呼叫腳位過程調度。 例如,如果您使用 KSGATEXxx 常式將其他關閉輸入新增至針腳的 AND 閘道,則不會呼叫處理程序分派。

當 AVStream 呼叫 AVStrMiniPinProcess 時,它會提供一個指向具有可用數據的引腳物件的指標。 迷你驅動程式的處理分派接著可以呼叫 KsPinGetLeadingEdgeStreamPointer 來取得前緣指標。 然後,迷你驅動程式會使用 資料流程指標 API 來操作資料流程資料。

使用針腳中心處理的迷你驅動程式可以在 AVStream 呼叫 AVStrMiniPinProcess 分派時進行修改,方法是在相關的 KSPIN_DESCRIPTOR_EX 結構中設定旗標。 KSPIN_DESCRIPTOR_EX 參考頁面上的旗標說明與實作以端點為中心的篩選器的廠商特別相關。

如果迷你驅動程式透過 KsPinAcquireProcessingMutex 保留處理互斥鎖,則處理嘗試可能會失敗。 如果迷你驅動程式使用 KSGATE* 呼叫直接操作閘道,也可能會發生問題。

Windows 驅動程式套件範例中的 AVStream 模擬硬體範例驅動程式 (AVSHwS) 是一個以 pin 為中心的擷取驅動程式,用於模擬硬體。 Avshws 範例示範如何 透過 AVStream 實作 DMA