Les lecteurs de longue date de Raspberryme Software se souviennent peut-être de la campagne de financement participatif de Bootlin lancée en 2018 pour apporter des pilotes open source Allwinner VPU afin de prendre en charge l’encodage et le décodage vidéo matériel sous Linux principal. Ils ont réussi à récolter suffisamment de fonds (plus de 30 000 euros) auprès de petits donateurs et de plusieurs entreprises (Olimex, Pine64, Libre Computer, FriendlyELEC et Orange Pi) pour travailler sur des pilotes VPU open source pour Linux principal, mais uniquement pour MPEG2, H264, et le décodage H265 pour une gamme de SoC Allwinner tels que l’A20 et le H5, mais pas assez pour couvrir le coût de l’encodage vidéo H264.
Cinq ans plus tard, Bootlin a pris sur lui de terminer le travail sans le soutien ou l’assistance d’Allwinner et a maintenant publié un pilote V4L2 open source basé sur le noyau Linux pour prendre en charge l’encodeur vidéo H.264 trouvé dans Allwinner V3, V3s et S3. SoC de caméra.
Le nouveau pilote s’appuie sur des travaux antérieurs de la société pour prendre en charge l’interface de caméra MIPI CSI-2 et l’ISP (Image Signal Processor) dans les processeurs Allwinner V3/V3s/S3, qui ont tous deux été ajoutés à Linux principal en 2021.
La prise en charge du noyau Linux de Bootlin pour l’encodage vidéo H.264 avec les plates-formes Allwinner V3/V3s/S3 se compose d’ensembles de correctifs au-dessus du pilote Linux Cedrus principal (qui prend déjà en charge le décodage) qui peut être trouvé dans la branche h264-encoding du dépôt Linux de Bootlin. sur GitHub et un outil de test dédié à l’espace utilisateur appelé v4l2-cedrus-enc-test.
Le pilote Cedrus utilise désormais /dev/video0 pour le décodage vidéo et /dev/video1 pour l’encodage vidéo dans les processeurs de caméra Allwinner V3, V3s et S3. Bootlin explique qu’il n’est pas tout à fait prêt à être inclus dans Linux principal et à prendre entièrement en charge l’encodage H.264 en raison des points suivants :
- Une nouvelle API d’espace utilisateur (uAPI) est nécessaire pour exposer les encodeurs sans état dans Linux principal. Voir la discussion sur la liste de diffusion Linux-media pour plus de détails
- La refonte du pilote doit être soumise et fusionnée en amont ;
- Le contrôle du débit n’est actuellement pas implémenté et seuls les contrôles QP directs sont disponibles
- Le nouveau pilote ne prend en charge que les plates-formes Allwinner V3/V3s/S3, mais d’autres générations utilisent des unités d’encodeur H.264 différentes, mais plutôt similaires, qui pourraient également être prises en charge avec un travail supplémentaire.
- Les fonctionnalités de prétraitement telles que la mise à l’échelle et la conversion du format de pixel ne sont pas encore prises en charge
- FFmpeg, GStreamer et/ou d’autres bibliothèques d’espace utilisateur devront être mis à jour pour prendre en charge l’uAPI de l’encodeur sans état.
L’annonce de Bootlin contient plus de détails techniques et la société accueille également favorablement le financement d’entreprises qui souhaitent un pilote d’encodeur vidéo Allwinner open source plus complet.
Retrouvez l’histoire de Raspberry Pi dans cette vidéo :
