¿Qué es el encoding por software?
El encoding por software comprime contenido multimedia mediante instrucciones ejecutadas en procesadores de propósito general, en lugar de usar principalmente un codificador de hardware dedicado. Su comportamiento en cuanto a códec y calidad depende de la implementación y los ajustes seleccionados.
Cómo funciona el encoding por software
Un codificador por software ejecuta algoritmos de códecs como instrucciones de CPU y ofrece controles específicos de la implementación para la predicción, el control de tasa, la cuantización y la gestión de hilos. Los ajustes preestablecidos suelen intercambiar esfuerzo computacional por eficiencia de compresión, por lo que dos resultados de encoding con la misma tasa de bits nominal pueden diferir en calidad y tiempo de ejecución. Su portabilidad y capacidad de configuración lo hacen útil en granjas de transcodificación por lotes, entornos de desarrollo y flujos de trabajo que necesitan funciones poco comunes de los códecs. Aun así, la capacidad de procesamiento debe dimensionarse en función de la resolución, la frecuencia de fotogramas, el ajuste preestablecido y los núcleos disponibles.
Datos clave
- Las implementaciones por software pueden ofrecer perfiles más nuevos o herramientas experimentales de códecs antes de que los dispositivos de función fija los admitan, pero el flujo de bits resultante debe seguir ajustándose al perfil y al nivel del decodificador.
- No se garantiza una salida determinista entre versiones o compilaciones del codificador: las actualizaciones de bibliotecas, las opciones de compilación y las optimizaciones específicas de la CPU pueden cambiar la asignación de bits o incluso los bytes codificados.
- El procesamiento paralelo mejora la capacidad de procesamiento, pero algunas etapas de predicción y encoding de entropía tienen dependencias que limitan el escalado; añadir núcleos de CPU no reduce necesariamente el tiempo de encoding de forma proporcional.
Cuándo importa el encoding por software
Elige el encoding por software cuando la flexibilidad de los códecs o el control preciso de la calidad sean más importantes que la velocidad o el consumo de energía. Los ajustes preestablecidos de alta calidad pueden consumir mucho tiempo de CPU y no cumplir los plazos de tiempo real en hardware limitado.