Share via


ProtectionCapabilities.IsTypeSupported(String, String) Methode

Definition

Fragt Features von Videodecodierung, Anzeige und Ausgabeschutzsubsystemen für DRM-Funktionen ab.

Warnung

Es wird empfohlen, diese Methode nur mit Windows 10, Version 1607 oder neuerer Betriebssystemversion zu verwenden, obwohl sie in älteren Versionen von Windows 10 vorhanden ist.

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

Parameter

type
String

Platform::String

winrt::hstring

Zeichenfolge, die die Features identifiziert, für die die Unterstützung abgefragt wird. Dieser Parameter akzeptiert RFC 2045 Content-Type-Zeichenfolgen zum Angeben von Medientyp- und Untertypbezeichnern sowie RFC 6381 Codecs-Bezeichner für die erforderlichen Codecs. Diese Basiszeichenfolgen sind konsistent mit denen, die in der HTML5 HTMLMediaElementcanPlayType-Methode verwendet werden. RFC 2045 ermöglicht zusätzliche benutzerdefinierte Parameter als Modifizierer in Form von ";<parameter>=<name>[=<value>] [,<name>[=<value>]". RFC 2045-kompatible Parser müssen diese Parameter ignorieren, wenn sie nicht erkannt werden. Für die Featureabfragen <parameter> wird feature genannt.

Für die Implementierung müssen die RFC 2045-Medientyp- und Untertypbezeichner, z. B. "video/mp4", und der RFC 6381-Codecparameter codec=”<video codec>[,<audio codec>]” immer vorhanden sein, um gültige Abfrageergebnisse bereitzustellen.

Beachten Sie, dass die Begriffe Inhaltstyp und -typ historisch als MIME-Typ bekannt sind.

keySystem
String

Platform::String

winrt::hstring

Eine Zeichenfolge, die den PlayReady-Namespace identifiziert, mit dem die Abfrage überprüft werden soll, und dabei Hardware- oder Softwareschutz angibt. Verwenden Sie "com.microsoft.playready.recommendation.3000" für Hardwareabfragen (PlayReady muss Unterstützung für Hardwareauslagerung haben), "com.microsoft.playready.recommendation.2000" für explizite Abfragen nach Softwareschutzunterstützung und "com.microsoft.playready.recommendation" für allgemeine Abfragen (muss für Softwareschutzunterstützung antworten, um Abwärtskompatibilität zu gewährleisten).

Gibt zurück

Ein Wert, der angibt, ob die abgefragten Funktionen wahrscheinlich unterstützt werden, möglicherweise unterstützt werden oder nicht unterstützt werden.

Hinweise

Für den Typeingabeparameter müssen RFC 6381 Content-Type-Medientyp und Untertypbezeichner vorhanden sein. Außerdem muss die Rfc 2045 Codecs-Parameterzeichenfolge vorhanden sein. MPEG-4 ist der einzige Container, der für diese API unterstützt wird. H.264 (avc1) und HEVC (hvc1, hev1) sind die einzigen Videocodecs, die unterstützte Antworten bereitstellen. MPEG-4 (mp4a), MPEG-1 Layer 3 (mp3), Dolby Digital (ac-3) und Dolby Digital Plus (ec-3) sind die einzigen unterstützten Audiocodecs, die antworten. Unterstützte Zeichenfolgen sind:

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

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

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

Ab der Windows 10 Version 1709 werden auch Folgende unterstützt:

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

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

Der Featureteil der Abfragezeichenfolge wird mithilfe eines Semikolontrennzeichens an eine der obigen Zeichenfolgen angefügt. Der zugrunde liegende Grafiktreiber und die zugrunde liegende Hardware erzwingen Einschränkungen, wie Features abgefragt werden können. Für die Videosubsysteme gelten die folgenden Anforderungen:

  1. Nur eine Abfrage von Featurenamen und Werten kann von jedem Der Subsysteme in einem einzelnen Aufruf verwendet werden.
  2. Eine Decodierungssubsystemabfrage kann ohne Display 1, Display 2 oder Output Protection-Abfrage ausgeführt werden.
  3. Für eine Subsystemabfrage anzeige 1 muss eine Decodierungssubsystemabfrage vorhanden sein.
  4. Eine Display 2-Subsystemabfrage erfordert eine Decodierungssubsystemabfrage, aber keine Display 1-Subsystemabfrage.
  5. Eine HDCP-Abfrage (Output Protection Subsystem) kann mit oder ohne Decodierung, Display 1 oder Display 2-Subsystemabfrage ausgeführt werden, vorbehaltlich der Einschränkungen #3 und #4.

Die General: Efficiency Abfrage kann mit allen anderen Subsystemabfragen kombiniert werden.

Das zurückgegebene Ergebnis ist das logische AND aller einzelnen Featureabfragen mit folgender Klarstellung: Ein Möglicherweise-Ergebnis ist nur aus dem Ausgabeschutzsubsystem und nur vorübergehend zulässig. Dies hat möglicherweise Vorrang vor einem Wahrscheinlichen Ergebnis aus dem UND aller anderen Featureabfragen, bis die Vielleicht im Laufe der Zeit entweder in Wahrscheinlich oder Nicht unterstützt aufgelöst wird. Das aktuelle Zeitlimit für Möglicherweise aufzulösen beträgt 10 Sekunden.

In der folgenden Tabelle sind die unterstützten einzelnen Featureabfragen aufgelistet, die nach Videosubsystem organisiert sind:

Element Video-Untersystem Funktionsname Featurewert Beschreibung Obligatorisch für dieses Subsystem
1a Decode decode-res-x Nicht negative Zahl in Pixel Unterstützt der Videodecoder diese maximale Auflösung auf der X-Achse? J
1b Decode decode-res-y Nicht negative Zahl in Pixel Unterstützt der Videodecoder diese maximale Auflösung auf der Y-Achse? J
1c Decode Decodierungsbitrate Positive Zahl in Kilobit pro Sekunde (KBit/s) Unterstützt der Videodecoder diese maximale Bitrate? J
1d Decode decode-fps 24, 25, 29,97, 30, 50, 59,94 oder 60 Unterstützt das decodierte Video diesen maximalen FPS-Wert (Frames pro Sekunde) ? J
1e Decode decode-bpc (decode-bpp ist veraltet) 0, 8, 10 oder 12 Kann der Videodecoder diese Farbtiefe pro Pixel nutzen? J
1f Decode Decoder-Hardwarebeschleunigung** 1 oder kein Wert als true Ist die DXVA-Hardwarebeschleunigung unabhängig davon verfügbar, ob ein Betriebssystemdecoder vorhanden ist? N
1g Decode Decoder-Software-Beschleunigung ** 1 oder kein Wert als true Ist ein Betriebssystemdecoder vorhanden, der den Stream decodieren kann? N
1 Std. Decode decoder-software-requires-hardware** 1 oder kein Wert als true Erfordert die Funktionalität des Betriebssystem-Decoders, dass die DXVA-Hardwarebeschleunigung vorhanden ist? N
2a Anzeige 1 display-res-x Nicht negative Zahl in Pixel Unterstützt mindestens ein sich überschneidendes** Display diese Auflösung auf der X-Achse? J
2b Anzeige 1 display-res-y Nicht negative Zahl in Pixel Unterstützt mindestens ein sich überschneidendes*** Display diese Auflösung in der Y-Achse? J
2c Anzeige 1 display-refreshrate 24, 25, 29.97, 30, 50, 59.94 oder 60 Ist die Anzeige (wie von Windows verstanden) für mindestens die angeforderte Aktualisierungsrate konfiguriert? N
2d Anzeige 1 display-bpc (display-bpp ist veraltet) 8 oder 10 Realisieren alle sich überschneidende Displays mit ≥ erforderlichen Auflösung mindestens diese Farbtiefe? N
3 Anzeige 2* hdr 1 (unterstützt) Unterstützt das Ziel HDR-Rendering (High Dynamic Range) J
4 Ausgabeschutz Hdcp 0 (aus), 1 (on ohne HDCP 2.2 Type 1-Einschränkung), 2 (ein mit HDCP 2.2 Type 1-Einschränkung Unterstützen alle sich überschneidenden, aktivierten Anzeigen mindestens die Anforderungsschutzebene? J
5 Allgemein: Effizienz** Effizienzeinstellung 0 (aus = keine Einschränkung), 1 (on = limit resolution when on battery power) Möchte der Benutzer die Akkulaufzeit, den Streamingaufwand und/oder die Downloadgeschwindigkeit der höchsten Auflösung vorzugestehen?**** J
6a Entschlüsselung encryption-type "cenc" oder "cbcs" Wird dieser Verschlüsselungstyp für die Entschlüsselung mit dem angegebenen Codec/Key-System unterstützt? Wenn der Wert nicht angegeben ist, wird der Standardwert "cenc" verwendet. N
6b Entschlüsselung encryption-iv-size 8 oder 16 Wird diese Initialisierungsvektorgröße (IV) (in Bytes) für die Entschlüsselung mit dem angegebenen Codec/Key-System unterstützt? Wenn der Wert nicht angegeben ist, wird der Standardwert 8 verwendet. N

*Nur unter Windows 10, Version 1607 und neueren Betriebssystemversionen unterstützt

**Nur unter Windows 10, Version 1709 und neueren Betriebssystemversionen unterstützt

*** Der Schnittmengenalgorithmus ist:

  1. Suchen Sie alle Anzeigen, in denen der Videoclientbereich der Benutzeroberfläche der Anwendung Pixel enthält.
  2. Suchen Sie alle Grafikkarten, die die Anzeigen aus Schritt 1 steuern. Bei einer Hardware-DRM-Abfrage wird dieser Satz von Adaptern nur nach Adaptern gefiltert, die Hardware-DRM-Unterstützung haben.
  3. Suchen Sie alle Displays, die mit den Grafikkarten aus Schritt 2 verbunden sind.

**** Der Inhaltsanbieter muss das Auflösungslimit auswählen, das verwendet werden soll, wenn diese Richtlinie aktiviert ist. Es wird ein Grenzwert von 1080p empfohlen, aber es kann 720p verwendet werden. Beachten Sie, dass die Eingabe für diese Richtlinie von der Seite video settings user interface stammt, die in Windows 10, Version 1709, hinzugefügt wurde.

Die Paare für die Elemente 1a und 1b und 2a und 2b werden jeweils als (angefordertes x >= tatsächliches Überschneidungssatz maximum x) UND berechnet (angefordert y >= tatsächlicher Überschneidungssatz maximum y), wobei die Hochformatanzeige in das Querformat normalisiert wird, indem x und y bei Bedarf ausgetauscht werden.

Die hdcp-Abfrage (Element 4) hat rechenintensive Kosten für den ersten Aufruf. HDCP muss auf der angeforderten Ebene aktiviert werden, um zu prüfen, ob die angeforderte Ebene mit der aktiven Anzeigetopologie erfüllt werden kann. Das Vielleicht-Ergebnis , das darauf zurückzuführen ist, dass HDCP asynchron ausgewertet wird und mit HDCP 2.2 mehrere Sekunden dauert, aber die Abfrage synchron mit minimaler Blockierung ist, erfordert, dass der Aufrufer die Abfrage wiederholt verwendet, bis das Ergebnis als Wahrscheinlich oder Nicht unterstützt abgeschlossen wird. Wenn Sie die angeforderte HDCP-Ebene in einer Abfrage ändern, während sie sich noch im Zustand Vielleicht befindet, führt dies wahrscheinlich zu einer ungültigen Antwort. Das Maybe-Timeout beträgt ungefähr 10 Sekunden.

Es wird dringend empfohlen, eine hdcp-Abfrage aufgrund der zugrunde liegenden Berechnungskosten nicht öfter als einmal alle 250 Millisekunden aufzurufen. 500 Millisekunden sind das bevorzugte Minimum. Das Zwischenspeichern wird ausgeführt, um diese Kosten zu minimieren, aber alle Änderungen der Anzeigetopologie während des Abrufs führen zu einer ungültigen Zwischenspeicherung.

Als Implementierungsdetail können Grafikkarten HDCP 2.2 verwenden, wenn dies von allen Knoten unterstützt wird, auch wenn die HDCP 2.2 Typ 1-Einschränkung nicht festgelegt wurde. HdCP 2.2 kann deutlich länger dauern als HDCP 1.x. Beobachtungen auf Fernsehern der aktuellen Generation zeigen Zeiten von bis zu 8 Sekunden an, gegenüber etwa 1 Sekunde für HDCP 1.x-Geräte einschließlich Repeatern. Daher erfordert eine erste hdcp=1 Abfrage beim Anwendungsstart oder nach einer Änderung der Ausgabetopologie bis zu 8 Sekunden plus Rand für diesen ungünstigsten Fall. Wenn Sie 10 Sekunden als maximale Wartezeit verwenden, wird empfohlen, die Anwendungsstartabfrage auszuführen, wenn der Benutzer am wenigsten erwartet, dass er einen Titel auswählt, z. B. auf einer ersten Benutzeroberfläche. Wenn keine Topologieänderungen auftreten, werden alle weiteren hdcp-Abfragen unter einer Sekunde ausgeführt. Wenn der Inhalt die gleiche HDCP-Ausgabeanforderung wie die Abfrage aufweist, wird beim Zwischenspeichern die wartezeit von mehreren Sekunden beim Start der Wiedergabe erneut ausgeführt.

Bei einer Änderung der Ausgabetopologie dauert es häufig mehrere Sekunden, um den Desktop zu stabilisieren. Eine Änderung und insbesondere eine Verringerung der Ausgangsschutzebene führt in der Regel dazu, dass die aktive Wiedergabe mit Hardware-DRM entwurfsbedingt fehlschlägt. Hier sollte eine Reaktion auf einen MF_POLICY_UNSUPPORTED -Fehler (0xC00D7159) darin sein, den Fehler für den Benutzer auszublenden, erneut abzuabfragen und mit einer geeigneten Inhaltsversion für alle geänderten Funktionen fortzusetzen. Effektiv fungiert dies als Erweiterung der "Hotplug"-Stabilisierungszeit.

Software-DRM-Decodierungsfeatureabfragen sind hinsichtlich der Leistung potenziell mehrdeutig, da die H.264-Implementierung die Softwaredecodierung oder die DXVA-GPU-Auslagerung (DirectX Video Acceleration) ermöglicht. H.264 DXVA ist jedoch auf allen Windows-Endpunkten sehr verbreitet.

Eine funktionale Einschränkung bei Software-DRM-Decodierungsabfragen besteht darin, dass decode-bpc nicht ausgewertet wird. Windows unterstützt keine H.264-10-Bit-Decodierung, aber eine Abfrage mit decode-bpc=10 ist erfolgreich.

Das Ergebnis der Featureabfrage spiegelt die maximalen theoretischen Funktionen der Subsysteme wider. Andere Aktivitäten in der GPU oder unterschiedliche Leistungszustände können die tatsächliche Leistungsfähigkeit verringern.

Beispiele für Hardware-DRM-Abfragen

Im Folgenden wird die häufigste Verwendung für 4K 10-Bit-HEVC Standard Dynamic Range -Inhalte (SDR) mit Hardware-DRM und HDCP 2.2 Typ 1-Einschränkung veranschaulicht:

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

Dabei mp4a kann durch mp3, ac-3oder ec-3ersetzt werden. Die Decodierungsbitrate kann je nach Codierung des Inhaltsanbieters angepasst werden. decode-fps kann auf 60 statt auf 30 festgelegt werden, kann jedoch durch die Durchsatzfunktion des Hardware-DRM-Sicherheitsprozessors abgegrenzt werden. display-res-x die Werte und display-res-y können niedriger als vollständige 4K-Werte festgelegt werden, wenn der Anbieter 4K-Streams beispielsweise auf 3200 x 1800, 3000 x 2000 oder 2560 x 1440 Displays pushen möchte.

Da erwartet wird, dass sich die Ergebnisse der Decodierung von Abfragen nicht dynamisch ändern, können aufeinander folgende Abfragen für hdcp=2 while in Maybe eine kürzere Form als kleine Optimierung verwenden.

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

Natürlich wird diese Optimierung keine Änderung der dynamischen Monitorauflösung abfangen, aber eine solche Änderung würde die HdCP-Einrichtung wahrscheinlich sowieso stören.

Im Folgenden wird die häufigste Verwendung für 4K 10-Bit HEVC High Dynamic Range (HDR)-Inhalte mit Hardware-DRM und HDCP 2.2 Typ 1-Einschränkung veranschaulicht:

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

Hinweis: Für Windows 10 gibt Version 1607 an, hdr=1 dass entweder 10-Bit-MPO-Unterstützung mit DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020 oder DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 oder DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 vorhanden ist oder dass der Registrierungsschlüssel HighColor für die Entwicklung vorhanden ist und festgelegt wurde: HKLM\SOFTWARE\Microsoft\Windows\DWM key HighColor als DWORD-Wert von 1.

Im Folgenden wird die häufigste Verwendung von 1080p-8-Bit-H.264-SDR-Inhalten mit Hardware-DRM und HDCP ohne 2.2 Typ 1-Einschränkung veranschaulicht:

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

Gilt für:

Weitere Informationen