Поделиться через


ProtectionCapabilities.IsTypeSupported(String, String) Метод

Определение

Запросы функций декодирования видео, отображения и защиты выходных данных для возможностей DRM.

Предупреждение

Этот метод рекомендуется использовать только с Windows 10 версии 1607 или более новой версией ОС, даже если она присутствует в более ранних версиях Windows 10.

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" для общих запросов (должны отвечать на поддержку защиты программного обеспечения для обеспечения обратной совместимости).

Возвращаемое значение

Значение, указывающее, поддерживаются ли запрашиваемые возможности, возможно, поддерживаются или не поддерживаются.

Комментарии

Тип , входной параметр должен содержать идентификаторы носителя типа content-Type RFC 6381 и подтипов. Он также должен содержать строку параметра RFC 2045 Codecs. MPEG-4 — единственный контейнер, поддерживаемый для этого API. H.264 (avc1) и HEVC (hvc1, hev1) являются единственными видеокодеками, предоставляющими поддерживаемые ответы. MPEG-4 (mp4a), MPEG-1 Layer 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. Запрос подсистемы декодирования может выполняться без запроса Display 1, Display 2 или Output Protection
  3. Для запроса подсистемы Display 1 требуется наличие запроса подсистемы декодирования
  4. Для запроса подсистемы Display 2 требуется запрос подсистемы декодирования, но не требуется запрос подсистемы Display 1.
  5. Запрос подсистемы защиты выходных данных (HDCP) может выполняться с декодированием, отображением 1 или запросом подсистемы отображения 2 при условии ограничений #3 и #4.

Запрос General: Efficiency может сочетаться с другими запросами подсистемы.

Возвращаемый результат — это логический результат И всех отдельных запросов функций, причем следующее уточнение: результат , возможно, результат разрешен только из подсистемы защиты выходных данных и временно. Это может иметь приоритет над Вероятно, результатом И всех других запросов функций, пока может разрешиться со временем до , вероятно, или не поддерживается. Текущее ограничение времени для Может быть, разрешить составляет 10 секунд.

В следующей таблице перечислены поддерживаемые запросы отдельных функций, упорядоченные по видео подсистеме:

Пункт Подсистема видео Имя компонента Значение компонента Описание Обязательный для этой подсистемы
1a Расшифровывать декодирование-res-x Не отрицательное число в пикселях Поддерживает ли декодировщик видео это максимальное разрешение в оси X? Y
1b Расшифровывать декодирование-res-y Не отрицательное число в пикселях Поддерживает ли декодирования видео это максимальное разрешение в оси Y? Y
1c Расшифровывать декодирование битовой скорости Положительное число в килобитах в секунду (кб/с) Поддерживает ли декодировщик видео эту максимальную скорость? Y
1d Расшифровывать декодирование fps 24, 25, 29.97, 30, 50, 59.94 или 60 Поддерживает ли декодирование видео это максимальное значение кадров в секунду (FPS) ? Y
1e Расшифровывать decode-bpc (декодирования-bpp не рекомендуется) 0, 8, 10 или 12 Может ли декодировщик видео использовать эту глубину цвета на пиксель? Y
1f Расшифровывать декодер-аппаратное ускорение** 1 или нет значения как true Доступно ли аппаратное ускорение DXVA независимо от наличия декодера ОС? N
1g Расшифровывать декодер-программное ускорение ** 1 или нет значения как true Может ли декодировщик ОС декодировать поток? N
1h Расшифровывать декодер-software-requires-hardware** 1 или нет значения как true Требуются ли функции декодера ОС, что аппаратное ускорение 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) Y
4 Защита выходных данных hdcp 0 (отключено), 1 (без ограничения HDCP 2.2 Типа 1), 2 (в hdCP 2.2 Type 1) Отображается ли поддержка по крайней мере уровня защиты запросов во всех пересекающихся функциях? Y
5 Общие: эффективность** настройка эффективности 0 (отключено = без ограничений), 1 (в = ограничение разрешения при использовании питания батареи) Требуется ли пользователю время работы батареи, затраты на потоковую передачу и (или) скорость загрузки в выборе максимального разрешения?**** Y
6a Расшифровка тип шифрования "cenc" или "cbcs" Поддерживается ли этот тип шифрования для расшифровки с помощью указанного кодека или системы ключей? Если значение не указано, используется значение по умолчанию cenc. N
6b Расшифровка encryption-iv-size 8 или 16 Поддерживается ли этот размер вектора инициализации (в байтах) для расшифровки с указанным кодеком или системой ключей? Если значение не указано, используется значение по умолчанию 8. N

* поддерживается только в Windows 10 версии 1607 и более поздних версиях ОС.

** поддерживается только в Windows 10 версии 1709 и более поздних версиях ОС

*** алгоритм пересечения:

  1. Найдите все, где в области клиента видео интерфейса приложения есть пиксели.
  2. Найдите все графические адаптеры, движущие экраны из шага 1. Для аппаратного запроса DRM этот набор адаптеров фильтруется только к этим адаптерам с поддержкой аппаратного DRM.
  3. Найдите все экраны, подключенные к графическим адаптерам, из шага 2.

**** Поставщик содержимого выбирает ограничение разрешения, используемое при включении этой политики. Рекомендуется использовать ограничение 1080p, но можно использовать 720p. Обратите внимание, что входные данные для этой политики поступают на странице пользовательского интерфейса параметров видео, добавленной в Windows 10 версии 1709.

Пары для элементов 1a и 1b и 2a и 2b вычисляются как (запрошенные x >= фактический пересекающийся набор максимум x) И (запрошенный y >= фактический набор интервалов максимум y), с изменением, которое книжное отображение нормализовано для альбомного отображения путем переключения x и y по мере необходимости.

Запрос hdcp (элемент 4) имеет вычислительную стоимость первого вызова. HDCP необходимо включить на запрошенном уровне, чтобы проверить, может ли запрошенный уровень соответствовать активной топологии дисплея. Результат , возможно, из-за асинхронной оценки HDCP и занимает до нескольких секунд с HDCP 2.2, но запрос синхронный с минимальной блокировкой, требует, чтобы вызывающий объект неоднократно использовал запрос, пока результат не завершится как , вероятно, или не поддерживается. Изменение запрошенного уровня HDCP в запросе в то время как все еще в состоянии может привести к недопустимому ответу. Время ожидания может быть, составляет около 10 секунд.

Настоятельно рекомендуется не вызывать запрос hdcp чаще, чем один раз в 250 миллисекунд, из-за базовой вычислительной стоимости. 500 миллисекунда является предпочтительным минимумом. Кэширование выполняется, чтобы свести к минимуму эту стоимость, но любые изменения топологии отображения при опросе недействительнее кэширования.

В качестве подробных сведений о реализации графические адаптеры могут использовать HDCP 2.2, если все узлы поддерживают его, даже если ограничение HDCP 2.2 Type 1 не задано. HDCP 2.2 может занять значительно больше времени, чем HDCP 1.x для взаимодействия. Наблюдения за текущими телевизорами поколения показывают время до 8 секунд, а около 1 секунды для устройств HDCP 1.x, включая ретрансляторы. Таким образом, первый запрос hdcp=1 при запуске приложения или после изменения выходной топологии требует ожидания до 8 секунд плюс маржа для этого худшего случая. При использовании 10 секунд в качестве максимального ожидания рекомендуется выполнять запрос запуска приложения, когда пользователь должен выбрать название, например в исходном пользовательском интерфейсе. Если изменения топологии не происходят, все дальнейшие запросы hdcp будут вложены в секунду. Если содержимое имеет то же требование к выходным данным HDCP, что и запрос, кэширование приведет к повторному выполнению многосекундного ожидания при запуске воспроизведения.

При изменении выходной топологии телевизоры с высоким разрешением и мониторы часто занимают несколько секунд, чтобы стабилизировать рабочий стол. Изменение, особенно снижение уровня защиты выходных данных, обычно приводит к сбою активного воспроизведения с аппаратным DRM. Здесь реакция на ошибку MF_POLICY_UNSUPPORTED (0xC00D7159) должна быть скрыта от пользователя, повторного запроса и возобновления работы с соответствующей версией содержимого для любых измененных возможностей. Фактически это действует как расширение "горячего" времени стабилизации.

Запросы на декодирование функций программного обеспечения DRM потенциально неоднозначны по производительности, так как реализация H.264 позволяет декодировать программное обеспечение или разгрузку GPU DirectX Video Acceleration (DXVA). Однако H.264 DXVA очень распространен во всех конечных точках Windows.

Функциональное ограничение для запросов декодирования DRM программного обеспечения заключается в том, что декодирование bpc не вычисляется. Windows не поддерживает декодирование H.264 10-разрядной версии, но запрос с decode-bpc=10 будет выполнен успешно.

Результат запроса признаков отражает максимальные теоретические возможности подсистем. Другие действия в GPU или различных состояниях питания могут снизить фактическую возможность.

Примеры запросов аварийного восстановления оборудования

Ниже показано наиболее распространенное использование содержимого 4K 10-разрядного динамического диапазона HEVC (SDR) с аппаратным ограничением DRM и HDCP 2.2 Type 1:

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 может иметь значение 60, а не 30, но может быть зависать с помощью возможностей пропускной способности аппаратного обработчика безопасности DRM. display-res-x и display-res-y значения могут быть заданы ниже 4K, если поставщик хочет отправить потоки 4K до 3200 x 1800, 3000 x 2000 или 2560 x 1440, например.

Так как результаты декодирования запросов не должны изменяться динамически, последовательный опрос для hdcp=2 в то время как в может быть использовать короткую форму в качестве небольшой оптимизации

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

Конечно, эта оптимизация не будет перехватывать изменение динамического разрешения монитора, но такое изменение, скорее всего, приведет к нарушению создания HDCP в любом случае.

Ниже показано наиболее распространенное использование содержимого 4K 10-разрядной версии HEVC High Dynamic Range (HDR) с аппаратным ограничением DRM и HDCP 2.2 Type 1:

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 указывает, что присутствует либо 10-разрядная поддержка MPO с DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020 или DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709, либо DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 или что раздел реестра HighColor только для разработки присутствует и установлен: HKLM\SOFTWARE\Microsoft\Windows\DWM key HighColor в качестве значения DWORD 1.

Ниже показано наиболее распространенное использование для 1080p 8-разрядного содержимого H.264 SDR с аппаратным DRM и HDCP без ограничения типа 1:

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”’);

Применяется к

См. также раздел