2017-01-16 6 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を使用すると、カメラのDeviceInformationenclosureLocationを確認できます。いずれかであるpanel性、集積カメラ又は

  • unknownため

    • front/back /などの外部カメラの

    完全な例は、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

    PLD_Panelキーの値が非常に類似した値を持つDWORDする必要があります
    HKLM\SYSTEM\CurrentControlSet\Control\InternalDeviceModification\{GUID} 
    

    でその物理的な場所であります上記で参照されたPanel列挙型。

    ここで、6は、unknownを意味します。したがって、このレジストリキーが存在するかどうかを確認し、存在する場合はその値を確認する必要があります。私はこれがUWPがボンネットの下でやることと似ていると思う。

    それでも問題が解決しない場合は、カメラベンダーや製品IDの値をハードコーディングしたり、MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAMEをハードコーディングしてサポートをハッキングすることもできます。

  • +0

    まさに私が必要なものです。しかし、私のSurface Pro 3デバイス(Windows 10を実行中)でregeditを見ると、InternalDeviceModificationキーがありません。何か案は? – monoceres

    関連する問題