개인 정보 보호 셔터 교체 이미지
이 문서에서는 셔터 상태 보고를 지원하는 카메라에 이미지 교체를 사용하도록 설정하는 방법을 설명합니다. 또한 사용자 지정 대체 이미지를 제공하는 방법도 설명합니다.
이 기능을 구현하기 전에 개인 정보 보호 셔터/스위치가 있는 카메라 드라이버는 카메라 센서에서 샘플을 제공했거나 셔터 상태를 감지하고 샘플 자체를 교체하기 위해 독점 기능을 구현해야 합니다. 이 기능을 사용하면 카메라 드라이버가 OS를 사용하여 샘플의 이미지를 OS 제공 솔루션 또는 카메라 드라이버에서 제공하는 사용자 지정 이미지로 바꿀 수 있습니다.
Windows 11 버전 21H2부터 WHCP(Windows 하드웨어 호환성 프로그램)에는 개인 정보 보호 셔터 또는 살인 스위치와 함께 제공되는 카메라가 카메라 셔터 상태를 보고해야 합니다. 이 요구 사항을 통해 운영 체제 및 애플리케이션은 셔터의 현재 상태를 알 수 있으며 셔터의 상태를 변경하는 방법에 대한 유용한 사용자 지침을 제공하는 데 사용됩니다. OEM 파트너는 이 메커니즘을 사용하여 드라이버에 기능을 빌드하여 카메라에서 나오는 이미지를 사용자에게 유익한 것으로 바꿉다. 이 기능을 사용하면 OEM이 DeviceMFT 내에서 독점 코드를 작성하지 않고도 이 동일한 기능을 활용할 수 있습니다.
요구 사항
이 기능은 개인 정보 보호 셔터/킬 스위치가 있는 카메라에서만 구현됩니다. 개인 정보 보호 셔터에 대한 구현 세부 정보는 개인 정보 보호 셔터/스위치 알림 문서에 설명되어 있습니다.
이미지 교체를 위해 사용자 지정 이미지를 지원하려는 디바이스는 해당 교체 이미지가 포함된 드라이버 패키지의 일부인 서명된 이진 파일도 제공해야 합니다.
구현 개요
디바이스에서 디바이스의 셔터가 닫혔다는 알림을 보낼 때 이미지 교체가 발생합니다. 셔터 상태가 닫히고 이미지 교체가 활성화된 경우 카메라 파이프라인은 카메라 드라이버에서 제공하는 사용자 지정 이미지 또는 여기에 표시된 받은 편지함 교체 이미지를 사용하여 교체 이미지를 로드합니다.
로드되면 파이프라인은 이미지를 카메라 드라이버의 현재 선택된 미디어 형식과 동일한 해상도 및 미디어 형식과 일치하는 출력 버퍼로 변환합니다. 해상도가 다르면 이미지가 확장 또는 축소되지만 기존 가로 세로 비율 외부로 확장되지는 않습니다.
이 시점부터 셔터 상태가 열리도록 변경될 때까지 카메라 드라이버에서 제공하는 모든 샘플에는 메타데이터 및 샘플 특성이 새 샘플로 복사되고 미디어 버퍼가 해제됩니다카드. 새 미디어 버퍼는 번역된 셔터 이미지에서 복사되고 대신 사용됩니다. 그러면 이 새 샘플이 원래 샘플인 것처럼 파이프라인을 통해 전송됩니다.
구현 가이드
이미지 교체를 사용하도록 설정하려면 값이 1로 설정된 카메라의 디바이스 인터페이스 노드에 다음 레지스트리 항목을 추가해야 합니다.
Regkey 형식 | Regkey 이름 | Regkey 값 |
---|---|---|
REG_DWORD | EnableImageReplacement | 0x1 |
드라이버 INF의 경우 여기에 표시된 대로 추가할 수 있습니다.
...
[Device.AddReg]
HKR,,EnableImageReplacement,%REG_DWORD%,1
...
[Strings]
REG_DWORD=0x00010001
MS-OS 설명자의 경우 다음 이름으로 추가할 수 있습니다.
UVC-EnableImageReplacement
사용자 지정 이미지
사용자 지정 이미지 교체를 위해 드라이버는 다음을 제공해야 합니다.
크기가 1000 x 1000픽셀인 BMP 형식 ARGB32 형식의 이미지 파일이 하나 이상 있습니다. 이 예제에서는 "TestImage.bmp"입니다.
이미지 파일이 리소스로 포함된 리소스 DLL입니다. 이 예제에서는 SampleSocMFT.dll.
드라이버 제공 이미지 파일은 1000 x 1000 픽셀의 ARGB32 이미지여야 합니다. 그러면 구현 개요에 표시된 이미지가 바뀝니다. 샘플에 대한 다른 모든 변경 내용은 설명된 대로 발생하며, 교체되는 이미지만 드라이버에 대한 사용자 지정입니다. 리소스 DLL은 드라이버 패키지의 일부여야 하며 서명해야 합니다. 대부분의 디바이스에서 드라이버 DeviceMFT에 배치하는 것을 의미합니다.
이미지 파일을 리소스 DLL에 추가하려면 프로젝트의 리소스 파일 *.rc를 다음과 같이 수정합니다.
#ifdef ID_REPLACEMENT_IMAGE
#define ID_REPLACEMENT_IMAGE 200
#endif
ID_REPLACEMENT_IMAGE RCDATA "TestImage.bmp"
다음 단계는 드라이버 INF를 수정하는 것입니다. 사용된 리소스 DLL이 새 리소스인 경우 CopyFiles 지시문의 일부여야 합니다. 마지막으로 3개의 추가 AddReg 지시문을 추가해야 합니다.
[SourceDisksFiles]
AvsCameraSim.sys=1
SampleSocMFT.dll=1
[DestinationDir]
AvsCameraSim.CopySys=13
AvsCameraSim.CopyDMFT=13
[AvsCameraSim.CopySys]
AvsCameraSim.sys
[AvsCameraSim.CopyDMFT]
SampleSocMFT.dll
[AvsCameraSim]
Include=ks.inf, kscaptur.inf
Needs=KS.registration, KSCaptur.Registration.NT
CopyFiles=AvsCameraSim.CopySys, AvsCameraSim.CopyDMFT
AddReg=AvsCameraSim.AddReg
[AvsCameraSim.AddReg]
HKR,,CameraImageResource,,%13%\%DMFT.NAME%
HKR,,CameraImageResourceID,%REG_DWORD%,%ResourceID%
HKR,,EnableImageReplacement,%REG_DWORD%,1
[Strings]
DMFT.Name="SampleSocMFT.dll"
REG_DWORD=0x00010001
;localizable
ResourceID=200
...
리소스에 대한 INF ResourceID 및 ID_REPLACEMENT_IMAGE 식별자를 일치시켜야 합니다. 단일 리소스 DLL에 여러 리소스 ID와 여러 이미지를 포함할 수 있고 올바른 리소스 ID를 선택하기 위해 INF를 지역화할 수 있도록 이러한 값을 조정할 수 있습니다.
사용자 지정 이미지 테두리
레터박싱이 발생할 때 검은색 테두리를 원하지 않는 사용자 지정 이미지의 경우 대체 샘플의 테두리 색을 사용자 지정하는 레지스트리를 통해 MFARGB 구조를 지정할 수 있습니다.
Regkey 형식 | Regkey 이름 | Regkey 값 |
---|---|---|
REG_BINARY | 카메라ImageBackgroundColor | 0x1 |
드라이버 INF의 경우 다음과 같이 추가할 수 있습니다.
...
[Device.AddReg]
HKR,,CameraImageBackgroundColor,%REG_ BINARY%,00,00,00,FF
[Strings]
REG_BINARY=0x00000001