Bagikan melalui


ProtectionCapabilities.IsTypeSupported(String, String) Metode

Definisi

Kueri fitur dekode video, tampilan, dan subsistem perlindungan output untuk kemampuan DRM.

Peringatan

Disarankan agar metode ini hanya digunakan dengan Windows 10, versi 1607 atau versi OS yang lebih baru, meskipun ada pada versi Windows 10 yang lebih lama.

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

String yang mengidentifikasi fitur yang dukungannya dikueri. Parameter ini menerima string RFC 2045 Content-Type untuk menentukan pengidentifikasi jenis media dan subjenis, dan pengidentifikasi Codec RFC 6381 untuk codec yang diperlukan. String dasar ini konsisten dengan yang digunakan dalam html5 HTMLMediaElementmetode canPlayType. RFC 2045 memungkinkan parameter kustom tambahan sebagai pengubah dalam bentuk ";<parameter>=<name>[=<value>] [,<name>[=<value>]". Parser yang mematuhi RFC 2045 harus mengabaikan parameter ini jika tidak dikenali. Untuk kueri fitur, <parameter> diberi nama fitur .

Implementasi memerlukan jenis media RFC 2045 dan pengidentifikasi subjenis, misalnya "video/mp4", dan parameter codec RFC 6381 codec=”<video codec>[,<audio codec>]” untuk selalu ada untuk memberikan hasil kueri yang valid.

Perhatikan bahwa istilah jenis dan jenis konten dikenal secara historis sebagai jenis MIME.

keySystem
String

Platform::String

winrt::hstring

String yang mengidentifikasi namespace PlayReady untuk memeriksa kueri, menentukan perlindungan perangkat keras atau perangkat lunak. Gunakan "com.microsoft.playready.recommendation.3000" untuk kueri perangkat keras (PlayReady harus memiliki dukungan untuk offload perangkat keras), "com.microsoft.playready.recommendation.2000" untuk secara eksplisit meminta dukungan perlindungan perangkat lunak, dan "com.microsoft.playready.recommendation" untuk kueri umum (harus menjawab dukungan perlindungan perangkat lunak untuk menjamin kompatibilitas mundur).

Mengembalikan

Nilai yang menunjukkan apakah kemampuan yang dikueri kemungkinan didukung, mungkin didukung, atau tidak didukung.

Keterangan

Parameter input jenis harus memiliki jenis media RFC 6381 Content-Type dan pengidentifikasi subjenis yang ada. Ini juga harus memiliki string parameter RFC 2045 Codecs yang ada. MPEG-4 adalah satu-satunya kontainer yang didukung untuk API ini. H.264 (avc1) dan HEVC (hvc1, hev1) adalah satu-satunya codec video yang memberikan jawaban yang didukung. MPEG-4 (mp4a), MPEG-1 Layer 3 (mp3), Dolby Digital (ac-3), dan Dolby Digital Plus (ec-3) adalah satu-satunya codec audio yang memberikan jawaban yang didukung. String yang didukung adalah:

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

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

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

Dimulai dengan Windows 10, versi 1709, berikut ini juga didukung:

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

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

Bagian fitur dari string kueri ditambahkan ke salah satu string di atas menggunakan pemisah titik koma. Driver grafis dan perangkat keras yang mendasar memberlakukan batasan tentang bagaimana fitur mungkin dikueri. Untuk subsistem video, persyaratan berikut berlaku:

  1. Hanya satu kueri nama fitur ditambah nilai yang dapat digunakan dari setiap subsistem dalam satu panggilan
  2. Kueri subsistem Dekode dapat dilakukan tanpa kueri Tampilan 1, Tampilan 2, atau Perlindungan Output
  3. Kueri subsistem Tampilan 1 mengharuskan kueri subsistem Dekode ada
  4. Kueri subsistem Tampilan 2 memerlukan kueri subsistem Dekode, tetapi tidak memerlukan kueri subsistem Tampilan 1.
  5. Kueri subsistem perlindungan output (HDCP) dapat dilakukan dengan atau tanpa kueri subsistem Dekode, Tampilan 1, atau Tampilan 2, tunduk pada batasan #3 dan #4.

Kueri General: Efficiency dapat dikombinasikan dengan kueri subsistem lainnya.

Hasil yang dikembalikan adalah DAN logis dari semua kueri fitur individual, dengan klarifikasi berikut: Hasil Mungkin hanya diizinkan dari subsistem perlindungan output, dan hanya untuk sementara. Ini Mungkin lebih diutamakan daripada Mungkin hasil dari DAN dari semua kueri fitur lainnya, sampai Mungkin diselesaikan dari waktu ke waktu ke Mungkin atau Tidak Didukung. Batas waktu saat ini untuk Mungkin untuk diselesaikan adalah 10 detik.

Tabel berikut ini mencantumkan kueri fitur individual yang didukung, diatur menurut subsistem video:

Benda Sub-sistem Video Nama Fitur Nilai Fitur Deskripsi Wajib untuk subsistem ini
1a Decode dekode-res-x Angka non-negatif dalam piksel Apakah dekoder video mendukung resolusi maksimum ini di sumbu X? Y
1b Decode dekode-res-y Angka non-negatif dalam piksel Apakah dekoder video mendukung resolusi maksimum ini dalam sumbu Y? Y
1c Decode decode-bitrate Angka positif dalam kilobit per detik (Kbps) Apakah dekoder video mendukung laju bit maksimum ini? Y
1d Decode dekode-fps 24, 25, 29,97, 30, 50, 59,94, atau 60 Apakah video yang didekode mendukung nilai bingkai maksimum per detik (FPS) ini? Y
1e Decode decode-bpc (decode-bpp tidak digunakan lagi) 0, 8, 10, atau 12 Dapatkah dekoder video menggunakan kedalaman warna per piksel ini? Y
1f Decode decoder-hardware-acceleration** 1 atau tidak ada nilai sebagai true Apakah akselerasi perangkat keras DXVA tersedia terlepas dari dekoder OS yang ada? N
1g Decode ** decoder-software-acceleration 1 atau tidak ada nilai sebagai true Apakah dekoder OS hadir mampu mendekode aliran? N
1 jam Decode decoder-software-requires-hardware** 1 atau tidak ada nilai sebagai true Apakah fungsionalitas dekoder OS mengharuskan akselerasi perangkat keras DXVA ada? N
2a Tampilan 1 display-res-x Angka non-negatif dalam piksel Apakah setidaknya satu tampilan** yang berpotensi mendukung resolusi ini di sumbu X? Y
2b Tampilan 1 display-res-y Angka non-negatif dalam piksel Apakah setidaknya satu tampilan*** intersecting mendukung resolusi ini di sumbu Y? Y
2c Tampilan 1 refreshrate tampilan 24, 25, 29,97, 30, 50, 59,94, atau 60 Apakah tampilan dikonfigurasi (seperti yang dipahami oleh Windows) setidaknya untuk laju refresh yang diminta? N
2d Tampilan 1 display-bpc (display-bpp tidak digunakan lagi) 8 atau 10 Apakah semua tampilan berpotengan dengan resolusi ≥ diperlukan mewujudkan setidaknya kedalaman warna ini? N
3 Tampilkan 2* Hdr 1 (didukung) Apakah target mendukung penyajian Rentang Dinamis Tinggi (HDR) Y
4 Perlindungan Output hdcp 0 (nonaktif), 1 (aktif tanpa pembatasan HDCP 2.2 Tipe 1), 2 (aktif dengan pembatasan HDCP 2.2 Tipe 1 Apakah semua intersecting diaktifkan menampilkan dukungan setidaknya tingkat perlindungan permintaan? Y
5 Umum: Efisiensi** pengaturan efisiensi 0 (nonaktif = tidak ada batasan), 1 (on = resolusi batas saat pada daya baterai) Apakah pengguna menginginkan masa pakai baterai, overhead streaming, dan/atau kecepatan pengunduhan di preferensi ke resolusi tertinggi?**** Y
6a Dekripsi jenis enkripsi "cenc" atau "cbcs" Apakah jenis enkripsi ini didukung untuk dekripsi dengan codec / key-system yang ditentukan? Jika nilai tidak ditentukan, nilai default "cenc" digunakan. N
6b Dekripsi encryption-iv-size 8 atau 16 Apakah ukuran Initialization Vector (IV) ini (dalam byte) didukung untuk dekripsi dengan codec / key-system yang ditentukan? Jika nilai tidak ditentukan, nilai default 8 akan digunakan. N

* Hanya didukung pada Windows 10, versi 1607, dan versi OS yang lebih baru

** Hanya didukung pada versi Windows 10, versi 1709, dan OS yang lebih baru

*** Algoritma persimpangan adalah:

  1. Temukan semua tampilan di mana wilayah klien video antarmuka pengguna aplikasi memiliki piksel.
  2. Temukan semua adaptor grafis yang mendorong layar dari langkah 1. Untuk kueri DRM perangkat keras, set adaptor ini hanya difilter ke adaptor yang memiliki dukungan DRM perangkat keras.
  3. Temukan semua tampilan yang tersambung ke adaptor grafis dari langkah 2.

**** Terserah penyedia konten untuk memilih batas resolusi yang akan digunakan saat kebijakan ini aktif. Batas 1080p disarankan, tetapi 720p dapat digunakan. Perhatikan bahwa input untuk kebijakan ini berasal dari halaman antarmuka pengguna Pengaturan Video yang ditambahkan di Windows 10, versi 1709.

Pasangan untuk item 1a dan 1b dan 2a dan 2b masing-masing dihitung sebagai (diminta x >= intersecting aktual set maksimum x) AND (diminta y >= aktual intersecting set maksimum y), dengan modifikasi bahwa tampilan potret dinormalisasi ke lanskap dengan menukar x dan y seperlunya.

Kueri hdcp (item 4) memiliki biaya pemanggilan pertama yang mahal secara komputasi. HDCP harus diaktifkan pada tingkat yang diminta untuk memeriksa apakah tingkat yang diminta dapat dipenuhi dengan topologi tampilan aktif. Hasil Mungkin karena HDCP dievaluasi secara asinkron dan memakan waktu hingga beberapa detik dengan HDCP 2.2, tetapi kueri yang sinkron dengan pemblokiran minimum, mengharuskan penelepon menggunakan kueri berulang kali sampai hasilnya diselesaikan sebagai Mungkin atau Tidak Didukung. Mengubah tingkat HDCP yang diminta dalam kueri saat masih dalam status Mungkin kemungkinan akan menghasilkan respons yang tidak valid. Batas waktu Mungkin sekitar 10 detik.

Sangat disarankan untuk tidak memanggil kueri hdcp lebih sering daripada sekali setiap 250 milidetik, karena biaya komputasi yang mendasar. 500 milidetik adalah minimum yang disukai. Penembolokan dilakukan untuk meminimalkan biaya ini, tetapi setiap topologi tampilan berubah saat polling membatalkan penembolokan.

Sebagai detail implementasi, adaptor grafis dapat memilih untuk menggunakan HDCP 2.2 jika semua simpul mendukungnya, bahkan jika pembatasan HDCP 2.2 Tipe 1 belum ditetapkan. HDCP 2.2 mungkin memakan waktu jauh lebih lama daripada HDCP 1.x untuk terlibat. Pengamatan pada TV generasi saat ini muncul hingga 8 detik, versus sekitar 1 detik untuk perangkat HDCP 1.x termasuk pengulang. Oleh karena itu, kueri hdcp=1 pertama pada startup aplikasi atau setelah perubahan topologi output mengharuskan menunggu hingga 8 detik ditambah margin untuk kasus terburuk ini. Menggunakan 10 detik sebagai penantian maksimum, disarankan untuk melakukan kueri startup aplikasi ketika pengguna paling tidak diharapkan untuk memilih judul, misalnya pada antarmuka pengguna awal. Jika tidak ada perubahan topologi yang terjadi, semua kueri hdcp lebih lanjut akan menjadi sub-detik. Jika konten memiliki persyaratan output HDCP yang sama dengan kueri , penembolokan akan menjminasi tunggu multi-detik yang terjadi lagi saat pemutaran dimulai.

Pada perubahan topologi output, TV dan monitor resolusi tinggi sering membutuhkan waktu beberapa detik untuk menstabilkan desktop. Perubahan, dan terutama pengurangan, dalam tingkat perlindungan output biasanya akan menyebabkan pemutaran aktif dengan DRM perangkat keras gagal berdasarkan desain. Di sini, reaksi terhadap kesalahan MF_POLICY_UNSUPPORTED (0xC00D7159) harus menyembunyikan kesalahan dari pengguna, kueri ulang, dan melanjutkan dengan versi konten yang sesuai untuk kemampuan yang diubah. Secara efektif, ini bertindak sebagai perpanjangan waktu stabilisasi "hotplug".

Kueri fitur dekode DRM perangkat lunak berpotensi ambigu pada performa karena implementasi H.264 memungkinkan decoding perangkat lunak atau offload GPU DirectX Video Acceleration (DXVA). Namun, H.264 DXVA sangat umum di semua titik akhir Windows.

Batasan fungsi dengan kueri dekode DRM perangkat lunak adalah bahwa decode-bpc tidak dievaluasi. Windows tidak mendukung decoding H.264 10-bit, tetapi kueri dengan decode-bpc=10 akan berhasil.

Hasil kueri fitur mencerminkan kemampuan teoritis maksimum subsistem. Aktivitas lain dalam GPU atau berbagai status daya dapat mengurangi kemampuan aktual.

Contoh kueri DRM perangkat keras

Berikut ini menunjukkan penggunaan paling umum untuk konten 4K 10-bit HEVC Standard Dynamic Range (SDR) dengan DRM perangkat keras dan pembatasan HDCP 2.2 Tipe 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”’);

Di mana mp4a dapat diganti dengan mp3, ac-3, atau ec-3. Laju bit dekode dapat disesuaikan sesuai pengodean penyedia konten. decode-fps dapat diatur ke 60 daripada 30 tetapi mungkin terjaga oleh kemampuan throughput prosesor keamanan DRM perangkat keras. nilai display-res-x dan display-res-y dapat diatur lebih rendah dari 4K penuh jika penyedia ingin mendorong aliran 4K ke tampilan 3200 x 1800, 3000 x 2000, atau 2560 x 1440, misalnya.

Karena hasil kueri dekode tidak diharapkan berubah secara dinamis, polling berturut-turut untuk hdcp=2 sementara di Mungkin dapat menggunakan bentuk yang lebih pendek sebagai pengoptimalan kecil

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

Tentu saja, pengoptimalan ini tidak akan menangkap perubahan resolusi monitor dinamis, tetapi perubahan seperti itu kemungkinan akan mengganggu pendirian HDCP yang sedang berlangsung.

Berikut ini menunjukkan penggunaan paling umum untuk konten HEVC High Dynamic Range (HDR) 4K 10-bit dengan DRM perangkat keras dan pembatasan HDCP 2.2 Tipe 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”’);

Catatan: Untuk Windows 10, versi 1607, hdr=1 menunjukkan bahwa dukungan MPO 10-bit dengan DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020 atau DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 atau DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 ada, atau bahwa kunci registri HighColor khusus pengembangan ada dan telah diatur: HKLM\SOFTWARE\Microsoft\Windows\DWM key HighColor sebagai nilai DWORD 1.

Berikut ini menunjukkan penggunaan paling umum untuk konten H.264 SDR 1080p 8-bit dengan DRM perangkat keras dan HDCP tanpa pembatasan Tipe 1 2.2:

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

Berlaku untuk

Lihat juga