ProtectionCapabilities.IsTypeSupported(String, String) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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 하위 시스템 쿼리를 사용하려면 디코딩 하위 시스템 쿼리가 있어야 합니다.
- Display 2 하위 시스템 쿼리에는 디코딩 하위 시스템 쿼리가 필요하지만 Display 1 하위 시스템 쿼리는 필요하지 않습니다.
- HDCP(출력 보호 하위 시스템) 쿼리는 제약 조건 #3 및 #4에 따라 디코딩, 표시 1 또는 디스플레이 2 하위 시스템 쿼리를 사용하거나 사용하지 않고 수행할 수 있습니다.
General: Efficiency
쿼리는 다른 하위 시스템 쿼리와 결합될 수 있습니다.
반환된 결과는 모든 개별 기능 쿼리의 논리적 AND이며 다음과 같은 설명이 있습니다. 어쩌면 결과는 출력 보호 하위 시스템에만 허용되며 일시적으로만 허용됩니다. 이
다음 표에서는 비디오 하위 시스템별로 구성된 지원되는 개별 기능 쿼리를 나열합니다.
항목 | 비디오 하위 시스템 | 기능 이름 | 기능 값 | 묘사 | 이 하위 시스템에 대한 필수 |
---|---|---|---|---|---|
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) 렌더링을 지원하나요? | Y |
4 | 출력 보호 | hdcp | 0(끄기), 1(HDCP 2.2 형식 1 제한 없이 켜기), 2(HDCP 2.2 형식 1 제한 사용) | 교차 사용이 설정된 모든 디스플레이가 적어도 요청 보호 수준을 지원합니까? | Y |
5 | 일반: 효율성** | 효율성 설정 | 0(off = no restriction), 1(on = limit resolution when battery power) | 사용자는 배터리 수명, 스트리밍 오버헤드 및/또는 다운로드 속도를 가장 높은 해상도로 선호하나요?**** | Y |
6a | 암호 해독 | 암호화 유형 | "cenc" 또는 "cbcs" | 이 암호화 유형은 지정된 코덱/키 시스템을 사용하여 암호 해독에 지원되나요? 값을 지정하지 않으면 "cenc"의 기본값이 사용됩니다. | N |
6b | 암호 해독 | encryption-iv-size | 8 또는 16 | 이 IV(초기화 벡터) 크기(바이트)가 지정된 코덱/키 시스템으로 암호 해독에 지원되는가요? 값을 지정하지 않으면 기본값 8이 사용됩니다. | N |
* Windows 10 버전 1607 및 최신 OS 버전에서만 지원됩니다.
** Windows 10 버전 1709 및 최신 OS 버전에서만 지원됩니다.
*** 교차 알고리즘은 다음과 같습니다.
- 애플리케이션 사용자 인터페이스 비디오 클라이언트 지역에 픽셀이 있는 모든 디스플레이를 찾습니다.
- 1단계에서 디스플레이를 구동하는 모든 그래픽 어댑터를 찾습니다. 하드웨어 DRM 쿼리의 경우 이 어댑터 집합은 하드웨어 DRM이 지원되는 어댑터로만 필터링됩니다.
- 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 디바이스의 경우 최대 8초, 약 1초의 시간을 표시합니다. 따라서 애플리케이션 시작 또는 출력 토폴로지 변경 후 첫 번째 hdcp=1
쿼리는 이 최악의 경우 최대 8초 더하기 여백을 기다려야 합니다. 최대 대기로 10초를 사용하면 사용자가 초기 UI와 같이 타이틀을 선택할 것으로 예상되지 않은 경우 애플리케이션 시작 쿼리를 수행하는 것이 좋습니다. 토폴로지 변경이 발생하지 않으면 모든 추가 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
mp3
, ac-3
또는 ec-3
대체될 수 있습니다. 디코딩 비트 전송률은 콘텐츠 공급자의 인코딩에 따라 조정될 수 있습니다.
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=1
DXGI_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”’);