Compilar la biblioteca x264 en SmartOS

Se puede instalar la biblioteca x264 en una zona nativa SmartOS usando simplemente PkgSrc, pero está compilada para una CPU genérica, por compatibilidad, y no aprovechará nuestro procesador. Se puede obtener un rendimiento mucho mayor compilando nosotros mismos x264 desde el código fuente, adaptando la versión compilada a las capacidades de nuestra CPU en particular.

Lo más sencillo es utilizar una zona SmartOS PkgSrc como se ha explicado en artículos anteriores. Los pasos son simples:

  1. Activamos el entorno de compilación para la versión de la zona SmartOS que necesitamos. Por ejemplo:

    [root@PkgSrc ~]# run-sandbox 2022Q4-x86_64
    [...]
    --<root@PkgSrc>-(/data/chroot/dev-2022Q4-x86_64)-<~>--
    ->
    
  2. Nos vamos al directorio de x264 en PkgSrc:

    -> cd /data/pkgsrc/multimedia/x264/
    
  3. Vemos qué opciones de compilación tenemos:

    -> bmake show-options
    Any of the following general options may be selected:
            threads  Enable threads support.
    
    These options are enabled by default:
            threads
    
    These options are currently enabled:
            threads
    
    You can select which build options to use by setting PKG_DEFAULT_OPTIONS
    or PKG_OPTIONS.x264.
    

    Vemos que solo hay una opción, threads, y que está activada por defecto. No hay nada que hacer.

  4. Compilamos el código:

    -> bmake package
    [...]
    => Creating pkginfo file /data/packages/SmartOS/2022Q4/x86_64/pkginfo/x264-20220601.pkginfo
    --<root@PkgSrc>-(/data/chroot/dev-2022Q4-x86_64)-</data/pkgsrc/multimedia/x264>--
    ->
    
  5. Ahora tenemos el paquete compilado en /data/packages/SmartOS/2022Q4/x86_64/All/x264-20220601.tgz. Podemos instalarlo en la zona SmartOS deseada, desempaquetarlo y obtener la biblioteca compartida, etc.

El proceso ha sido simple, rápido y limpio.

¿Cuál es la mejora de rendimiento entre utilizar la versión precompilada o compilarla nosotros mismos para nuestra CPU?

En ciertos perfiles de vídeo la versión precompilada es capaz de procesar 0.772 fotogramas por segundo, mientras que nuestra compilación consigue 4.08 fotogramas por segundo. La mejora es de 5.28.

En otros perfiles de vídeo la versión precompilada es capaz de procesar 0.518 fotogramas por segundo, pero nuestra versión obtiene 2.33 fotogramas por segundo. La mejora es de 4.5.

¡No está mal por menos de diez minutos de trabajo!

PS: Obsérvese que se está compilando la versión 20220601 de x264, que tiene casi un año de antigüedad. Habría que probar a compilar una versión más reciente. Tema futuro.