Freigeben über


Verschlüsselungsunterstützung

Daten, die für die Videodecodierung verwendet werden, können für die folgenden Strukturen und Datentypen verschlüsselt werden:

  • Makroblock-Steuerungsbefehlsstrukturen

  • Restdifferenzblockstrukturen

  • Bitstreampuffer

Damit der Hostdecoder die Verschlüsselung verwenden kann, muss er bestimmen, welche Verschlüsselungstypen der Accelerator unterstützt. Die Informationen zu den Verschlüsselungstypen, die von einem Accelerator unterstützt werden, sind in einer Liste von VERSCHLÜSSELUNGstyp-GUIDs enthalten, die dem Host als GUIDs im Videobeschleunigungsformat bereitgestellt werden. Weitere Informationen zu Video Accelerator-Format-GUIDs finden Sie in der Dokumentation zu Microsoft Windows SDK.

Hinweis Alle DirectX VA-Beschleuniger müssen ohne Verschlüsselung funktionieren können. Die Unterstützung für den Betrieb ohne Verschlüsselung muss daher nicht deklariert werden, und die DXVA_NoEncrypt GUID "Keine Verschlüsselung" darf niemals in der GUID-Liste des Videobeschleunigerformats gesendet werden.

Der Host wählt den Typ des anzuwendenden Verschlüsselungsprotokolls aus und gibt diese Wahl an, indem er eine GUID an den Accelerator sendet. In einem typischen Verschlüsselungsszenario werden zwei weitere Schritte ausgeführt, bevor verschlüsselte Daten erfolgreich übertragen werden können:

  1. Der Hostdecoder erfordert möglicherweise die Überprüfung, ob der Accelerator autorisiert ist, um die Daten zu empfangen. Diese Überprüfung kann bereitgestellt werden, indem die Zugriffstaste eine signierte Struktur an den Host übergibt, um nachzuweisen, dass sie ein autorisiertes Paar für öffentliche/private Schlüssel enthält.

  2. Der Hostdecoder sendet dann einen verschlüsselten Inhaltsschlüssel an den Accelerator.

Die genaue Anzahl der Schritte zum Initialisieren des Verschlüsselungsprotokolls hängt von der Art der verwendeten Verschlüsselung und ihrer Implementierung ab.

Jedem Dataset, das zwischen Host und Accelerator ausgetauscht wird, um die erforderlichen Verschlüsselungsinitialisierungsparameter zu übergeben, muss der Verschlüsselungsprotokolltyp GUID vorangestellt werden. Diese GUID unterscheidet die Daten eines Verschlüsselungstyps von den Daten eines anderen. Dies ist erforderlich, da ein Verschlüsselungstyp für einen DirectX VA-Puffer und ein anderer Verschlüsselungstyp für einen anderen DirectX VA-Puffer verwendet werden kann.

Die DXVA_EncryptProtocolHeader-Struktur wird verwendet, um anzugeben, dass ein Verschlüsselungsprotokoll sowie der verwendete Verschlüsselungstyp verwendet wird.