triaje: las 15 de ffmpeg, medidas sobre el artefacto sellado

De 140 pendientes a 125. Todas caen por el mismo criterio ya establecido (--disable-autodetect ⇒
sólo entra lo que se pide, y no se pide nada), pero el veredicto NO se firmó de memoria: se midió
con nm/strings sobre store/…-ffmpeg/usr/lib/libavcodec.so.61.19.100, que es el artefacto que la
distro publica hoy.

LO QUE LA MEDICIÓN CAMBIA. La lectura fácil era «sin libaom/libvpx/x265 la distro no reproduce
AV1/VP9/HEVC», y es FALSA: los decoders nativos están compilados (aparecen «AV1 decoder», los bsf
vp9_*, hevc y theora). Lo que falta es CODIFICAR. El artefacto trae 34 encoders y ninguno de vídeo
moderno: AAC, FLAC, Opus, MPEG4, mjpeg, ffv1, prores, H.263, jpeg2000. O sea: la distro decodifica
lo de hoy y codifica lo de ayer.

Y esa frase tampoco alcanza sola, porque la codificación H.264 del escritorio NO pasa por ffmpeg:
obs-studio enlaza x264 —que SÍ está en el catálogo, recipes/x264.toml— por su propio plugin
obs-x264. Antes de anunciar «no se puede grabar vídeo» convenía mirar quién codifica de verdad.

⚠ openapv NO es una perilla que no encendimos: es DESFASE DE VERSIÓN. Sale de la expresión de
nixpkgs para ffmpeg 8.x y nuestra receta pinea 7.1, cuyo `configure` no nombra apv en ningún sitio
(verificado en el tarball). Queda 'opcional' y no 'nix-ismo' a propósito: el día que ffmpeg suba de
major vuelve a ser una pregunta legítima, y mandarla al descarte del sembrador la haría invisible.

⚠ ocl-icd y opencl-headers tienen el hueco una capa MÁS ABAJO: mesa va con -Dllvm=disabled
-Dgallium-rusticl=false ⇒ la distro no publica NINGÚN runtime de OpenCL. Un ICD loader sin ICD no
filtra nada; encender --enable-opencl en ffmpeg no compraría capacidad.

CAPACIDADES AUSENTES, dichas en voz alta y no descubiertas después:
  libbluray    no se navegan discos Blu-ray (menús, títulos, BD-J); los ficheros sueltos se leen
  libopenmpt   no suena música de módulos (MOD/XM/S3M/IT)
  amf-headers / libvdpau   codificación y decodificación por hardware de AMD y NVIDIA: piden driver
               propietario, que la distro no trae ⇒ discutible sólo si eso cambia
El resto no cuesta nada: libtheora es el encoder de un formato de 2004 (su decoder es nativo),
xvidcore es REDUNDANTE con el «MPEG4 encoder» nativo que ya está, vid.stab agrega dos filtros de
estabilización y zimg sólo el filtro zscale (el escalado lo hace libswscale, compilada).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LCt3ettR4Z7b6wPCBmbvEV
This commit is contained in:
Sergio
2026-09-09 16:43:12 +00:00
co-authored by Claude Opus 5
parent c15d4e15e2
commit a43beeb352
+30 -30
View File
@@ -52,9 +52,9 @@ perfiles = ["base", "cli", "escritorio-sway"]
piden = ["gnupg"]
[candidato."amf-headers"]
veredicto = "pendiente"
veredicto = "opcional"
sugerencia = "opcional?"
porque = "lo pide una sola receta (ffmpeg); mirá si es una feature opcional"
porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-amf, la codificación por hardware de AMD: necesita el driver propietario, que la distro no trae"
perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
piden = ["ffmpeg"]
@@ -821,9 +821,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
piden = ["libtiff"]
[candidato."libaom"]
veredicto = "pendiente"
veredicto = "opcional"
sugerencia = "opcional?"
porque = "lo pide una sola receta (ffmpeg); mirá si es una feature opcional"
porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libaom. ⚠ Lo que se pierde es CODIFICAR AV1, no reproducirlo: el decoder nativo está en el artefacto sellado («AV1 decoder», medido con strings sobre libavcodec.so.61.19.100)"
perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
piden = ["ffmpeg"]
@@ -870,9 +870,9 @@ perfiles = ["escritorio-gnome"]
piden = ["appstream"]
[candidato."libbluray"]
veredicto = "pendiente"
veredicto = "opcional"
sugerencia = "opcional?"
porque = "lo pide una sola receta (ffmpeg); mirá si es una feature opcional"
porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libbluray. ⚠ CAPACIDAD AUSENTE dicha en voz alta: la distro no navega discos Blu-ray (menús, títulos, BD-J). Los ficheros sueltos se leen igual"
perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
piden = ["ffmpeg"]
@@ -1117,9 +1117,9 @@ perfiles = ["escritorio-gnome"]
piden = ["gnome-shell"]
[candidato."libopenmpt"]
veredicto = "pendiente"
veredicto = "opcional"
sugerencia = "opcional?"
porque = "lo pide una sola receta (ffmpeg); mirá si es una feature opcional"
porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libopenmpt: música de módulos (MOD/XM/S3M/IT). Capacidad ausente sin consumidor en el catálogo"
perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
piden = ["ffmpeg"]
@@ -1282,9 +1282,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
piden = ["pango", "qtbase"]
[candidato."libtheora"]
veredicto = "pendiente"
veredicto = "opcional"
sugerencia = "opcional?"
porque = "lo pide una sola receta (ffmpeg); mirá si es una feature opcional"
porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libtheora, o sea el ENCODER; el decoder de Theora es nativo y está en el artefacto sellado (medido). Formato de 2004 sin nadie que lo pida"
perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
piden = ["ffmpeg"]
@@ -1317,9 +1317,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
piden = ["mesa"]
[candidato."libvdpau"]
veredicto = "pendiente"
veredicto = "opcional"
sugerencia = "opcional?"
porque = "lo pide una sola receta (ffmpeg); mirá si es una feature opcional"
porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-vdpau, la aceleración por hardware de NVIDIA. Sin driver propietario en la distro no hay a quién hablarle"
perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
piden = ["ffmpeg"]
@@ -1338,9 +1338,9 @@ perfiles = ["escritorio-kde"]
piden = ["obs-studio"]
[candidato."libvpx"]
veredicto = "pendiente"
veredicto = "opcional"
sugerencia = "opcional?"
porque = "lo pide una sola receta (ffmpeg); mirá si es una feature opcional"
porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libvpx. Igual que libaom: se pierde CODIFICAR VP8/VP9, no reproducirlos — los decoders nativos están (los bsf vp9_* aparecen en el artefacto sellado)"
perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
piden = ["ffmpeg"]
@@ -1711,16 +1711,16 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
piden = ["ffmpeg", "obs-studio"]
[candidato."ocl-icd"]
veredicto = "pendiente"
veredicto = "opcional"
sugerencia = "opcional?"
porque = "lo pide una sola receta (ffmpeg); mirá si es una feature opcional"
porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-opencl, y el hueco está una capa MÁS ABAJO: mesa se construye con -Dllvm=disabled -Dgallium-rusticl=false ⇒ la distro no publica NINGÚN runtime de OpenCL. Un ICD loader sin ICD no filtra nada"
perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
piden = ["ffmpeg"]
[candidato."openapv"]
veredicto = "pendiente"
veredicto = "opcional"
sugerencia = "opcional?"
porque = "lo pide una sola receta (ffmpeg); mirá si es una feature opcional"
porque = "⚠ NO es una perilla que no encendimos: es DESFASE DE VERSIÓN. El candidato sale de la expresión de nixpkgs para ffmpeg 8.x; nuestra receta pinea 7.1 y su `configure` no nombra apv/openapv en ningún sitio (verificado en el tarball sellado). Vuelve a ser pregunta legítima el día que ffmpeg suba de major"
perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
piden = ["ffmpeg"]
@@ -1732,9 +1732,9 @@ perfiles = ["escritorio-kde"]
piden = ["opencv"]
[candidato."opencl-headers"]
veredicto = "pendiente"
veredicto = "opcional"
sugerencia = "opcional?"
porque = "lo pide una sola receta (ffmpeg); mirá si es una feature opcional"
porque = "mismo caso que ocl-icd: son las cabeceras de OpenCL y la distro no publica runtime (mesa va -Dllvm=disabled -Dgallium-rusticl=false), además de que ffmpeg iría con --disable-autodetect"
perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
piden = ["ffmpeg"]
@@ -2199,9 +2199,9 @@ perfiles = ["escritorio-kde"]
piden = ["zxing-cpp"]
[candidato."svt-av1"]
veredicto = "pendiente"
veredicto = "opcional"
sugerencia = "opcional?"
porque = "lo pide una sola receta (ffmpeg); mirá si es una feature opcional"
porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libsvtav1: el tercer encoder de AV1 que no tenemos. Reproducir AV1 no lo necesita (decoder nativo, medido en el artefacto)"
perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
piden = ["ffmpeg"]
@@ -2364,9 +2364,9 @@ perfiles = ["escritorio-kde"]
piden = ["jansson"]
[candidato."vid.stab"]
veredicto = "pendiente"
veredicto = "opcional"
sugerencia = "opcional?"
porque = "lo pide una sola receta (ffmpeg); mirá si es una feature opcional"
porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libvidstab (configure:291), que sólo habilita dos filtros de estabilización de vídeo: vidstabdetect y vidstabtransform"
perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
piden = ["ffmpeg"]
@@ -2406,9 +2406,9 @@ perfiles = ["escritorio-kde"]
piden = ["obs-studio"]
[candidato."x265"]
veredicto = "pendiente"
veredicto = "opcional"
sugerencia = "opcional?"
porque = "lo pide una sola receta (ffmpeg); mirá si es una feature opcional"
porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libx265. ⚠ Se pierde CODIFICAR HEVC; el decoder nativo está en el artefacto sellado. Y la codificación H.264 del escritorio no pasa por acá: obs-studio enlaza x264 —que SÍ está en el catálogo— por su propio plugin obs-x264"
perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
piden = ["ffmpeg"]
@@ -2482,9 +2482,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-sway"]
piden = ["girara", "gjs", "libadwaita", "mutter"]
[candidato."xvidcore"]
veredicto = "pendiente"
veredicto = "opcional"
sugerencia = "opcional?"
porque = "lo pide una sola receta (ffmpeg); mirá si es una feature opcional"
porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libxvid, un encoder MPEG-4 ASP que además es REDUNDANTE: el artefacto sellado ya trae «MPEG4 encoder» nativo (medido)"
perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
piden = ["ffmpeg"]
@@ -2513,9 +2513,9 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
piden = ["libass"]
[candidato."zimg"]
veredicto = "pendiente"
veredicto = "opcional"
sugerencia = "opcional?"
porque = "lo pide una sola receta (ffmpeg); mirá si es una feature opcional"
porque = "ffmpeg va con --disable-autodetect y la receta no pasa el --enable-* que la encendería (mismo criterio ya aplicado a srt/speex/soxr). Es --enable-libzimg, que sólo agrega el filtro `zscale`. El escalado de la distro lo hace libswscale, que va compilada"
perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritorio-sway"]
piden = ["ffmpeg"]