ProtectionCapabilities.IsTypeSupported(String, String) 메서드

정의

DRM 기능에 대한 비디오 디코딩, 표시 및 출력 보호 하위 시스템의 기능을 쿼리합니다.

경고

이 메서드는 이전 버전의 Windows 10 있더라도 Windows 10 버전 1607 이상 OS 버전에서만 사용하는 것이 좋습니다.

public:
 virtual ProtectionCapabilityResult IsTypeSupported(Platform::String ^ type, Platform::String ^ keySystem) = IsTypeSupported;
ProtectionCapabilityResult IsTypeSupported(winrt::hstring const& type, winrt::hstring const& keySystem);
public ProtectionCapabilityResult IsTypeSupported(string type, string keySystem);
function isTypeSupported(type, keySystem)
Public Function IsTypeSupported (type As String, keySystem As String) As ProtectionCapabilityResult

매개 변수

type
String

Platform::String

winrt::hstring

지원을 쿼리할 기능을 식별하는 문자열입니다. 이 매개 변수는 RFC 2045 Content-Type 문자열을 수락하여 미디어 형식 및 하위 형식 식별자를 지정하고 필요한 코덱에 대한 RFC 6381 코덱 식별자를 지정합니다. 이러한 기본 문자열은 HTML5 HTMLMediaElementcanPlayType 메서드에 사용되는 문자열과 일치합니다. RFC 2045를 사용하면 추가적인 사용자 지정 매개 변수를 형식의 ";<parameter>=<name>[=<value>] [,<name>[=<value>]"한정자로 사용할 수 있습니다. RFC 2045 규격 파서는 인식되지 않는 경우 이러한 매개 변수를 무시해야 합니다. 기능 쿼리 <parameter> 의 경우 은 기능으로 명명됩니다.

구현을 수행하려면 유효한 쿼리 결과를 제공하기 위해 RFC 2045 미디어 형식 및 하위 형식 식별자(예: "video/mp4") 및 RFC 6381 코덱 매개 변수 codec=”<video codec>[,<audio codec>]” 가 항상 있어야 합니다.

콘텐츠 형식 및 형식이라는 용어는 지금까지 MIME 형식으로 잘 알려져 있습니다.

keySystem
String

Platform::String

winrt::hstring

하드웨어 또는 소프트웨어 보호를 지정하여 쿼리를 검사 PlayReady 네임스페이스를 식별하는 문자열입니다. 하드웨어 쿼리에 "com.microsoft.playready.recommendation.3000"을 사용합니다(PlayReady는 하드웨어 오프로드에 대한 지원이 있어야 함), 소프트웨어 보호 지원을 명시적으로 쿼리하는 경우 "com.microsoft.playready.recommendation.2000", 일반 쿼리에 대해 "com.microsoft.playready.recommendation"를 사용합니다(이전 버전과의 호환성을 보장하기 위해 소프트웨어 보호 지원에 응답해야 함).

반환

쿼리된 기능이 지원되거나 지원되거나 지원되지 않는지 여부를 나타내는 값입니다.

설명

형식 입력 매개 변수에는 RFC 6381 Content-Type 미디어 형식 및 하위 형식 식별자가 있어야 합니다. RFC 2045 코덱 매개 변수 문자열도 있어야 합니다. MPEG-4는 이 API에 대해 지원되는 유일한 컨테이너입니다. H.264(avc1) 및 HEVC(hvc1, hev1)는 지원되는 답변을 제공하는 유일한 비디오 코덱입니다. MPEG-4(mp4a), MPEG-1 계층 3(mp3), Dolby Digital(ac-3) 및 Dolby Digital Plus(ec-3)는 지원되는 답변을 제공하는 유일한 오디오 코덱입니다. 지원되는 문자열은 다음과 같습니다.

video/mp4;codecs=”avc1,<audio codec>”

video/mp4;codecs=”hvc1, <audio codec>”

video/mp4;codecs=”hev1, <audio codec>”

Windows 10 버전 1709부터 다음도 지원됩니다.

Video/mp4;codecs=”vp9,<audio codec>”

Video/mp4;codecs=”vp09,<audio codec>”

쿼리 문자열의 기능 부분은 세미콜론 구분 기호를 사용하여 위의 문자열 중 하나에 추가됩니다. 기본 그래픽 드라이버 및 하드웨어는 기능을 쿼리하는 방법에 제약 조건을 적용합니다. 비디오 하위 시스템의 경우 다음 요구 사항이 적용됩니다.

  1. 단일 호출에서 각 하위 시스템의 기능 이름 및 값에 대한 쿼리를 하나만 사용할 수 있습니다.
  2. 디코딩 하위 시스템 쿼리는 표시 1, 디스플레이 2 또는 출력 보호 쿼리 없이 수행할 수 있습니다.
  3. Display 1 하위 시스템 쿼리를 사용하려면 디코딩 하위 시스템 쿼리가 있어야 합니다.
  4. Display 2 하위 시스템 쿼리에는 디코딩 하위 시스템 쿼리가 필요하지만 Display 1 하위 시스템 쿼리는 필요하지 않습니다.
  5. HDCP(출력 보호 하위 시스템) 쿼리는 제약 조건 #3 및 #4에 따라 디코딩, 디스플레이 1 또는 Display 2 하위 시스템 쿼리를 사용하거나 사용하지 않고 수행할 수 있습니다.

쿼리는 General: Efficiency 다른 하위 시스템 쿼리와 결합될 수 있습니다.

반환된 결과는 모든 개별 기능 쿼리의 논리적 AND이며 다음과 같은 설명이 있습니다. 어쩌면 결과는 출력 보호 하위 시스템에만 허용되며 일시적으로만 허용됩니다. 시간이 지남에 따라 Maybe가 아마 또는지원되지 않음으로 확인될 때까지 다른 모든 기능 쿼리의 AND 결과보다 우선적으로 적용될 수 있습니다. resolve 수 있는 현재 시간 제한은 10초입니다.

다음 표에서는 비디오 하위 시스템별로 구성된 지원되는 개별 기능 쿼리를 나열합니다.

항목 비디오 하위 시스템 기능 이름 기능 값 Description 이 하위 시스템에 필수
1a 디코딩 decode-res-x 음수가 아닌 숫자(픽셀) 비디오 디코더가 X축에서 이 최대 해상도를 지원하나요? Y
1b 디코딩 decode-res-y 음수가 아닌 숫자(픽셀) 비디오 디코더가 Y축에서 이 최대 해상도를 지원하나요? Y
1c 디코딩 decode-bitrate 초당 킬로비트의 양수(Kbps) 비디오 디코더가 이 최대 비트 전송률을 지원하나요? Y
1d 디코딩 decode-fps 24, 25, 29.97, 30, 50, 59.94 또는 60 비디오 디코딩이 이 FPS(초당 최대 프레임 수) 값을 지원하나요? Y
1e 디코딩 decode-bpc(decode-bpp는 더 이상 사용되지 않음) 0, 8, 10 또는 12 비디오 디코더가 픽셀당 색 깊이를 사용할 수 있나요? Y
1f 디코딩 decoder-hardware-acceleration** true인 값 1 또는 없음 OS 디코더가 있는지와 관계없이 DXVA 하드웨어 가속을 사용할 수 있나요? N
1g 디코딩 decoder-software-acceleration ** true인 값 1 또는 없음 OS 디코더가 스트림을 디코딩할 수 있나요? N
1시간 디코딩 decoder-software-requires-hardware** true인 값 1 또는 없음 OS 디코더의 기능에 DXVA 하드웨어 가속이 있어야 합니까? N
2a 표시 1 display-res-x 음수가 아닌 숫자(픽셀) 하나 이상의 교차** 디스플레이가 X축에서 이 해상도를 지원하나요? Y
2b 표시 1 display-res-y 음수가 아닌 숫자(픽셀) 하나 이상의 교차*** 디스플레이가 Y축에서 이 해상도를 지원하나요? Y
2c 표시 1 display-refreshrate 24, 25, 29.97, 30, 50, 59.94 또는 60 최소한 요청된 새로 고침 빈도에 대해 디스플레이가 구성되었나요(Windows에서 이해)? N
2d 표시 1 display-bpc(display-bpp는 더 이상 사용되지 않음) 8 또는 10 필요한 해상도가 ≥ 모든 디스플레이가 적어도 이 색 깊이를 인식합니까? N
3 표시 2* hdr 1(지원됨) 대상이 HDR(High Dynamic Range) 렌더링을 지원하나요? 지원
4 출력 보호 Hdcp 0(끄기), 1(HDCP 2.2 형식 1 제한 없음), 2(HDCP 2.2 형식 1 제한 사용) 모든 교차 사용 디스플레이가 최소한 요청 보호 수준을 지원합니까? Y
5 일반: 효율성** 효율성 설정 0(off = no restriction), 1(on = limit resolution when on battery power) 사용자가 배터리 사용 시간, 스트리밍 오버헤드 및/또는 다운로드 속도를 가장 높은 해상도로 선호하나요?**** Y
6a 암호 해독 encryption-type "cenc" 또는 "cbcs" 이 암호화 유형이 지정된 코덱/키 시스템을 사용하여 암호 해독에 지원되는가요? 값이 지정되지 않은 경우 기본값인 "cenc"가 사용됩니다. N
6b 암호 해독 encryption-iv-size 8 또는 16 이 IV(초기화 벡터) 크기(바이트)가 지정된 코덱/키 시스템을 사용한 암호 해독에 지원되는가요? 값이 지정되지 않은 경우 기본값 8이 사용됩니다. N

*Windows 10 버전 1607 이상 OS 버전에서만 지원됩니다.

**Windows 10 버전 1709 이상 OS 버전에서만 지원됩니다.

*** 교차 알고리즘은 다음과 같습니다.

  1. 애플리케이션 사용자 인터페이스 비디오 클라이언트 영역에 픽셀이 있는 모든 디스플레이를 찾습니다.
  2. 1단계에서 디스플레이를 구동하는 모든 그래픽 어댑터를 찾습니다. 하드웨어 DRM 쿼리의 경우 이 어댑터 집합은 하드웨어 DRM이 지원되는 어댑터로만 필터링됩니다.
  3. 2단계에서 그래픽 어댑터에 연결된 모든 디스플레이를 찾습니다.

**** 이 정책이 켜진 경우 사용할 해상도 제한을 선택하는 것은 콘텐츠 공급자의 책임입니다. 1080p 제한이 권장되지만 720p를 사용할 수 있습니다. 이 정책에 대한 입력은 Windows 10 버전 1709에 추가된 비디오 설정 사용자 인터페이스 페이지에서 제공됩니다.

항목 1a 및 1b 및 2a 및 2b에 대한 쌍은 각각 (요청된 x >= 실제 교차 집합 최대 x) AND(요청된 y = 실제 교차 집합 최대 y >)로 계산되며, 필요에 따라 x와 y를 교환하여 세로 디스플레이가 가로로 정규화되도록 수정합니다.

hdcp 쿼리(항목 4)에는 계산 비용이 많이 드는 첫 번째 호출 비용이 있습니다. 요청된 수준을 활성 디스플레이 토폴로지와 충족할 수 있는지 여부를 검색하려면 요청된 수준에서 HDCP를 켜야 합니다. HDCP가 비동기적으로 평가되고 HDCP 2.2에서 최대 몇 초가 걸리지만 최소 차단과 동기화되는 쿼리로 인해 결과가 아마 또는지원되지 않음으로 완료될 때까지 호출자가 쿼리를 반복적으로 사용해야 합니다. 어쩌면 상태인 동안 쿼리에서 요청된 HDCP 수준을 변경하면 잘못된 응답이 발생할 수 있습니다. 어쩌면 시간 제한은 약 10초입니다.

기본 계산 비용으로 인해 250밀리초마다 한 번 이상 hdcp 쿼리를 호출하지 않는 것이 좋습니다. 최소값은 500밀리초입니다. 캐싱은 이 비용을 최소화하기 위해 수행되지만 폴링하는 동안 표시 토폴로지는 변경되어 캐싱이 무효화됩니다.

구현 세부 정보로 그래픽 어댑터는 HDCP 2.2 유형 1 제한이 설정되지 않은 경우에도 모든 노드가 지원하는 경우 HDCP 2.2를 사용하도록 선택할 수 있습니다. HDCP 2.2는 HDCP 1.x보다 훨씬 오래 걸릴 수 있습니다. 현재 세대 TV에 대한 관찰은 반복기를 포함한 HDCP 1.x 디바이스의 경우 약 1초에 비해 최대 8초의 시간을 표시합니다. 따라서 애플리케이션 시작 시 또는 출력 토폴로지 변경 후 첫 번째 hdcp=1 쿼리는 이 최악의 경우 최대 8초 더하기 여백을 기다려야 합니다. 최대 대기 시간(예: 초기 UI)으로 10초를 사용하여 사용자가 타이틀을 선택하지 않은 경우 애플리케이션 시작 쿼리를 수행하는 것이 좋습니다. 토폴로지 변경이 발생하지 않으면 모든 추가 hdcp 쿼리는 하위 초가 됩니다. 콘텐츠에 쿼리와 동일한 HDCP 출력 요구 사항이 있는 경우 캐싱은 재생 시작 시 다시 발생하는 2초 대기를 줄입니다.

출력 토폴로지 변경에서 고해상도 TV 및 모니터는 데스크톱을 안정화하는 데 몇 초 정도 걸리는 경우가 많습니다. 출력 보호 수준이 변경되고 특히 감소하면 일반적으로 하드웨어 DRM을 사용하여 활성 재생이 의도적으로 실패합니다. 여기서 MF_POLICY_UNSUPPORTED (0xC00D7159) 오류에 대한 반응은 사용자로부터 오류를 숨기고, 다시 쿼리하고, 변경된 기능에 대한 적절한 콘텐츠 버전으로 다시 시작하는 것입니다. 사실상 이는 "핫플러그" 안정화 시간의 연장 역할을 합니다.

H.264 구현에서 소프트웨어 디코딩 또는 DXVA(DirectX VIDEO Acceleration) GPU 오프로드를 허용하기 때문에 소프트웨어 DRM 디코딩 기능 쿼리는 성능이 모호할 수 있습니다. 그러나 H.264 DXVA는 모든 Windows 엔드포인트에서 매우 일반적입니다.

소프트웨어 DRM 디코딩 쿼리의 기능 제한은 decode-bpc가 평가되지 않는다는 것입니다. Windows는 H.264 10비트 디코딩을 지원하지 않지만 를 사용하는 쿼리 decode-bpc=10 는 성공합니다.

기능 쿼리 결과는 하위 시스템의 최대 이론적 기능을 반영합니다. GPU 또는 다양한 전원 상태의 다른 활동은 실제 기능을 줄일 수 있습니다.

하드웨어 DRM 쿼리 예제

다음은 하드웨어 DRM 및 HDCP 2.2 유형 1 제한이 있는 4K 10비트 HEVC SDR(표준 동적 범위) 콘텐츠의 가장 일반적인 사용량을 보여 줍니다.

IsTypeSupported(‘com.microsoft.playready.recommendation.3000’,’video/mp4;codecs=”hvc1,mp4a”;features=”decode-res-x=3840,decode-res-y=2160,decode-bitrate=20000,decode-fps=30,decode-bpc=10,display-res-x=3840,display-res-y=2160,display-bpc=8,hdcp=2”’);

여기서 mp4a 를 , ac-3또는 ec-3mp3바꿀 수 있습니다. 디코딩 비트 전송률은 콘텐츠 공급자의 인코딩에 따라 조정될 수 있습니다. decode-fps 는 30이 아닌 60으로 설정될 수 있지만 하드웨어 DRM 보안 프로세서의 처리량 기능에 의해 제어될 수 있습니다. display-res-x 공급자 display-res-y 가 4K 스트림을 3200 x 1800, 3000 x 2000 또는 2560 x 1440 디스플레이로 푸시하려는 경우 및 값은 전체 4K보다 낮게 설정할 수 있습니다.

디코딩 쿼리 결과가 동적으로 변경될 것으로 예상되지 않으므로 에 대한 hdcp=2 연속 폴링은 어쩌면 짧은 형식을 작은 최적화로 사용할 수 있습니다.

IsTypeSupported(‘com.microsoft.playready.recommendation.3000’,’video/mp4;codecs=”hvc1,mp4a”;features=”hdcp=2”’);

물론 이 최적화는 동적 모니터 해상도 변경을 포착하지는 않지만 이러한 변경으로 인해 진행 중인 HDCP 설정이 중단될 수 있습니다.

다음은 하드웨어 DRM 및 HDCP 2.2 유형 1 제한이 있는 4K 10비트 HEVC HDR(High Dynamic Range) 콘텐츠의 가장 일반적인 사용량을 보여 줍니다.

IsTypeSupported(‘com.microsoft.playready.recommendation.3000’,’video/mp4;codecs=”hvc1,mp4a”;features=”decode-res-x=3840,decode-res-y=2160,decode-bitrate=20000,decode-fps=30,decode-bpc=10,display-res-x=3840,display-res-y=2160,display-bpc=8,hdr=1,hdcp=2”’);

참고: Windows 10 경우 버전 1607 hdr=1DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020 또는 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 또는 DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 10비트 MPO 지원이 있거나 개발 전용 HighColor 레지스트리 키가 있고 DWORD 값 1로 설정 HKLM\SOFTWARE\Microsoft\Windows\DWM key HighColor 되었음을 나타냅니다.

다음은 2.2 유형 1 제한이 없는 하드웨어 DRM 및 HDCP가 있는 1080p 8비트 H.264 SDR 콘텐츠에 대한 가장 일반적인 사용량을 보여 줍니다.

IsTypeSupported(‘com.microsoft.playready.recommendation.3000’,’video/mp4;codecs=”avc1,mp4a”;features=”decode-res-x=1920,decode-res-y=1080,decode-bitrate=10000,decode-fps=30,decode-bpc=8,display-res-x=1920,display-res-y=1080,display-bpc=8,hdcp=1”’);

적용 대상

추가 정보