다음을 통해 공유


내부 카메라의 위치 식별(UWP 디바이스 앱)

이 항목에서는 Windows 8.1의 시스템에서 내부 카메라를 지원하는 방법에 대한 정보를 제공합니다. UWP 앱에서 올바르게 작동하도록 기본 제공 카메라의 물리적 위치를 식별하는 방법을 설명합니다. 또한 카메라가 UWP 디바이스 앱에서 작동하도록 모델 ID를 설정하는 방법에 대해서도 설명합니다. 일반적으로 UWP 디바이스 앱에 대한 자세한 내용은 UWP 디바이스 앱 모임을 참조 하세요.

물리적 위치 제공

기계적으로 고정된 방향의 기본 제공 카메라가 있는 시스템은 카메라의 물리적 위치를 보고해야 합니다. 이 물리적 위치 정보는 Windows 8.1에서 카메라를 사용하기 위한 앱이 올바르게 작동할 수 있도록 전면 또는 후면과 같이 카메라가 향하고 있는 방향을 나타냅니다.

Windows에서 카메라의 위치를 인식할 수 있도록 하는 다음 두 가지 Windows 하드웨어 인증 요구 사항이 필요합니다.

  • System.Client.PCContainer.PCAppearsAsSingleObject. 카메라는 컴퓨터의 디바이스 컨테이너로 그룹화되어야 하며, 여기에는 컴퓨터 내부에 물리적으로 있는 디바이스 기능이 포함되어 있어야 합니다. 컴퓨터 컨테이너 외부의 디바이스가 기계적으로 고정된 방향으로 간주되지 않으므로 물리적 위치를 앱에 노출하려면 카메라를 컴퓨터의 디바이스 컨테이너로 그룹화해야 합니다.

  • System.Client.Webcam.PhysicalLocation. 펌웨어는 ACPI 테이블의 _PLD 정보를 사용하여 카메라의 위치와 방향을 표시하여 물리적 위치 정보를 제공해야 합니다.

Windows에 물리적 위치 카메라가 필요한 이유

Windows는 다음과 같은 이유로 내부 카메라의 물리적 위치를 알고 있어야 합니다.

  • UWP 앱은 물리적 위치를 사용하여 여러 카메라가 있는 경우 사용할 카메라를 결정합니다. 예를 들어 채팅 애플리케이션은 기본적으로 앱이 시작될 때 사용자를 마주하는 전면 카메라를 사용합니다.

  • UWP 앱은 물리적 위치를 사용하여 비디오 미리 보기를 미러 또는 회전하는 방법을 결정합니다.

  • 카메라가 사용자를 마주보고 있는 경우 미리 보기는 사용자가 미러 조사하는 것처럼 보입니다. 이렇게 하려면 미리 보기가 비디오를 미러 있도록 앱이 미리 보기의 왼쪽과 오른쪽을 대칭 이동합니다. 카메라가 사용자와 떨어져 있는 경우 앱은 비디오를 미러 필요가 없습니다.

  • 앱이 미리 보기를 회전하는 경우 회전 정도는 카메라의 위치에 따라 달라집니다.

카메라를 컴퓨터 디바이스 컨테이너로 그룹화하는 방법

인증 요구 사항 System.Client.PCContainer.PCAppearsAsSingleObject(SYSFUND-0200이라고도 함)에 따라 내부 카메라 디바이스 노드는 PC 디바이스 컨테이너 아래에 그룹화되어야 합니다. 즉, 내부 카메라는 장치 및 프린터표시되지 않아야 하며 PC 컨테이너에 통합되어야 합니다.

이 요구 사항을 구현하는 방법은 내부 카메라의 버스 유형에 따라 달라집니다. 디바이스가 ACPI 테이블의 물리적 디바이스 위치에 대한 정보를 노출할 수 있는 경우 다기능 디바이스 지원 및 디바이스 컨테이너 그룹화에 설명된 대로 테이블에 _PLD 정보를 포함하고 ACPI 테이블에서 UserVisible 플래그를 수정하여 ACPI 계층에 올바른 그룹화가 지정될 수 있습니다. 그렇지 않으면 DeviceOverrides 레지스트리 키를 사용하여 이동식 플래그를 재정의합니다. 자세한 내용은 DeviceOverrides 레지스트리 키를 참조 하세요.

ACPI 테이블에서 _PLD 정보를 사용하여 물리적 위치를 제공하는 방법

인증 요구 사항 System.Client.Webcam.PhysicalLocation에 따라 카메라의 위치를 나타내는 _PLD 값을 ACPI(고급 구성 및 전원 인터페이스) 테이블에 제공해야 합니다. 이는 시스템의 섀시에 내장되어 있고 기계적으로 고정된 방향을 가지고 있는 모든 카메라 디바이스에 적용됩니다. 펌웨어는 _PLD 메서드를 제공하고 패널 필드(비트 69:67)를 카메라가 탑재된 패널의 적절한 값으로 설정해야 합니다. 예를 들어 Front는 카메라가 사용자(웹캠)를 향한다는 것을 나타내고, 뒤로는 카메라가 최종 사용자(스틸 또는 비디오 카메라)에서 멀어짐을 나타냅니다.

비트 값 69:67 Panel
0
1 맨 아래
2 Left
3 Right
4 Front
5 백스페이스
6 Unknown

또한 비트 143:128(세로 오프셋) 및 비트 159:144(가로 오프셋)는 디스플레이와 관련하여 카메라의 상대 위치를 제공해야 합니다. 이 원점은 디스플레이 구성 요소의 네이티브 픽셀 주소 지정을 기준으로 하며 가로 또는 세로의 현재 디스플레이 방향과 일치해야 합니다. 원점은 디스플레이의 왼쪽 아래 모서리이며, 양수 가로 및 세로 오프셋 값은 각각 오른쪽과 위쪽에 있습니다.

USB 연결 내부 카메라의 경우 USB 디바이스의 디바이스 노드는 USB 포트 디바이스 노드 아래의 ACPI 테이블에 만들어집니다.

주소를 지정하려면(_ADR):

  1. 대상 PC에 Windows 설치

  2. 장치 관리자 이동

  3. 대상 웹캠을 선택하고 길게 누르거나 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다 .

  4. [세부 정보] 탭을 열고 [속성] 메뉴에서 [주소]를 선택합니다.

  5. 상자의 값은 디바이스가 있는 주소입니다.

  6. ACPI 테이블의 _ADR 값 설정

  7. ACPI 사양 및 PC 디자인에 따라 _PLD 값 설정

이 예제는 USB 연결 카메라를 위한 ACPI 테이블입니다. 이 예제에서는 값이 0x1. 아홉 번째 바이트에는 위치에 대한 패널 코드(bits[69:67])가 포함됩니다. 디바이스가 USB 복합 디바이스인 경우 PLD는 비디오 FUNCTION에 있어야 합니다. 즉, 추가 디바이스() 항목이 필요합니다.

Device(PRTD)
{
     Name(_ADR, 0x6)
     Name(_UPC, Package(0x4)
     {
            ....
     }
     Name(_PLD, Buffer(0x10)
     {
            ....
     }
     Device(WCAM)
     {
           Name(_ADR, 0x6)
           Name(_PLD, Buffer(0x10) {
           0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
           0x20, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
     }
}

_PLD 대한 자세한 내용은 ACPI 사양을 참조하세요.

USBCCGP의 노드 다운스트림의 경우 카메라 함수의 첫 번째 인터페이스 번호에 포트 번호를 추가하여 주소 값을 계산합니다. 디바이스에 USBCCGP가 로드되지 않은 경우 주소는 단순히 포트 번호입니다. Windows를 설치하지 않고 주소 번호를 예측해야 하는 경우 이 수식을 사용하여 계산하세요. 대상 디바이스가 USB 복합 스타일 디바이스를 사용하지 않고 단일 함수 디바이스인 경우 주소 값은 포트 번호만 사용하여 계산됩니다.

모델 ID 제공

Windows 디바이스 메타데이터 시스템은 카메라의 디바이스 노드 에 모델 ID 속성이 있고 디바이스 범주가 있는 경우에만 내부적으로 포함된 카메라의 디바이스 메타데이터 패키지를 쿼리할 수 있습니다 Imaging.Webcam. 디바이스 메타데이터 패키지가 디바이스 및 카메라별 UWP 디바이스 앱과 올바르게 연결되도록 Windows에서 내부 카메라의 메타데이터를 검색할 수 있도록 하려면 OEM에서 다음을 수행해야 합니다.

  • 디바이스 레지스트리 키의 플래그를 사용하여 InternalDeviceModification 디바이스 노드에서 모델 ID 설정

내부 카메라의 디바이스 노드에 대한 모델 ID를 설정하는 방법

내부 카메라의 경우 OEM은 모델 ID에 사용할 GUID를 만들고 이를 위한 레지스트리 키를 만듭니다. 모델 ID 속성은 특정 디바이스에 매핑되는 레지스트리 키로 구성된 LUT(레지스트리 기반 조회 테이블)인 InternalDeviceModification 메커니즘을 사용하여 디바이스 노드에 추가됩니다. 이 InternalDeviceModification 테이블은 기본 다음 레지스트리 키 아래에 있습니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\InternalDeviceModification

InternalDeviceModification 레지스트리 키 아래에 만들 하위 키 항목은 ModelID에 대한 OEM 제공 GUID입니다. 이 키가 있으면 디바이스 하드웨어 ID 및 ACPI 테이블의 _PLD 값으로 표시된 위치 정보에 따라 모델 ID가 카메라의 디바이스 노드에 추가됩니다.

registry keys and values for internaldevicemodification.

InternalDeviceModification 레지스트리 키

InternalDeviceModification 레지스트리 키는 하나 이상의 카메라가 ModelID를 사용한다는 것을 나타냅니다.

레지스트리 키 이름 InternalDeviceModification
필수/선택 Required
Path HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
형식 요구 사항 없음
유효한 하위 키 모델 ID 레지스트리 키(다음 하위 키 형식 요구 사항 및 예제 참조)

모델 ID 레지스트리 키

레지스트리 키 이름 모델 ID(정확한 모델 ID 값이 키 이름임)
필수/선택 Required
형식 요구 사항 키 이름은 OEM에서 만든 GUID입니다. 여는 대괄호와 닫는 대괄호가 모두 있어야 합니다.
유효한 값 하드웨어 ID 레지스트리 값 또는 PLD_Panel
예제 {43922620-DAD9-4C05-BE3F-F65B089D84D8}

하드웨어 ID 레지스트리 값

레지스트리 값 이름 하드웨어 ID
필수/선택 필수
Type 다중 문자열
형식 요구 사항 하드웨어 ID의 버스 접두사를 포함해야 합니다. 모든 "" 문자는 "#"로 바꿔야 합니다.
예제 USB#VID_1234&PID_ABCD&REV_0001, PCI#VEN_ABCD&DEV_1234&SUBSYS_000
Comment(설명) 여러 하드웨어 ID 값을 제공할 수 있습니다. 목록에서 하드웨어 ID가 두 번 이상 발생하면 시스템은 하드웨어 ID에 따라 디바이스 노드의 모델 ID를 설정합니다.

레지스트리 값 PLD_Panel

레지스트리 값 이름 PLD_Panel
필수/선택 선택 사항
Type DWORD
형식 요구 사항 HardwareID의 버스 접두사를 포함해야 합니다. 모든 "\" 문자를 "#"으로 바꿔야 합니다.
예제 4.5

PLD_Panel 세부 정보

ACPI 테이블에 제공된 PLD_Panel 값을 사용하면 시스템에 두 개의 동일한 카메라 디바이스가 있고 둘 다 동일한 하드웨어 ID가 있는 경우 카메라를 서로 구별할 수 있습니다. 다른 모델 ID를 만들기 위해 하드웨어 ID와 PLD_Panel 값의 조합이 사용됩니다.

참고 항목

레지스트리 키의 PLD_Panel 설정은 선택 사항입니다. Windows는 ACPI 테이블의 설정에 따라 카메라의 물리적 위치를 결정합니다.

PLD_Panel 레지스트리 값은 ACPI 사양에서 _PLD(물리적 디바이스 위치)로 정의됩니다. 인클로저에서 카메라의 물리적 위치를 나타내는 이 값은 다음 중 하나여야 합니다.

설명
0
1 맨 아래
2 Left
3 Right
4 Front
5 백스페이스
6 알 수 없음(세로 위치 및 가로 위치는 무시됨)

InternalDeviceModification 레지스트리 주요 예제

다음 예제에서는 InternalDeviceModification 레지스트리 키의 형식을 보여 줍니다.

{00001111-2222-3333-4444-555566667777}
      HardwareIDs (Multi sz) =
      "USB#VID_1234&PID_ABCD&REV_0001","USB#VID_1234&PID_ABCD"
      PLD_Panel (DWORD) = 4
{88889999-aaaa-bbbb-cccc-ddddeeeeffff}
      HardwareIDs (multi sz) = "USB#VID_5678&PID_WXYZ&REV_0001"
      PLD_Panel (DWORD) = 5
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\InternalDeviceModification]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\InternalDeviceModification\{BBBF38D6-9866-493D-B86F-986E339E096D}]
"PLD_Panel"=dword:00000004
"HardwareIDs"=hex(7):55,00,53,00,42,00,23,00,56,00,49,00,44,00,5f,00,30,00,34,\
  00,35,00,45,00,26,00,50,00,49,00,44,00,5f,00,30,00,30,00,31,00,30,00,23,00,\
  52,00,45,00,56,00,5f,00,30,00,30,00,30,00,31,00,00,00,55,00,53,00,42,00,23,\
  00,56,00,49,00,44,00,5f,00,30,00,34,00,35,00,45,00,26,00,50,00,49,00,44,00,\
  5f,00,30,00,30,00,31,00,30,00,00,00,00,00

메타데이터 구조

내부 카메라의 디바이스 메타데이터 패키지는 다른 디바이스에 대한 디바이스 메타데이터 패키지와 동일한 구조를 가짐 디바이스 메타데이터 패키지 내의 packageinfo.xml MetadataKey는 InternalDeviceModification 레지스트리 키를 사용하여 정의된 모델 ID입니다. Windows 메타데이터 시스템은 모델 ID를 기반으로 디바이스 메타데이터 패키지를 다운로드합니다. 내부 카메라의 하드웨어 ID는 사용되지 않습니다.

UWP 디바이스 앱에 대한 디바이스 메타데이터를 만드는 방법에 대한 자세한 내용은 UWP 디바이스 앱 빌드를 참조 하세요.

사전 설치

Microsoft Store 디바이스 앱과 디바이스 메타데이터 패키지는 모두 OEM OPK(사전 설치 키트)를 사용하여 디바이스에 미리 설치할 수 있습니다.

내부 디바이스용 UWP 디바이스 앱