多針式相機上的驅動程式 MFT 考慮 (UWP 裝置應用程式)
Windows 8.1 提供 IHV 和系統 OEM 的功能,以媒體基礎轉換 (MFT) 的形式建立視訊處理外掛程式,稱為相機驅動程式 MFT。 安裝之後,UWP 裝置應用程式可以使用這些驅動程式 MFT 來啟用特殊的視訊效果。 某些相機會提供個別的針腳來預覽、擷取和靜止。 這些多針相機會對開發人員帶來獨特的挑戰。 本主題涵蓋在多針相機上開發相機驅動程式 MFT 時要考慮的一些要點。 如需建立驅動程式 MFT 的詳細資訊,請參閱 建立相機驅動程式 MFT。
簡介
驅動程式 MFT 也稱為 MFT0,表示它是第一個在來源讀取器中運作的 MFT。 MFT0 的個別實例會附加至擷取來源上的每個針腳。 對於某些系統 OEM,AVStream 擷取驅動程式必須支援預覽釘選、擷取釘選和仍然釘選。 這表示 MFT0 可能有三個實例。 此圖表顯示此架構,其中包含 IHV 外掛程式 MFT 的三個複本,每個數據流各一份。
MFT0 的典型案例可能會面臨挑戰。 MFT0 的兩個熱門函式包括:
分析視訊串流,為相機提供意見反應以改善擷取(例如主機型自動焦點和自動曝光)
新增視訊效果
單針網路攝影機
從歷史上看,相機已公開到 Windows 作為單一擷取釘選。 此圖表代表單針網路攝影機的運作方式:
在此情況下,相機控件和視訊效果都如設計般運作,因為套用相機控件和視訊效果之後,預覽和仍然會從擷取針腳傳送。 結果是儲存的檔案或使用者的聊天夥伴會看到使用者在其預覽中看到的相同視訊效果,而且只有一個相機控件功能的實例。 如果有相關聯的 UWP 裝置應用程式,應用程式會連線到擷取釘選上的 MFT0,因此 MFT0 會從應用程式取得控制訊息(也就是使用者)。
三針網路攝影機
根據應用程式需求,三針相機可能有多達三個 MFT0 實例。 此圖表代表三針式相機的運作方式:
這種情況提出了幾個挑戰。 首先,在主機型自動曝光解決方案的情況下,這需要直接控制相機感測器和 ISP 設定,三個 MFT0 可能會同時嘗試控制相機。 這會中斷控制系統。
其次,視訊效果可能有三個實例。 除了產生計算的三倍成本之外,MFT0 的三個實例現在必須以確保每個視訊畫面一律在完全相同狀態下具有相同效果的方式進行通訊。 否則,使用者看到的內容將不會是儲存或共用的內容。
此外,還有兩個最終複合因素:
MFT0 的每個實例隨時都可以建立或關閉
UWP 裝置應用程式只會連線到 MFT0 的一個實例
壓縮的視訊
網路攝影機或系統 OEM 可以選擇先壓縮視訊,再將其顯示在擷取釘上(也就是網路攝影機本身)。 將壓縮卸除至網路攝影機,可讓較低電源的電腦儲存和共用 HD 視訊。 此壓縮視訊串流通常無法分析以支援相機控制件,也無法套用視訊效果。 這表示讓 MFT0 的所有實例(以及如果有的話的 Microsoft Store 裝置應用程式)知道不會將任何效果套用至擷取數據流的挑戰。 此圖表代表壓縮的影片:
如果使用者將視訊效果套用至預覽串流,則無法套用至擷取數據流或仍然釘選。 因此,使用者會看到未套用至已儲存或串流影片的視訊效果。 如果預覽串流停止,Microsoft Store 裝置應用程式會嘗試連線到擷取數據流。 當使用者串流壓縮的視訊時,這不允許許多功能。
MFT0 實例之間的通訊
如果 MFT0 的三個實例可以彼此通訊,這可能會解決大部分的問題。 這些實例如何彼此探索到 IHV。 一旦所有 MFT0 可以通訊,連線至 Microsoft Store 裝置應用程式的 MFT0 實例就可以讓其他實例知道套用的效果及其目前狀態。 此外,這三個實例可以判斷哪一個實例會套用相機控件。 最後,預覽釘選可以判斷擷取釘選是否正在串流編碼的視訊。 預覽釘選接著可以停用視訊效果。
雖然 MFT0 實例之間的通訊解決了主要的用戶體驗問題,但三個視訊效果實例仍必須同時執行。 某些視訊效果可以使用大部分可用的CPU資源,特別是在同時預覽和擷取全螢幕視訊時。 這些都是嚴重的問題。 基於效能考慮,每個ISV都應該考慮一次執行哪些處理,例如臉部偵測,並與MFT0的所有實例共用。