다음을 통해 공유


IHV 및 OEM에 대한 자세한 디자인(카메라 프로필 V2)

새로운 카메라 프로필 V2 스키마를 이해하기 위해 간단한 프로필 선언으로 시작하고 개별 섹션을 이해하기 위해 해부합니다.

새로운 높은 프레임 속도 프로필을 지원하는 가상의 카메라를 사용합니다. 먼저 디바이스에 대한 몇 가지 가상 하드웨어 제약 조건을 정의합니다.

  1. 미리 보기 핀은 핀 0입니다. 카메라 드라이버에서 정의한 KSFILTER_DESCRIPTOR KSPIN_DESCRIPTOR_EX 배열이 정의되면 첫 번째 KSPIN_DESCRIPTOR_EX 미리 보기 핀의 설명자입니다. 마찬가지로 핀 1은 캡처 핀이고 핀 2는 사진 핀입니다.

  2. 하드웨어 제한으로 인해 문제의 디바이스는 프레임 속도 60fps 이상으로 크기 조정을 처리할 수 없습니다. 따라서 미리 보기 및 캡처 스트림 모두 동일한 해상도를 가져야 합니다.

  3. 마찬가지로 디바이스는 60fps 이상의 색 공간 변환을 처리할 수 없으므로 하위 형식은 미리 보기와 캡처 간에 동일해야 합니다.

  4. 카메라는 60fps에서 4K 16x9 비디오를 스트리밍할 수 있습니다. 카메라는 3840x2880@60fps 수 있습니다(60fps에서 4:3 비디오).

  5. 카메라는 60fps에서 실행할 때 사진 작업을 제공할 수 없습니다.

  6. 높은 프레임 속도 프로필 외에도 비디오 녹화 프로필을 선언합니다.

  7. 비디오 녹화 프로필은 미디어 형식의 조합을 허용하지만 30fps보다 큰 미디어 형식은 허용하지 않습니다.

  8. 비디오 녹화 프로필은 단일 사진 작업(예: 비사진 시퀀스)도 지원합니다.

INF 기반 선언의 경우 DDInstall.Interfaces 섹션에서 AddReg 지시문을 사용하여 프로필 정보를 게시합니다.

모든 핀 미디어 유형 필터에는 레지스트리 항목 이름이 할당되어야 합니다. 이 이름은 MTF#이어야 합니다. 여기서 #은 정수 값을 나타냅니다. 정수 값은 OS 레지스트리의 명명된 값을 나타내기 때문에 순차적일 필요는 없습니다.

이러한 제약 조건을 감안할 때 다음 프로필을 선언할 수 있습니다.

[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
; This is our High Frame Rate Profile.
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","BlockedControls",0,"VHDR;VPS;{E0766E84-36A2-4945-906D-092ECBD87445},2;WARM1"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF1",0,"Pin1:((RES==;FRT>=60,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF2",0,"Pin2:(!)"

; Declare the Video Recording Profile here.
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF1",0,"Pin1:((RES==;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"

OEMCameraProfileVersion

카메라 프로필 V2 지원을 사용하도록 설정하려면 프로필 버전을 선언합니다.

OEMCameraProfileVersion 항목은 프로필 버전을 정의하며 이 사양의 수정 버전에 대해 2여야 합니다.

[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2

OEMCameraProfileVersion 레지스트리 항목이 없고 OEMCameraProfile 항목이 있는 경우 파이프라인은 카메라 프로필 1507 스키마로 돌아갑니다.

이렇게 하면 기존 카메라 프로필과 이전 버전과의 호환성이 보장됩니다.

OEMCameraProfileVersion 항목을 사용할 수 있으면 기존 카메라 프로필 1507 정보가 무시되고 카메라 프로필 V2만 처리됩니다.

참고: OEMCameraProfileVersion 항목이 2로 설정되어 있지만 카메라 프로필 V2 선언을 찾을 수 없는 경우 프로필이 게시되지 않습니다.

선언되면 모든 프로필은 디바이스 인터페이스 노드 아래의 Profiles 레지스트리 키 아래에 저장되어야 합니다.

[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
; This is our High Frame Rate Profile.
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"

각 프로필은 프로필 ID를 사용하여 프로필 키 아래의 하위 키여야 합니다.

프로필 ID는 프로필 유형 프로필 인덱스의 조합입니다.

프로필 형식은 다음 문자열 중 하나이거나 {GUID} 문자열일 수 있습니다.

  • KSCAMERAPROFILE_VideoRecording

  • KSCAMERAPROFILE_HighQualityPhoto

  • KSCAMERAPROFILE_BalancedVideoAndPhoto

  • KSCAMERAPROFILE_VideoConferencing

  • KSCAMERAPROFILE_PhotoSequence

  • KSCAMERAPROFILE_FaceAuth_Mode

  • KSCAMERAPROFILE_HighFrameRate

  • KSCAMERAPROFILE_HDRWithWCGVideo

  • KSCAMERAPROFILE_HDRWithWCGPhoto

  • KSCAMERAPROFILE_VariablePhotoSequence

  • KSCAMERAPROFILE_VideoHDR8

프로필 인덱스 값은 0에서 0x7FFFFFFF 수 있습니다. 높은 순서의 비트 집합이 있는 인덱스 값은 내부 사용을 위해 예약되어 있습니다.

카메라 프로필 V2의 기초는 두 기본 스키마 항목으로 구분됩니다.

  • 프로필 제약 조건

  • 미디어 형식 필터 고정

프로필 제약 조건

프로필 제약 조건은 핀 미디어 형식 필터 처리에 영향을 주는 프로필 전체 선언입니다. 지원되는 6개의 태그입니다. ";"로 구분된 순서로 나타날 수 있습니다.

프로필 제약 조건 Description
LRS 모든 핀에서 잠금 해상도. 프로필에 선언된 모든 핀은 활성 상태일 때 동일한 해상도를 가져야 합니다.
LFR 모든 핀에서 프레임 속도를 잠급니다. 프로필에 선언된 모든 핀은 활성 상태일 때 프레임 속도가 동일해야 합니다.
LST 모든 핀에서 하위 형식을 잠급니다. 프로필에 선언된 모든 핀은 활성 상태일 때 동일한 하위 형식을 가져야 합니다.
Aar 핀 수준 프로필 선언을 모든 가로 세로 비율에 적용합니다.

해상도 기반 필터링은 너비 * 해상도 높이의 제품을 사용하여 수행되며 해당 제품은 비교를 위한 값으로 사용됩니다. 그러나 AAR 태그가 설정되지 않은 경우 가로 세로 비율이 동일한 해상도에 대해서만 비교가 수행됩니다.
표시 사용 안 함. 이 제약 조건이 프로필 제약 조건에 사용되는 경우 미디어 형식 필터 고정은 무시되며 잘못된 프로필 구문으로 처리됩니다.

이 태그는 다른 프로필 제약 조건 태그와 결합되지 않을 수 있습니다.
UAR 핀 간의 해상도 가로 세로 비율의 임의 조합을 허용합니다.

기본적으로 핀 간 가로 세로 비율은 동일해야 합니다. 이 태그는 해당 기본 제약 조건을 제거합니다.

참고: 애플리케이션은 사용 가능한 핀에서 동일한 가로 세로 비율을 유지하는 것이 좋습니다.

UAR 태그가 프로필 선언에서 설정되지 않은 경우 핀 간의 모든 가로 세로 비율이 동일해야 합니다. 특히 4:3에 캡처 핀에서 사진을 찍거나 스트리밍하는 동안 16:9의 스트리밍 미리 보기는 지원되지 않습니다. 이렇게 하면 오류가 발생합니다.

위의 샘플 프로필 처리:

[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
; This is our High Frame Rate Profile.
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"

프로필 제약 조건은 [KSCAMERAPROFILE_HighFrameRate,0] 프로필의 경우 모든 핀의 해상도와 하위 형식이 동일해야 했음을 나타냅니다. 이는 가상 카메라의 HW 제약 조건과 일치합니다(60fps 이상에서 실행할 때 크기 조정/색 공간 변환 없음).

인코더 제약 조건

프로필 제약 조건의 선택적 집합에는 비디오 인코딩 작업에 대한 프로필을 선택하도록 선택하는 애플리케이션에 대한 권장 인코더 매개 변수가 포함될 수 있습니다. 예를 들어 IHV/OEM은 미디어 형식이 해상도 및/또는 프레임 속도 측면에서 미리 정해진 임계값을 초과하는 경우 특정 시스템에 H264를 통해 HEVC를 사용하도록 권장할 수 있습니다.

또한 컴퓨터에 있는 HW 인코더가 인코딩 매개 변수를 사용하여 구성할 때 더 최적의 작업을 제공할 수 있으므로 OEM은 애플리케이션에 더 많은 "힌트"가 있는 프로필을 작성하도록 선택할 수 있습니다.

이 지원을 용이하게 하기 위해 다음 추가 제약 조건이 모든 프로필에 추가될 수 있습니다.

기본 인코딩된 하위 형식

다음 하위 형식 목록은 인코더에 대한 기본 인코딩된 하위 형식입니다.

  • eSPSubtype_H264

  • eSPSubtype_HEVC

이러한 두 제약 조건은 상호 배타적입니다. 하나만 선언할 수 있습니다. 둘 다 선언하면 프로필이 잘못되고 거부됩니다.

기본 인코딩된 하위 형식 제약 조건이 선언되면 IMFSensorProfile의 MF 특성 저장소는 선언된 Preferred Encoded Subtype을 MF_MT_SUBTYPE 특성과 함께 노출합니다.

기본 인코더 프로필

다음 기본 인코더 프로필 목록은 eAVEncH264VProfile 열거형에 해당합니다.

  • eSPProfile_Simple

  • eSPProfile_Base

  • eSPProfile_Main

  • eSPProfile_High

  • eSPProfile_422

  • eSPProfile_High10

  • eSPProfile_444

  • eSPProfile_Extended

  • eSPProfile_ScalableBase

  • eSPProfile_ScalableHigh

  • eSPProfile_MultiviewHigh

  • eSPProfile_StereoHigh

  • eSPProfile_ConstrainedBase

  • eSPProfile_UCConstrainedHigh

  • eSPProfile_UCScalableConstrainedBase

  • eSPProfile_UCScalableConstrainedHigh

  • eSPProfileH265_Main_420_8

  • eSPProfileH265_Main_420_10

  • eSPProfileH265_Main_420_12

  • eSPProfileH265_Main_422_10

  • eSPProfileH265_Main_422_12

  • eSPProfileH265_Main_444_8

  • eSPProfileH265_Main_444_10

  • eSPProfileH265_Main_444_12

  • eSPProfileH265_Monochrome_12

  • eSPProfileH265_Monochrome_16

  • eSPProfileH265_MainIntra_420_8

  • eSPProfileH265_MainIntra_420_10

  • eSPProfileH265_MainIntra_420_12

  • eSPProfileH265_MainIntra_422_10

  • eSPProfileH265_MainIntra_422_12

  • eSPProfileH265_MainIntra_444_8

  • eSPProfileH265_MainIntra_444_10

  • eSPProfileH265_MainIntra_444_12

  • eSPProfileH265_MainIntra_444_12

  • eSPProfileH265_MainStill_420_8

  • eSPProfileH265_MainStill_444_8

  • eSPProfileH265_MainStill_444_16

위의 기본 인코더 프로필 선언은 상호 배타적입니다. 하나만 선언할 수 있습니다. 둘 이상을 선언하면 프로필이 잘못되고 거부됩니다.

기본 인코더 프로필 제약 조건이 선언되면 IMFSensorProfile의 MF 특성 저장소는 선언된 Preferred Encoder Profile을 MF_MT_MPEG2_PROFILE 특성과 함께 노출합니다.

참고: eSPProfileH265 프로필은 HEVC로 인코딩된 하위 형식에만 유효합니다.

권장 BFrame Count 제약 조건은 OEM이 인코딩된 비디오에 권장되는 B 프레임 수를 나타내는 방법을 제공합니다.

  • eSPBFCount_X

여기서 X는 BFrame 개수를 나타냅니다. 예를 들어 eSPBFCount_0 0B 프레임 수를 나타냅니다.

권장 BFrame Count 제약 조건이 선언되면 IMFSensorProfile의 MF 특성 저장소는 CODECAPI_AVEncMPVDefaultBPictureCount 특성으로 선언된 권장 BFrame Count를 노출합니다.

권장 비트 속도 제약 조건은 OEM이 평균 인코딩 비트 속도(적절한 인코딩 속도 제어 모드를 사용하는 경우) 및/또는 최대 비트 속도를 모두 지정하는 방법을 제공합니다.

  • eSPBitRate_XXXXX

  • eSPMaxBitRate_XXXXX

이러한 두 제약 조건은 독립적으로 또는 함께 지정될 수 있습니다. XXXXX는 Kbps의 비트 속도를 나타냅니다. 예를 들어 eSPBitRate_5000 초당 5,000,000비트입니다.

OEM에서 지정한 eSPBitRate_XXXXX CODECAPI_AVEncCommonMeanBitRate 특성을 통해 IMFSensorProfile의 MF 특성 저장소를 통해 노출됩니다.

OEM에서 지정한 eSPMaxBitRate_XXXXX CODECAPI_AVEncCommonMaxBitRate 통해 IMFSensorProfile의 MF 특성 저장소를 통해 노출됩니다.

샘플 인코더 제약 조건

다음 샘플 INF에서는 OEM이 인코더 제약 조건을 선언하는 방법을 보여 줍니다.

[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","Constraint",0,"eSPSubtype_HEVC;eSPProfile_Main;eSPBFCount_1;eSPBitRate_20000;eSPMaxBitRate_50000"

위의 샘플 인코더 제약 조건은 다음과 같이 다양한 인코더 특성을 포함하는 KSCAMERAPROFILE_VideoRecording,0 프로필의 IMFSensorProfile(아래 API 설명 참조) MF 특성 저장소를 생성합니다.

HRESULT
CheckEncoderParameters(
    _In_ IMFSensorProfile* pProfile
    )
{
    HRESULT hr = S_OK;
    ComPtr<IMFAttributes> spAttributes;
    GUID guidSubtype = GUID_NULL;
    UINT32 eProfile = eAVEncH264VProfile_unknown;
    UINT32 uiBFrameCount = 0;
    UINT32 uiBitRate = 0;
    UINT32 uiMaxBitRate = 0;

    if (nullptr == pProfile)
    {
        return E_INVALIDARG;
    }

    RETURN_IF_FAILED (pProfile->QueryInterface(IID_PPV_ARGS(&spAttributes)));
    if (SUCCEEDED(spAttributes->GetGUID(MF_MT_SUBTYPE, &guidSubtype)))
    {
        if (guidSubtype == MFVideoFormat_HEVC)
        {
            // Use HEVC codec.
        }
        else
        {
            // Use H264 codec.
        }
    }
    if (SUCCEEDED(spAttributes->GetUINT32(MF_MT_MPEG2_PROFILE, &eProfile)))
    {
        // Use the eProfile provided for encoder profile.
    }
    if (SUCCEEDED(spAttributes->GetUINT32(CODECAPI_AVEncMPVDefaultBPictureCount, &uiBFrameCount)))
    {
        // This is the BFrame count...
    }
    if (SUCCEEDED(spAttributes->GetUINT32(CODECAPI_AVEncCommonMeanBitRate, &uiBitRate)))
    {
        // This is the average bit rate...
    }
    if (SUCCEEDED(spAttributes->GetUINT32(CODECAPI_AVEncCommonMaxBitRate, &uiMaxBitRate)))
    {
        // This is the max bit rate...
    }

    return hr;
}

WinRT API 화면에서 이러한 동일한 특성을 CameraProfile.Properties를 통해 가져올 수 있습니다(아래 WinRT API 설명 참조).

차단된 컨트롤

차단된 컨트롤을 사용하면 OEM/IHV가 선택한 프로필에 따라 특정 카메라 컨트롤을 선택적으로 사용하지 않도록 설정할 수 있습니다.

[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
; This is our High Frame Rate Profile.
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","BlockedControls",0,"VHDR;PHSEQ;{E0766E84-36A2-4945-906D-092ECBD87445},2;WARM1"

위의 예제에서 KSCAMERAPROFILE_HighFrameRate,0은 KSPROPERTY를 사용하는 사용자 지정 컨트롤인 VHDR(Video HDR), PHSEQ(사진 시퀀스)를 선언합니다. 설정 = {E0766E84-36A2-4945-906D-092ECBD87445} 및 KSPROPERTY.Id = 2이며 Pin1의 웜 시작은 지원되지 않습니다.

이 프로필을 선택하면 파이프라인은 해당 컨트롤이 DMFT/카메라 드라이버에 발급되지 않도록 명시적으로 차단합니다. 이렇게 하면 DMFT/카메라 드라이버가 모든 카메라 컨트롤에 대한 지원을 노출할 수 있으며 파이프라인은 카메라 프로필을 사용하는 애플리케이션이 차단된 컨트롤을 터치하려고 시도하지 않도록 합니다.

차단된 컨트롤은 정의된 카메라 컨트롤에 대해 아래 태그 중 하나를 사용하여 정의하거나 {GUID},ID 형식을 사용할 수 있습니다.

태그 컨트롤 설명
PHSEQ 확장된 카메라 컨트롤 - 사진 시퀀스

참고: 사진 시퀀스를 차단하면 가변 사진 시퀀스도 차단됩니다.
따뜻한# 확장된 카메라 컨트롤 - 웜 시작 컨트롤.

#은 웜 시작 컨트롤을 사용하지 않도록 설정할 고정 ID를 나타냅니다.
장면 확장된 카메라 컨트롤 - 장면 모드.
토치 확장된 카메라 컨트롤 - 토치 모드.
플래시 확장 카메라 컨트롤 - 플래시 모드.
ISO 확장 카메라 컨트롤 - ISO
EVCOMP 확장 카메라 컨트롤 - EV 보정
WBAL 확장 카메라 컨트롤 - 화이트 밸런스
박람회 확장 카메라 컨트롤 - 노출
초점 확장 카메라 컨트롤 - 포커스
ROI 확장된 카메라 컨트롤 - ROI
EXTZOOM 확장된 카메라 컨트롤 - 확대/축소
ADVISO 확장 카메라 컨트롤 - ISO Advanced
VIDST 확장 카메라 컨트롤 - 비디오 손떨림 보정
FACEDT 확장 카메라 컨트롤 - 얼굴 감지
VHDR 확장 카메라 컨트롤 - 비디오 HDR
Ois 확장 카메라 컨트롤 - 광학 이미지 손떨림 보정
ADVPHOTO 확장 카메라 컨트롤 - 고급 사진
FACEAUTH 확장 카메라 컨트롤 - 얼굴 인증
보안 확장 카메라 컨트롤 - 보안 모드
Vfp 확장 카메라 컨트롤 - VFR

확장 카메라 컨트롤 외에도 프로필은 PROPSETID_VIDCAP_VIDEOPROCAMP 및 PROPSETID_VIDCAP_CAMERACONTROL 컨트롤 집합에서 레거시 컨트롤을 차단할 수도 있습니다. PROPSETID_VIDCAP_VIDEOPROCAMP 컨트롤은 다음을 사용하여 차단할 수 있습니다.

VIDPROC#

여기서 #은 컨트롤 ID를 나타냅니다.

KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS // 0
KSPROPERTY_VIDEOPROCAMP_CONTRAST // 1
KSPROPERTY_VIDEOPROCAMP_HUE // 2
KSPROPERTY_VIDEOPROCAMP_SATURATION // 3
KSPROPERTY_VIDEOPROCAMP_SHARPNESS // 4
KSPROPERTY_VIDEOPROCAMP_GAMMA // 5
KSPROPERTY_VIDEOPROCAMP_COLORENABLE // 6
KSPROPERTY_VIDEOPROCAMP_WHITEBALANCE // 7
KSPROPERTY_VIDEOPROCAMP_BACKLIGHT_COMPENSATION // 8
KSPROPERTY_VIDEOPROCAMP_GAIN // 9
KSPROPERTY_VIDEOPROCAMP_DIGITAL_MULTIPLIER // 10
KSPROPERTY_VIDEOPROCAMP_DIGITAL_MULTIPLIER_LIMIT // 11
KSPROPERTY_VIDEOPROCAMP_WHITEBALANCE_COMPONENT // 12
KSPROPERTY_VIDEOPROCAMP_POWERLINE_FREQUENCY // 13

예를 들어 VIDPROC13 전력선 주파수 컨트롤을 차단합니다.

마찬가지로 PROPSETID_VIDCAP_CAMERACONTROL 다음을 사용하여 차단할 수 있습니다.

CAMCTRL#

여기서 #은 컨트롤 ID를 나타냅니다.

KSPROPERTY_CAMERACONTROL_PAN // 0
KSPROPERTY_CAMERACONTROL_TILT // 1
KSPROPERTY_CAMERACONTROL_ROLL // 2
KSPROPERTY_CAMERACONTROL_ZOOM // 3
KSPROPERTY_CAMERACONTROL_EXPOSURE // 4
KSPROPERTY_CAMERACONTROL_IRIS // 5
KSPROPERTY_CAMERACONTROL_FOCUS // 6
KSPROPERTY_CAMERACONTROL_SCANMODE // 7
KSPROPERTY_CAMERACONTROL_PRIVACY // 8
KSPROPERTY_CAMERACONTROL_PANTILT // 9
KSPROPERTY_CAMERACONTROL_PAN_RELATIVE // 10
KSPROPERTY_CAMERACONTROL_TILT_RELATIVE // 11
KSPROPERTY_CAMERACONTROL_ROLL_RELATIVE // 12
KSPROPERTY_CAMERACONTROL_ZOOM_RELATIVE // 13
KSPROPERTY_CAMERACONTROL_EXPOSURE_RELATIVE // 14
KSPROPERTY_CAMERACONTROL_IRIS_RELATIVE // 15
KSPROPERTY_CAMERACONTROL_FOCUS_RELATIVE // 16
KSPROPERTY_CAMERACONTROL_PANTILT_RELATIVE // 17
KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH // 18
KSPROPERTY_CAMERACONTROL_AUTO_EXPOSURE_PRIORITY // 19

미디어 유형 필터 고정

샘플 프로필로 이동하면 높은 프레임 속도 프로필에 대한 고정 미디어 유형 필터가 표시됩니다.

[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
; This is our High Frame Rate Profile.
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF1",0,"Pin1:((RES==;FRT>=60,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF2",0,"Pin2:(!)"

높은 프레임 속도 프로필의 Pin0(미리 보기 핀) 섹션에서는 핀에서 사용할 수 있는 해상도/프레임 속도를 허용합니다. 가상 디바이스의 경우 드라이버는 미리 보기 핀에 대해 30fps보다 큰 프레임 속도를 노출하지 않습니다.

INF를 사용하여 선언된 핀 번호는 AVStream 미니 포트 드라이버가 보급하는 KSFILTER_DESCRIPTOR 구조에 정의된 KSPIN_DESCRIPTOR_EX 구조체의 0 기반 인덱스 서수에 해당합니다.

Pin Media Type Filter 및 해당 필터 집합을 해석하려면 구문 스키마를 정의해야 합니다.

이 문자열 정의는 다음 Pin Media Type Filter 스키마를 사용합니다. []이 표시된 경우 포함된 문자열은 선택 사항이며, 그렇지 않으면 구문에 선언된 모든 문자열이 필수입니다(제약 조건 구문은 대/소문자를 구분하지 않습니다).

PinMediaTypeFilter     : Pin#:[(!)]|(FilterSet0)(FilterSet1)...(FilterSetN)
FilterSet              : [!](ResolutionFilter;FrameRateFilter;FourCCFilter)
Resolution             : RES[==|<=|>=|!=]Width,Height
FrameRate              : FRT[==|<=|>=|!=]Num,Denom
Subtype                : SUT[==|!=]SubtypeValue
SubtypeValue           : <See below>

SubtypeValue 는 4 CC 값의 단일 16진수 표현 형식을 사용할 수 있습니다(예: 0x3231564E == NV12), 사용자 지정 미디어 유형의 경우 {GUID}(열기/닫기 중괄호가 필요하며 GUID는 {55D24460-45B7-450E-829B-91A94FF84180} 또는 잘 알려진 태그(NV12, YUY2 등)의 형식을 사용해야 합니다.

알려진 하위 형식에 나열된 태그가 없는 경우 {GUID} 표현을 MFVideoFormat_* 하위 형식에도 사용할 수 있습니다.

샘플의 경우:

Pin0:((RES==;FRT==;SUT==ALL))

구문 분석:

Resolution  : Ignore all resolution checks (implies all resolutions are allowed)
Frame rate  : Ignore all frame rate checks (implies all frame rates are allowed)
Subtype     : All

의미는 "모든 미디어 형식 허용"입니다.

개별 해상도, 프레임 속도 및 하위 형식 태그의 정의는 아래 프레임 속도 필터를 참조하세요.

Pin1(캡처 핀)의 경우 프레임 속도 선언에는 다른 값이 있습니다.

[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
; This is our High Frame Rate Profile.
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF1",0,"Pin1:((RES==;FRT>=60,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF2",0,"Pin2:(!)"

구문 분석:

Resolution  : Ignore all resolution checks (implies all resolutions are allowed)
Frame rate  : Equal or greater than 60,1
Subtype     : All

프레임 속도가 60fps 이상인 미디어 형식만 이 프로필에서 Pin1에 대해 허용됩니다.

Pin2의 경우(사진 핀)을 사용할 수 없습니다.

[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
; This is our High Frame Rate Profile.
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF1",0,"Pin1:((RES==;FRT>=60,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF2",0,"Pin2:(!)"

구문에서 알 수 있듯이 Pin 미디어 형식 필터는 선택적으로 단일(!) 선언일 수 있으며, 이는 해당 핀에 대해 지원되는 미디어 형식이 없음을 의미합니다(지원되는 미디어 형식이 없는 핀은 클라이언트에 숨겨집니다).

비디오 녹화 프로필로 이동하면 가상 카메라는 비디오 녹화 또는 높은 프레임 속도 시나리오에서 동시에 보장되는 미디어 유형만 있는 30fps 미리 보기만 노출하므로 미리 보기 핀에 대한 제약 조건이 없습니다.

; Declare the Video Recording Profile here.
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF1",0,"Pin1:((RES==;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"

그러나 캡처 핀의 경우 미리 보기와 캡처 또는 사진 작업 간에 다양한 해상도에 대해 더 높은 프레임 속도를 지원할 수 없으므로 이를 30fps 미디어 유형으로 제한해야 합니다.

; Declare the Video Recording Profile here.
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF1",0,"Pin1:((RES==;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"

이 작업은 FRT<=(보다 작음 태그의 프레임 속도 같음) 및 프레임 속도 30fps를 지정하여 수행됩니다.

Pin1:((RES==;FRT<=30,1;SUT==ALL))

구문 분석:

Resolution    : Ignore all resolution checks (implies all resolutions are allowed)
Frame rate    : Equal or less than 30,1
Subtype       : All

사진 핀의 경우 PHSEQ를 사용하여 BlockedControls를 허용되지 않는 컨트롤로 선언하여 사진 시퀀스 지원을 선언하지 않습니다.

; Declare the Video Recording Profile here.
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF1",0,"Pin1:((RES==;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"

필터 집합

이전 섹션에서는 여러 필터 집합을 살펴보고 이러한 스키마 문자열 중 일부가 나타내는 내용을 설명했습니다. 이 시점에서 추가 논의를 위해 필터 집합의 스키마 구문을 설명해야 합니다.

각 필터 집합은 해상도, 프레임 속도 및 하위 형식에 대한 특정 선언 집합으로 구성됩니다. 지정된 순서대로 이 세 가지 선언은 유효한 필터 집합에 필요합니다.

핀 미디어 형식 필터는 여러 필터 항목으로 구성됩니다.

PinMediaTypeFilter : Pin#:[(!)]|(FilterSet0)(FilterSet1)...(FilterSetN)
FilterSet          : [!](ResolutionFilter;FrameRateFilter;SubtypeFilter)

필터 집합이 이 스키마를 충족하지 않으면 전체 프로필 선언이 거부됩니다.

모든 프로필 스키마 문자열은 대/소문자를 구분하지 않습니다.

각 필터는 ";"로 구분되어야 하며 해상도 필터, 프레임 속도 필터 및 하위 형식 필터의 트리오는 열려 있는/닫는 괄호로 제한되어야 합니다.

필터 집합의 또 다른 예는 다음과 같습니다.

; Allow only 1080p@60fps for any media subtype.
Pin0:((RES==1920,1080;FRT==60,1;SUT==ALL))

; Allow either 1080p@60fps or 1080p@120fps for any subtype but nothing else.
Pin0:((RES==1920,1080;FRT==60,1;SUT==ALL))((RES==1920,1080;FRT==120,1;SUT==ALL))

위의 두 번째 예제와 같이 핀의 여러 필터 집합에 대해 비교는 두 필터 집합의 논리적 OR로 수행됩니다. 예를 들어 미디어 형식이 두 필터 집합 중 하나와 일치하는 경우 허용됩니다.

참고: 선언의 읽기 기능을 용이하게 하기 위해 필터 집합을 여러 줄로 설명할 수 있습니다. 이렇게 하려면 동일한 Pin#을 함께 그룹화해야 합니다.

; Allow only 1080p@60fps or 1080p@120fps
Pin0:((RES==1920,1080;FRT==60,1;SUT==ALL))
Pin0:((RES==1920,1080;FRT==120,1;SUT==ALL))

의미상 위의 선언과 동일합니다. 그러나 각 줄에는 고유한 MTF# 항목이 있어야 합니다.

Disabled Pin

해상도 필터

문서 용어에 정의된 대로 확인 필터는 IMFMediaType의 MF_MT_FRAME_SIZE 특성에 따라 필터링하는 방법을 정의합니다.

해상도 필터 구문:

Resolution : RES[==|<=|>=|!=]Width,Height

해상도 필터 특성

해상도 필터 특성은 RES 문자열을 사용합니다. 이 문자열은 대/소문자를 구분하지 않습니다.

해상도 필터 비교 연산자

지원되는 연산자는 다음과 같습니다.

비교 연산자 Description
== 해상도가 선언된 해상도와 같으면 허용합니다.

필터 집합이 제외 필터 집합인 경우 해상도가 선언된 해상도와 같으면 이 태그는 허용되지 않습니다.

참고: 선언에서 == 연산자를 사용하고 필터 값이 비어 있으면(예: RES==;) MF_MT_FRAME_SIZE 특성이 무시됩니다.
<= 해상도가 선언된 해상도보다 크거나 같으면 허용합니다.

해상도 비교는 총 픽셀 수(너비 *높이의 곱)를 기준으로 가로 세로 비율을 기준으로 수행됩니다.

AAR이 프로필 제약 조건에서 선언된 경우 총 픽셀 수는 모든 가로 세로 비율에 적용됩니다. 그렇지 않으면 가로 세로 비율만 일치합니다.

필터 집합이 제외 필터 집합인 경우 이 태그는 해상도가 선언된 해상도와 같거나 작으면 허용하지 않습니다.
>= 해상도가 선언된 해상도보다 크거나 같으면 허용합니다.

해상도 비교는 총 픽셀 수(너비 * 높이의 곱)를 기준으로 가로 세로 비율을 기준으로 수행됩니다.

AAR이 프로필 제약 조건에서 선언된 경우 총 픽셀 수는 모든 가로 세로 비율에 적용됩니다. 그렇지 않으면 가로 세로 비율만 일치합니다.

필터 집합이 제외 필터 집합인 경우 이 태그는 해상도가 선언된 해상도보다 크거나 같으면 허용하지 않습니다.
!= 해결 방법이 선언된 해상도와 같지 않은 경우 허용합니다.

필터 집합이 제외 필터 집합인 경우 해상도가 선언된 해상도와 같지 않으면 이 태그가 허용되지 않습니다.

해상도 필터 값

해상도 필터 값의 너비와 높이는 공백 없이 쉼표(",")로 구분된 10진수 형식이어야 합니다.

; 1080p only.
RES==1920,1080

다음 예제를 참조하세요.

; 1080p and any lower resolution.
RES<=1920,1080

AAR 태그가 프로필 제약 조건에 선언되지 않은 경우에만 16:9 해상도가 1080p보다 작거나 일치합니다. 그러나 AAR이 선언되면 Width * Height의 곱이 같거나 작은 모든 해상도와 일치합니다(1920 * 1080 = 2073600).

예를 들면 다음과 같습니다.

  • AAR이 선언되지 않은 경우 이 항목은 720p와 일치하지만 1280x960은 일치하지 않습니다.

  • AAR이 선언된 경우 이 항목은 720p, 1280x960 및 모든 낮은 해상도와 일치합니다.

가로 세로 비율 16:9 및 4:3 모두에 대해 선택적 해상도가 일치하도록 AAR이 선언되지 않은 경우 여러 필터 집합을 사용할 수 있습니다.

; This will match any 16:9 resolution of 1080p or lower
; and match any 4:3 resolution of 800x600 or lower.
; Effectively skipping 1280x960.
((RES<=1920,1080;FRT==;SUT==ALL))((RES<=800,600;FRT==;SUT==ALL))

모든 해상도와 일치하려면 0,0보다 크거나 같음을 지정합니다.

; Match all resolutions.
RES>=0,0

프레임 속도 필터

문서 용어에 정의된 대로 프레임 속도 필터는 IMFMediaType의 MF_MT_FRAME_RATE 특성에 따라 필터링하는 방법을 정의합니다.

프레임 속도 필터 구문:

FrameRate : FRT[==|<=|>=|!=]Num,Denom

프레임 속도 필터 특성

프레임 속도 필터 특성은 FRT 문자열을 사용합니다. 이 문자열은 대/소문자를 구분하지 않습니다.

프레임 속도 필터 비교 연산자

지원되는 프레임 속도 태그는 다음과 같습니다.

비교 연산자 Description
== 프레임 속도가 선언된 프레임 속도와 같으면 허용합니다.

필터 집합이 제외 필터 집합인 경우 프레임 속도가 선언된 프레임 속도와 같으면 이 태그가 허용되지 않습니다.

참고: 선언에서 == 연산자를 사용하고 필터 값이 비어 있으면(예: FRT==;) MF_MT_FRAME_RATE 특성이 무시됩니다.
<= 프레임 속도가 선언된 프레임 속도보다 크거나 작은 경우 허용합니다.

필터 집합이 제외 필터 집합인 경우 이 태그는 프레임 속도가 선언된 프레임 속도와 같거나 작으면 허용하지 않습니다.
>= 프레임 속도가 선언된 프레임 속도보다 크거나 같은 경우 허용합니다.

필터 집합이 제외 필터 집합인 경우 이 태그는 프레임 속도가 선언된 프레임 속도보다 크거나 같으면 허용하지 않습니다.
!= 프레임 속도가 선언된 프레임 속도와 같지 않은 경우에만 허용합니다.

필터 집합이 제외 필터 집합인 경우 프레임 속도가 선언된 프레임 속도와 같지 않으면 이 태그가 허용되지 않습니다.
; Allow 30fps.
FRT==30,1

; Allow 30fps or lower.
FRT<=30,1

; Allow 60fps or higher.
FRT>=60,1

; Match for all frame rate.
FRT>=0,0

FRT==;, FRT>=0,0에는 미묘한 의미 체계 차이가 있습니다.

FRT==; : Ignore all frame rate checks for the Filter Set.

FRT>=0,0 : Match any frame rate.

The difference between FRT==; 및 FRT>=0,0은 포함 필터 집합과 제외 필터 집합 모두에 대해 동일한 의미를 가집니다. FRT>=0,0의 의미는 포함 필터 집합인지 아니면 제외 필터 집합인지에 따라 변경됩니다.

제외 필터 집합 에 대한 설명은 필터 집합을 참조하세요.

하위 유형 필터

하위 형식 필터는 IMFMediaType의 MF_MT_SUBTYPE 특성에 따라 필터링하는 방법을 정의합니다.

하위 형식 필터 구문:

Subtype : SUT[==|!=]SubtypeValue
SubtypeValue : <See Below>

하위 유형 필터 특성

하위 유형 필터 특성은 SUT 문자열을 사용합니다. 이 문자열은 대/소문자를 구분하지 않습니다.

하위 형식 필터 비교 연산자

지원되는 비교 연산자는 다음과 같습니다.

비교 연산자 Description
== 하위 형식이 선언된 하위 형식과 같으면 허용합니다.

필터 집합이 제외 필터 집합인 경우 하위 형식이 선언된 하위 형식과 같으면 이 태그가 허용되지 않습니다.

참고: 선언에서 == 연산자를 사용하고 필터 값이 비어 있으면(예: FRT==;) MF_MT_SUBTYPE 특성이 무시됩니다.
!= 하위 형식이 선언된 하위 형식과 같지 않으면 허용합니다.

필터 집합이 제외 필터 집합인 경우 하위 형식이 선언된 하위 형식과 같지 않으면 이 태그가 허용되지 않습니다.

하위 형식 필터에는 같음 또는 작음(<=) 및 같음 또는 보다 큼(>=) 연산자가 지원되지 않습니다. 선언된 경우 프로필이 유효하지 않으며 파이프라인에서 거부됩니다.

하위 형식 필터 값

하위 형식 필터 값은 FourCC 값의 16진수 표현, 사용자 지정 미디어 형식이 사용되는 경우 GUID 문자열 선언(알려진 MFVideoFormat 하위 형식 GUID도 사용할 수 있음) 또는 알려진 하위 형식 태그(아래 목록 참조)일 수 있습니다.

; Match any media type which has NV12 subtype
SUT==0x3231564E
; Same as above…
SUT=={3231564E-0000-0010-8000-00AA00389B71}
; Still the same (and the recommended declaration).
SUT==NV12

; Allow any subtype except for NV12
SUT!=0x3231564E
; Another way to say the same thing
SUT!={3231564E-0000-0010-8000-00AA00389B71}
; Yet another (and recommended).
SUT!=NV12

; Valid syntax. Profile allow/disallow should ignore
; the subtype and only check against resolution and
; frame rate.
SUT==;

0/GUID_NULL 및 ALL 값은 특별한 의미가 있습니다.

"모든 4개의 CC 값"을 의미합니다.

; Match all subtypes
SUT==0
; Another way to say the same thing
SUT=={00000000-0000-0000-0000-000000000000}
; Yet another (and recommended).
SUT==ALL

의미상 SUT==; 및 SUT==0은 의미가 미묘하게 다릅니다.

포함 필터에서 사용되는 경우 하위 형식 허용과 같은 효과가 있습니다. 그러나 제외 필터에서 사용할 경우 SUT==0은 모든 하위 형식을 제외하는 것을 의미합니다. 그러나 전체 핀을 사용 안 함(!)으로 표시하는 것과 동일한 효과가 있으므로 제외 필터에서 SUT==0을 사용할 이유가 없습니다.

알려진 하위 형식 태그

태그
RGB32
ARGB32
RGB24
L8
L16
D16
AI44
AYUV
YUY2
YVYU
YVU9
UYVY
NV11
NV12
YV12
I420
IYUV
Y210
Y216
Y410
Y416
Y41P
Y41T
Y42T
P210
P216
P010
P016
V210
V216
V410
MP43
MP4S
M4S2
MP4V
WMV1
WMV2
WMV3
WVC1
MSS1
MSS2
MPG1
DVSL
DVSD
DVHD
DV25
DV50
DVH1
Dvc
H264
H265
MJPG
420O
HEVC
Hevs
VP80
VP90
ORAW
H263
VP10
AV01
JPEG

제외 필터 집합

지금까지 필터 집합의 모든 예는 포괄 필터 항목입니다. 의미상 "미디어 형식이 조건을 충족하는 경우 클라이언트에서 미디어 형식을 사용할 수 있도록 허용"합니다.

토론에서 누락된 것은 "미디어 유형이 조건을 충족하는 경우 미디어 형식이 클라이언트에서 사용할 수 없도록 허용하지 않음"과 동일합니다.

이를 위해 제외 필터 집합이 필요합니다.

필터 집합 앞에 "!"가 있는 경우:

; Allow everything except 1080p@60fps of any subtype.
Pin0:(!(RES==1920,1080;FRT==60,1;SUT==))

제외 필터 집합입니다. 미디어 형식이 일치하는 경우 제외 필터 집합은 사용 가능한 미디어 형식 목록에서 제외됩니다.

여러 필터 집합을 선언하면 각 필터 집합의 제약 조건 검사가 논리적으로 OR로 처리됩니다.

; Allow everything except 1080p@60fps or 1080p@120fps
Pin0:(!(RES==1920,1080;FRT==60,1;SUT==))(!(RES==1920,1080;FRT==120,1;SUT==))

제외 및 포함 필터 집합

표시된 것처럼 필터 집합은 포함 필터 집합 또는 제외 필터 집합일 수 있습니다. 다른 필터 집합을 혼합할 수 있지만 추가되는 필터 집합 유형에 따라 고정 미디어 형식 필터의 의미가 변경될 수 있습니다.

  1. 고정 미디어 형식 필터에 대해 포함 필터 항목만 선언된 경우 필터 항목 중 하나와 일치하지 않는 모든 미디어 형식은 사용 가능한 미디어 형식에서 제외됩니다.

  2. 고정 미디어 형식 필터에 대해 제외 필터 항목만 선언된 경우 필터 항목 중 하나와 일치하지 않는 미디어 형식은 사용 가능한 미디어 형식에서 포함됩니다.

  3. 고정 미디어 형식 필터에 대해 포함 및 제외 필터 항목이 모두 선언된 경우 제외 필터 집합과 일치하지 않는 한 포함 필터 집합과 일치하는 모든 미디어 형식이 포함됩니다. 제외 필터 집합은 포함 필터 집합을 대체합니다.

이 예제를 설명하기 위해 Pin0에 대해 다음과 같은 미디어 유형을 사용할 수 있다고 가정해 보겠습니다.

  • 1920x1080@60fps, NV12

  • 1920x1080@30fps, NV12

  • 1280x720@60fps, NV12

  • 1280x720@30fps, NV12

  • 640x360@60fps, NV12

  • 640x360@30fps, NV12

포함 필터 집합만 선언하는 경우:

; Allow all media types 720p and lower resolution whose frame
; rate is 30fps or lower. for example, no 60fps is allowed and no
; 1080p is allowed.
Pin0:((RES<=1280,720;FRT<=30,1;SUT==ALL))

제외 필터 집합만 선언하는 경우:

; Disallow 1080p resolutions or higher or any media types with
; 60fps or higher. Ignore Subtypes.
Pin0:(!(RES>=1920,1080;FRT>=60,1;SUT==))

포함 및 제외 필터 집합을 모두 선언하는 경우:

; Allow all media types except for 640x360@60fps NV12.
Pin0:((RES<=1920,1080;FRT<=60,1;SUT==ALL))
Pin0:(!(RES==640,360;FRT==60,1;SUT==NV12))

참고: 필터 처리 문의 규칙 #2 때문에 샘플 Pin0에 대해 "640x360@60fps NV12를 제외한 모든 미디어 형식 허용"의 마지막 예는 다음과 같습니다.

; Allow all media types except for 640x360@60fps NV12.
Pin0:(!(RES==640,360;FRT==60,1;SUT==NV12))

제외 필터 집합이 하나만 있으므로 제외 필터 집합과 일치하는 미디어 형식을 제외한 모든 미디어 형식이 허용됩니다.

포함 및 제외 필터 항목을 설명하기 위해 몇 가지 예제가 더 있습니다.

; Allow any media type that is 30fps.
Pin0:((RES==;FRT==30,1;SUT==ALL))

; Allow any media type that is NV12.
Pin0:((RES==;FRT==;SUT==0x3132564E))

; Allow any media type, except for 4K@60fps of any subtype.
Pin0:(!(RES==3840,2160;FRT==60,1;SUT==))

; Allow any media type less than equal to 4K resolution,
; except for YUY2 subtypes.
Pin0:((RES<=3840,2160;FRT>=0,0;SUT==ALL))
Pin0:(!(RES==;FRT==;SUT==YUY2))

; Allow any media type equal or less than 4K
; and equal or less than 60fps
Pin0:((RES<=3840,2160;FRT<=60,1;SUT==ALL))

; Allow any NV12 and YUY2 media types
Pin0:((RES==;FRT>=0,0;SUT==NV12))((RES==;FRT>=0,0;SUT==YUY2))

; Allow any except for MJPG and H264
Pin0:((RES==;FRT>=0,0;SUT!=MJPG))((RES==;FRT>=0,0;SUT!=H264))

; Allow any but exclude only 4K@60fps NV12 & 3840x2880@60fps NV12
Pin0:(!(RES==3840,2160;FRT==60,1;SUT==NV12))(!(RES==3840,2880;FRT==60,1;SUT==NV12))

카메라 프로필 V2 개발자 사양