Collapse the table of content
Expand the table of content

내부 카메라 위치 식별(Windows 스토어 장치 앱)

이 항목에서는 Windows 8.1의 시스템에서 내부 카메라를 지원하는 방법을 살펴봅니다. Windows 스토어 앱에서 제대로 작동하도록 기본 제공 카메라의 실제 위치를 식별하는 방법에 대해 설명합니다. 카메라가 Windows 스토어 장치 앱에서 작동하도록 모델 ID를 설정하는 방법에 대해서도 설명합니다. 일반적인 Windows 스토어 장치 앱에 대한 자세한 내용은 Windows 스토어 장치 앱 알아보기를 참조하세요.

실제 위치 제공

기계적으로 방향이 고정된 기본 제공 카메라가 있는 시스템은 카메라의 실제 위치를 보고해야 합니다. 이 실제 위치 정보는 Windows 8.1의 카메라를 사용하기 위한 앱이 제대로 작동하도록 카메라가 있는 방향(예: 뒤쪽 또는 앞쪽)을 나타냅니다.

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

  • System.Client.PCContainer.PCAppearsAsSingleObject. 실제로 컴퓨터 내부에 있는 장치 기능을 포함하는 컴퓨터의 장치 컨테이너로 카메라를 그룹화해야 합니다. 컴퓨터 컨테이너 외부의 장치는 기계적으로 방향이 고정되었다고 간주되지 않으므로, 실제 위치를 앱에 표시하려면 카메라를 컴퓨터의 장치 컨테이너로 그룹화해야 합니다.

  • System.Client.Webcam.PhysicalLocation. 펌웨어는 카메라의 위치와 방향을 나타내기 위해 ACPI 테이블의 _PLD 정보를 사용해 실제 위치 정보를 제공해야 합니다.

Windows에 카메라의 실제 위치가 필요한 이유

다음과 같은 이유 때문에 Windows에서 내부 카메라의 실제 위치를 알아야 합니다.

  • 여러 카메라가 있는 경우 Windows 스토어 앱은 실제 위치를 사용해 어떤 카메라를 사용할지 결정합니다. 예를 들면 채팅 카메라는 앱이 시작될 때 사용자와 마주하는 전면 카메라를 기본적으로 사용합니다.
  • Windows 스토어 앱은 실제 위치를 사용해 동영상 미리 보기의 반사 또는 회전 방법을 결정합니다.
  • 카메라가 사용자를 향해 있으면 미리 보기는 사용자가 거울을 보는 것처럼 보일 것입니다. 이를 위해 앱은 미리 보기가 동영상을 반사하도록, 미리 보기의 좌우를 대칭 이동합니다. 카메라가 사용자와 떨어져 있으면 앱은 동영상을 반사할 필요가 없습니다.
  • 앱이 미리 보기를 회전하는 경우, 카메라의 위치에 따라 회전 각도가 달라집니다.

카메라를 컴퓨터의 장치 컨테이너로 그룹화하는 방법

특정 요구 사항 System.Client.PCContainer.PCAppearsAsSingleObject(SYSFUND-0200이라고도 함)에 따라 PC 장치 컨테이너 아래에서 내부 카메라 장치 노드를 그룹화해야 합니다. 다시 말해서, 내부 카메라는 장치 및 프린터에 표시되어서는 안되며 PC 컨테이너에 통합되어야 합니다.

이 요구 사항을 구현하는 방법은 내부 카메라의 버스 유형에 달려 있습니다. 장치가 실제 장치 위치에 대한 정보를 ACPI 테이블에 표시할 수 있는 경우, 테이블에 _PLD 정보를 포함하고 ACPI 테이블에서 UserVisible 플래그를 수정하여(다기능 장치 지원 및 장치 컨테이너 그룹화 참조) ACPI 레이어에 올바른 그룹화를 지정할 수 있습니다. 그렇지 않으면 DeviceOverrides 레지스트리 키를 사용해 removable 플래그를 재정의합니다. 자세한 내용은 DeviceOverrides 레지스트리 키를 참조하세요.

ACPI 테이블의 _PLD 정보를 사용해 실제 위치를 제공하는 방법

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

비트 [69:67]의 값패널
0맨 위로
1아래
2왼쪽
3오른쪽
4
5뒤로
6알 수 없음

 

또한 비트 143:128(세로 오프셋) 및 비트 159:144(가로 오프셋)는 디스플레이를 기준으로 카메라의 상대 위치를 제공해야 합니다. 이 원점은 디스플레이 구성 요소에 있는 기본 픽셀에 대해 상대적이며 가로 또는 세로의 현재 디스플레이 방향과 일치해야 합니다. 원점은 디스플레이의 왼쪽 아래 구석인데, 여기서 양의 가로 및 세로 오프셋 값은 각각 오른쪽과 위로 이동합니다.

USB 연결 내부 카메라의 경우, USB 포트 장치 노드 아래의 ACPI 테이블에 USB 장치용 장치 노드를 만들어야 합니다.

주소(_ADR)를 지정하려면 다음 단계를 따르세요.

  1. 대상 PC에 Windows를 설치합니다.
  2. 장치 관리자로 이동합니다.
  3. 대상 웹캠을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
  4. 세부 정보 탭을 열고 속성 메뉴에서 주소를 선택합니다.
  5. 상자의 값은 장치가 있는 주소입니다.
  6. ACPI 테이블의 _ADR에 값을 설정합니다.
  7. ACPI 사양 및 PC의 디자인을 기반으로 _PLD 값을 설정합니다.

다음은 USB 연결 카메라에 대한 ACPI 테이블의 예제입니다. 이 예제에서 값은 0x1입니다. 아홉 번째 바이트에는 위치(비트[69:67])에 대한 패널 코드가 포함됩니다. 장치가 USB 복합 장치인 경우 PLD는 동영상 FUNCTION에 있어야 합니다. 이는 추가 Device() 항목이 필요할 수 있음을 의미합니다.


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인 경우에만 내부에 포함된 카메라의 장치 메타데이터 패키지에 대해 쿼리할 수 있습니다. Windows에서 내부 카메라의 메타데이터를 검색하여 장치 메타데이터 패키지가 장치 및 카메라 전용 Windows 스토어 장치 앱과 올바르게 연결되도록 하려면 OEM은 다음을 수행해야 합니다.

  • 장치 레지스트리 키에서 InternalDeviceModification 플래그를 사용하여 장치 노드에서 모델 ID를 설정합니다.

내부 카메라의 장치 노드에 대해 모델 ID를 설정하는 방법

내부 카메라에 대해 OEM은 모델 ID에 사용할 GUID를 만들고 이에 대한 레지스트리 키를 만듭니다. 모델 ID 속성은 특정 장치에 매핑되는 레지스트리 키로 구성된 레지스트리 기반 LUT(조회 테이블)인 InternalDeviceModification 메커니즘을 사용해 장치 노드에 추가됩니다. 이 InternalDeviceModification 테이블은 다음 레지스트리 키 아래에서 유지 관리됩니다.

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\InternalDeviceModification

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

InternalDeviceModification에 대한 레지스트리 키 및 값

InternalDeviceModification 레지스트리 키

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

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

 

모델 ID 레지스트리 키

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

 

하드웨어 ID 레지스트리 값

레지스트리 값 이름HardwareIDs
필수/옵션필수
형식다중 문자열
형식 요구 사항하드웨어 ID의 버스 접두사를 포함해야 합니다. 모든 "\" 문자는 "#"으로 바꿔야 합니다.
예제

USB#VID_1234&PID_ABCD&REV_0001

PCI#VEN_ABCD&DEV_1234&SUBSYS_000

설명여러 하드웨어 ID 값을 제공할 수 있습니다. 한 하드웨어 ID가 목록에 두 번 이상 나타나면 시스템은 하드웨어 ID를 기반으로 장치 노드의 Model ID를 설정합니다.

 

PLD_Panel 레지스트리 값

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

 

PLD_Panel 세부 정보

시스템에 두 개의 동일한 카메라 장치 및 동일한 하드웨어 ID가 있는 경우, ACPI 테이블에서 제공되는 PLD_Panel 값을 사용하면 카메라를 서로 구분할 수 있습니다. 서로 다른 Model ID를 만들려면 하드웨어 ID와 PLD_Panel 값을 함께 사용합니다.

참고  레지스트리 키의 PLD_Panel 설정은 선택 사항입니다. Windows에서는 ACPI 테이블의 설정에 의해 카메라의 실제 위치를 확인합니다.

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

설명
0맨 위로
1아래
2왼쪽
3오른쪽
4
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 메타데이터 시스템은 Model ID를 기반으로 장치 메타데이터 패키지를 다운로드합니다. 내부 카메라의 하드웨어 ID는 사용되지 않습니다.

Windows 스토어 장치 앱에 대한 장치 메타데이터를 만드는 방법에 대한 자세한 내용은 Windows 스토어 장치 앱 빌드를 참조하세요.

사전 설치

Windows 스토어 장치 앱과 장치 메타데이터 패키지 모두 OPK(OEM 사전 설치 키트)를 사용해 장치에 사전 설치할 수 있습니다.

관련 항목

내부 장치용 Windows 스토어 장치 앱

 

 

표시:
© 2015 Microsoft