Bagikan melalui


METODE IMFExtendedDRMTypeSupport::IsTypeSupportedEx (mfmediaengine.h)

Kueri apakah tipe isi yang ditentukan didukung untuk sistem kunci yang ditentukan.

Sintaks

HRESULT IsTypeSupportedEx(
  [in]  BSTR                    type,
  [in]  BSTR                    keySystem,
  [out] MF_MEDIA_ENGINE_CANPLAY *pAnswer
);

Parameter

[in] type

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

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

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

[in] keySystem

BSTR 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).

[out] pAnswer

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

Mengembalikan nilai

S_OK pada kesuksesan.

Keterangan

Parameter input jenis harus memiliki jenis media RFC 6381 Content-Type dan pengidentifikasi subjenis yang ada. Ini juga harus memiliki string parameter Codec RFC 2045 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 dapat dikueri. Untuk subsistem video, persyaratan berikut berlaku:

  1. Hanya satu kueri nama fitur plus 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 memerlukan kueri subsistem Dekode untuk 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 LOGIS DAN 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 hasil Mungkin dari AND dari semua kueri fitur lainnya, sampai Mungkin diselesaikan dari waktu ke waktu ke Mungkin atau Tidak Didukung. Batas waktu saat ini untuk Mungkin untuk mengatasi adalah 10 detik.

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

Item 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 di sumbu Y? Y
1c Decode dekode-laju bit 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 tanpa nilai sebagai true Apakah akselerasi perangkat keras DXVA tersedia terlepas dari dekoder OS yang ada? N
1g Decode decoder-software-acceleration ** 1 atau tanpa nilai sebagai true Apakah dekoder OS hadir mampu mendekode aliran? N
1h Decode decoder-software-requires-hardware** 1 atau tanpa 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 berpotangan** mendukung resolusi ini di sumbu X? Y
2b Tampilan 1 display-res-y Angka non-negatif dalam piksel Apakah setidaknya satu tampilan berpotingan*** mendukung resolusi ini dalam sumbu Y? Y
2c Tampilan 1 display-refreshrate 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 berpotingan dengan resolusi ≥ diperlukan mewujudkan setidaknya kedalaman warna ini? N
3 Tampilan 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 tampilan berkemampuan intersecting mendukung setidaknya tingkat perlindungan permintaan? Y
5 Umum: Efisiensi** pengaturan efisiensi 0 (off = no restriction), 1 (on = limit resolution saat pada daya baterai) Apakah pengguna menginginkan masa pakai baterai, overhead streaming, dan/atau kecepatan pengunduhan sesuai dengan resolusi tertinggi?**** Y
6a Dekripsi jenis enkripsi "cenc" atau "cbcs", dengan akhiran "-clearlead" opsional. Apakah jenis enkripsi ini didukung untuk dekripsi dengan codec / key-system yang ditentukan? Jika nilai tidak ditentukan, nilai default "cenc" digunakan. Dimulai dengan Windows Build 22621, akhiran "-clearlead" didukung. Ketika "-clearlead" ditambahkan ke nilai jenis enkripsi, dukungan untuk menggunakan konten yang jelas di awal konten terenkripsi juga diminta. Menghapus konten di awal konten mempercepat waktu untuk menyajikan bingkai pertama. Jika "-clearlead" ditambahkan ke jenis enkripsi, nomor versi codec yang diminta akan diperiksa. Codec AV1 dan VP9 akan diperiksa untuk versi utama 2, dan HEVC akan diperiksa untuk v2.0.53421 atau lebih besar. N
6b Dekripsi encryption-iv-size 8 atau 16 Apakah ukuran Inisialisasi Vektor (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 difilter hanya untuk 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 >= intersektrasi aktual set maksimum x) AND (diminta y >= aktual berpotongan 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 menyelidiki 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 pemanggil menggunakan kueri berulang kali sampai hasil 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 topologi tampilan apa pun 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 menunjukkan waktu hingga 8 detik, versus sekitar 1 detik untuk perangkat HDCP 1.x termasuk pengulang. Oleh karena itu, kueri pertama hdcp=1 pada startup aplikasi atau setelah perubahan topologi output memerlukan penantian 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 UI 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 mendinginkan penantian multi-detik 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, mengkueri 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 dekode 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 pendekodean 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-3atau ec-3. Decode-bitrate dapat disesuaikan sesuai pengodean penyedia konten. decode-fps dapat diatur ke 60 daripada 30 tetapi dapat dijaga oleh kemampuan throughput prosesor keamanan DRM perangkat keras. display-res-x dan display-res-y nilai dapat diatur lebih rendah dari 4K penuh jika penyedia ingin mendorong aliran 4K ke 3200 x 1800, 3000 x 2000, atau tampilan 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 pembentukan 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 ditetapkan: HKLM\SOFTWARE\Microsoft\Windows\DWM key HighColor sebagai nilai DWORD 1.

Berikut ini menunjukkan penggunaan paling umum untuk konten SDR H.264 1080p 8-bit dengan DRM perangkat keras dan HDCP tanpa pembatasan 2.2 Tipe 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”’);

Persyaratan

   
Header mfmediaengine.h

Lihat juga

MF_MEDIA_ENGINE_CANPLAY