Transcodeur Intel VPL : matériel pris en charge¶
Quel matériel Intel convient au transcodage matériel, quels codecs sont disponibles sur les différentes générations graphiques et comment s’assurer que le matériel est reconnu. L’installation des paquets du transcodeur est décrite dans la section Transcodeurs, la configuration du transcodeur lui-même — dans Transcodeurs.
En bref : il faut une carte graphique Intel intégrée ou dédiée de niveau Gen9 ou supérieur. Le transcodeur détermine quel runtime Intel est présent sur la machine et s’y connecte ; un seul et même fichier exécutable tcivpl fonctionne aussi bien sur le matériel récent que sur le matériel ancien.
Deux runtimes Intel¶
Runtime |
Matériel |
|---|---|
oneVPL (VPL v2) |
Gen12 et plus récent : Tiger Lake, Rocket Lake, Alder Lake (y compris Alder Lake-N : N100, N305), Raptor Lake, Arc |
Media SDK v1 (MSDK v1) |
Gen9–Gen11 : Skylake, Kaby Lake, Coffee Lake, Comet Lake, Ice Lake |
Le choix du runtime est automatique et ne demande aucun réglage particulier : le répartiteur VPL énumère les implémentations trouvées pour le périphérique /dev/dri/renderD<N> sélectionné, et le transcodeur prend la première qui convient au fonctionnement matériel. Le transcodeur n’a pas de règle dédiée « préférer VPL v2 » — pour Gen9–Gen11, le nouveau runtime n’existe tout simplement pas, c’est donc toujours Media SDK v1 qui s’y trouve, tandis que sur Gen12 et plus récent, seul oneVPL est habituellement installé.
À prendre en compte lors du choix du matériel : les procédures d’installation du transcodeur (Transcodeurs) n’installent que le runtime VPL v2, elles visent donc Gen12 et plus récent. Pour Gen9–Gen11, le runtime Media SDK v1 s’installe séparément et il peut être absent des distributions récentes (voir ci-dessous).
Codecs¶
Runtime |
Décodage |
Encodage |
|---|---|---|
VPL v2 (Gen12+) |
H.264, HEVC, MPEG-2 |
H.264, HEVC, MPEG-2 |
MSDK v1 (Gen9–Gen11) |
H.264, MPEG-2 |
H.264, MPEG-2 |
Ce qui n’est pas disponible :
HEVC n’est pas pris en charge sur MSDK v1 — ni le décodage, ni l’encodage : dans Media SDK v1, HEVC est raccordé via une interface de plug-ins que le répartiteur oneVPL ne fournit pas. HEVC exige une machine Gen12 ou plus récente. À la tentative, le transcodeur écrit une erreur explicite —
HEVC decode is not supported on the Intel Media SDK v1 runtimeouHEVC encode is not supported on the Intel Media SDK v1 runtime.AV1, VP9 et VC-1 ne sont pris en charge par aucun des deux runtimes — ils ne sont pas nécessaires en diffusion.
Les trois codecs énumérés constituent le maximum avec lequel le transcodeur sait travailler. Sur VPL v2, il n’impose pas de restrictions propres, c’est pourquoi le jeu réel de codecs d’un adaptateur donné est déterminé par le runtime ; ce qui est disponible sur la machine est indiqué par tcivpl --hw-list (voir ci-dessous). La matrice générale des codecs du transcodeur, indépendante du backend, est présentée dans Backends et codecs.
Matériel Atom bridé : non pris en charge¶
Les plateformes à cœurs Atom antérieures à Gen12 — Apollo Lake, Gemini Lake, Elkhart Lake, Jasper Lake (Celeron et Pentium des séries J et N : J4125, J6412, N5105 et similaires) — ne conviennent pas au transcodage.
Leur moteur multimédia est bridé : il n’y a pas d’encodage matériel complet et l’encodage MPEG-2 est totalement absent. Le décodage peut fonctionner sur de telles puces, mais il n’y a rien pour transcoder — utilisez le transcodeur logiciel (paquet pstreamer-tcsw) ou un autre matériel. Le transcodeur ne rejette pas ce matériel à l’avance : il démarre puis se termine sur une erreur à l’initialisation de l’encodeur.
Exception importante : Alder Lake-N (N100, N305 et similaires) repose également sur des cœurs Atom, mais sa partie graphique est un Gen12 à part entière et il est pris en charge.
Point distinct : les anciens processeurs Atom ne possèdent pas d’AVX, alors qu’une partie des paquets Intel prêts à l’emploi sont compilés avec AVX. Dans ce cas, le processus du transcodeur plante avec Illegal instruction — les instructions sont exécutées par la bibliothèque du pilote ou du runtime Intel chargée dans le processus, et non par le code du transcodeur lui-même.
Ce qui doit être installé¶
Composant |
RHEL / AlmaLinux / Rocky |
Debian / Ubuntu |
|---|---|---|
Pilote VA-API iHD (obligatoire) |
|
|
Runtime VPL v2 (Gen12+) |
|
|
Runtime MSDK v1 (Gen9–Gen11) |
|
|
VA-API, DRM |
|
|
Un seul runtime est nécessaire — celui qui correspond au matériel. Le pilote iHD est obligatoire dans tous les cas : avec l’ancien i965, l’initialisation de VA-API aboutit, mais le décodeur ne démarre pas, et aucun message distinct n’en informe — le pilote n’est visible que dans le journal au démarrage du flux. Sous Debian et Ubuntu, prenez précisément la variante intel-media-va-driver-non-free : dans intel-media-va-driver, une partie des codecs est supprimée.
Les noms des paquets dépendent de la provenance de l’installation. Les noms Debian indiqués proviennent du dépôt Intel Graphics, qui est ajouté par la procédure d’installation (Ubuntu 22/24) ; dans le dépôt propre à Ubuntu, le même runtime VPL v2 s’appelle libmfx-gen1.2 et les versions y sont nettement plus anciennes.
Le répartiteur Intel VPL (libvpl2 dans les distributions) est fourni avec le paquet du transcodeur : il est installé dans /opt/pss/lib/libvpl.so.2, le chemin étant déclaré dans le répertoire /etc/ld.so.conf.d/. Mais le répartiteur ne fait que choisir le runtime — s’il n’y a pas de runtime adapté sur la machine, il n’y a rien pour transcoder.
Le runtime MSDK v1 a été retiré des distributions récentes : intel-mediasdk est présent dans EPEL 9, mais pas dans EPEL 10 ; libmfx1 est présent dans Debian 12 et Ubuntu 24.04, mais il ne figure plus dans les versions suivantes. Sur de tels systèmes, le runtime destiné au matériel Gen9–Gen11 devra être installé séparément.
Le paquet du transcodeur n’entraîne l’installation ni du pilote ni du runtime ; une installation réussie ne signifie donc pas à elle seule que le transcodage matériel fonctionnera — cela se vérifie séparément. Notez également que l’utilisateur du service doit avoir accès aux périphériques /dev/dri (Ubuntu 22/24).
Comment vérifier¶
/usr/local/bin/tcivpl --hw-list
La commande affiche un document XML contenant la liste des implémentations trouvées par le répartiteur VPL — sur une seule ligne, sans retours à la ligne. Pour chacune sont indiqués le nom du runtime (device-name), la version de l’API, les listes de codecs du décodeur et de l’encodeur, l’adaptateur et l’indicateur d’aptitude au fonctionnement matériel. Exemple de sortie sur Gen9–Gen11 (présenté avec des retours à la ligne pour la lisibilité) :
<vpl mfx-version="2.15">
<device id="0" device-name="mfxhw64" api-version="1.35" legacy="1"
dec-codecs="h264,mpeg2" enc-codecs="h264,mpeg2"
vendor-id="8086" device-id="4555" drm-render="128"
supported="1"/>
</vpl>
Comment lire la sortie :
legacy="1"— l’implémentation annonce une version d’API inférieure à 2.0, c’est-à-dire qu’il s’agit de l’ancien runtime Media SDK v1 ; sans cet indicateur, c’est oneVPL 2.x. C’est sur cet indicateur et surapi-versionqu’il faut s’appuyer en premier lieu : la valeurdevice-nameprovient du répartiteur telle quelle (en pratique —mfxhw64pour Media SDK v1 etmfx-genpour oneVPL).supported="1"— l’implémentation convient au fonctionnement matériel. Une entrée dépourvue de cet indicateur équivaut à son absence.Pour Media SDK v1, la liste des codecs est toujours
h264,mpeg2— il s’agit du jeu pris en charge par le transcodeur sur ce runtime, et non du résultat d’une interrogation du matériel. Pour oneVPL, les listes sont issues de ce qu’annonce le runtime.mfx-version— version de l’API des en-têtes avec lesquels le transcodeur a été compilé, et non la version du runtime installé.
Une liste vide (un élément <vpl> sans le moindre <device>) signifie qu’il n’y aura pas de transcodage matériel sur cette machine : le runtime ou le pilote n’est pas installé, le GPU n’est pas un GPU Intel, ou bien l’accès à /dev/dri est absent. Le message No vpl libraries found est un cas distinct : c’est la bibliothèque du répartiteur elle-même qui est introuvable.
La commande ne fait qu’énumérer les implémentations, elle n’en choisit aucune. Laquelle sera utilisée est déterminé au lancement du flux — d’après le périphérique indiqué dans les paramètres du transcodeur. Au démarrage du flux, le transcodeur écrit deux lignes dans le journal : le runtime sélectionné avec sa version d’API, et la version de VA-API accompagnée du nom du pilote. La seconde ligne montre que c’est bien le pilote iHD qui fonctionne, et non i965.
Les backends de transcodage détectés, leurs versions et les périphériques trouvés sont également affichés sur l’écran « À propos » (À propos), et la charge du GPU — sur l’écran « Moniteur système » (Moniteur système).