裝置模式
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
IEEE 1394 和 USB 攝影機可以在相機模式與視訊磁帶錄製器之間切換, (VTR) 模式。 當 IEEE 1394 攝影機切換模式時,裝置會重設,而且應用程式必須再次列舉它。 應用程式無法以程式設計方式切換模式。 另一方面,USB 攝影機可以在相機與 VTR 模式之間切換,而不需要重設,而且應用程式可以變更模式。
MSDV 驅動程式
若要取得 IEEE 1394 裝置上的目前模式,請使用值ED_DEVCAP_DEVICE_TYPE呼叫 IAMExtDevice::GetCapability 方法。 如果方法傳回值ED_DEVTYPE_VCR,則裝置處於 VTR 模式,並具有暫停、停止、快速轉送和倒轉等功能。 否則,如果方法傳回ED_DEVTYPE_CAMERA,則裝置處於相機模式。 下列程式碼範例示範如何查詢裝置類型:
if (MyDevCap.bHasDevice)
{
LONG lDeviceType = 0;
MyDevCap.pDevice->GetCapability(ED_DEVCAP_DEVICE_TYPE, &lDeviceType, 0);
if (lDeviceType == ED_DEVTYPE_VCR)
{
// Device is a VTR. Enable all VTR functions.
}
else
{
// Device is a camera.
// Enable record and record-pause; disable other functions.
}
}
如果相機離線,您應該在下一次可用時重新查詢它。 篩選圖表管理員會在移除裝置時張貼 EC_DEVICE_LOST 事件。
UVC 驅動程式
因為 USB 視訊裝置可以在不重設的情況下切換模式,所以上述範例中顯示的程式碼對於 USB 裝置而言並不可靠。 請改用 ISelector 介面來取得目前的模式。 如果裝置支援,您也可以使用此介面,以程式設計方式切換模式。
相關主題