2017-01-16 134 views
6

有沒有可靠的方法來確定相機是否在Microsoft Surface上旋轉?檢測Microsoft Surface上的相機旋轉?

基本上,我想知道如果一個特定的相機內置到設備中(因爲它會隨着設備旋轉),有沒有一種方法來查詢這個?

我的問題是,當用戶旋轉設備,我的相機視圖翻轉,但我不能假定我應該只是旋轉閱讀框,因爲活動相機可能是外部USB相機。

我正在使用Media Foundation API讀取相機。

+0

我不太確定這是否有幫助,但是您可以檢查相機媒體類型的MF_MT_DEFAULT_STRIDE屬性:https://msdn.microsoft.com/en-us/library/windows/desktop/ms698965(v = vs.85)的.aspx。 「步幅對自上而下的圖像爲正,對自下而上的圖像爲負。」 – VuVirt

+0

我不認爲就是這樣,例如,設備可能旋轉90度。 :( – monoceres

+1

這是['MF_MT_VIDEO_ROTATION'](https://msdn.microsoft.com/en-us/library/windows/desktop/hh162880),但我不確定Surface相機是否真的使用它。 –

回答

2

基本上,我想知道如果一個特定的相機內置到設備有沒有辦法查詢這個?

使用UWP,您可以檢查相機的DeviceInformationenclosureLocationpanel屬性,它可以是:

  • front/back /等用於集成照相機或
  • unknown用於外部照相機

一個完整的例子是CameraStarterKit樣品中可用。


然而,如果你不能使用UWP,它應該還是有可能找到潛在的信息。使用MF,您應該可以訪問MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK

這將是像

\\?\usb#vid_046d&pid_0843&mi_00#6&2314864d&0&0000#{e5323777-f976-4f5b-9b55-b94699c46e44}\global 

內置的攝像頭爲supposed to register

HKLM\SYSTEM\CurrentControlSet\Control\InternalDeviceModification\{GUID} 

它的物理位置的PLD_Panel鍵的值應該與價值觀非常相似DWORD上面引用的Panel枚舉。

這裏,6表示unknown。所以你應該能夠檢查這個註冊表項的存在,如果存在的話,檢查它的值。我懷疑這與UWP所做的相似。

如果不成功,您還可以通過對相機供應商和產品ID或MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME的某些值進行硬編碼來支持。

+0

這看起來像正是我需要的,非常棒!但是,在我的Surface Pro 3設備(運行Windows 10)中查看註冊表編輯器時,InternalDeviceModification鍵缺失。有任何想法嗎? – monoceres