Mejoras del decodificador y reproductor EVC móvil en tiempo real
By Olga Krovyakova - May, 26 2021
Abstracto
Este artículo describe las mejoras con respecto a la Etapa 1 del proyecto Reproductor de video móvil en tiempo real de octubre de 2020, que implementó una versión anterior del reproductor, capaz de reproducir flujos de bits EVC en tiempo real. El reproductor se basa en la versión 6.1 del software de referencia ETM y está optimizado para la arquitectura ARM. El reproductor se desarrolló y probó en el teléfono inteligente Huawei P40 Pro y demuestra una reproducción en tiempo real a 24 FPS en archivos de prueba de 1080p con un subconjunto de herramientas de perfil principal EVC.
1.Resultados
Resumiendo se presentó la primera etapa de la solución que permite una reproducción en tiempo real de las secuencias codificadas con las siguientes restricciones:
- Valor del parámetro de cuantificación: 32;
- Conjunto de herramientas de codificación: Affine, DMVR, HTDF, ADMVP, ADCC, AMVR, ATS, IQT, CM_INIT, ADDB, DBF, HMVP, MMVD, POCS, RPL (conjunto Stage1).
El EVC Player presentado demuestra 25,07 FPS para las secuencias “ParkScene” y 26,02 FPS para las secuencias “Kimono1&rdquo.
Los resultados de las optimizaciones realizadas durante la Etapa 2 muestran que la herramienta BTT se puede agregar de forma segura al conjunto de herramientas y el QP se puede reducir a 27 y esto aumentará la calidad de la imagen con las condiciones:
- Valor del parámetro de cuantificación: 27;
- Conjunto de herramientas de codificación: Affine, DMVR, HTDF, ADMVP, ADCC, AMVR, ATS, IQT, CM_INIT, ADDB, DBF, HMVP, MMVD, POCS, RPL, BTT (en adelante denominado conjunto Stage2).
Tabla 1: Velocidad de reproducción máxima promedio lograda con el conjunto de herramientas seleccionado en el dispositivo móvil de prueba para QP=27
Secuencia de prueba |
Velocidad de decodificación del Decodificador de etapa 1 (fps) |
Velocidad de decodificación del Decodificador de etapa 2 (fps) |
Ganancia de rendimiento sobre el Decodificador de etapa 1 (%) |
Parqueescena |
21.36 |
32,99 |
53,2 |
Kimono1 |
22,85 |
35.02 |
54,4 |
Como resultado de las optimizaciones, el decodificador muestra entre un 53 y un 54 % de ganancia de rendimiento en la aplicación del reproductor EVC, diseñada para el teléfono inteligente Huawei P40 Pro.
Tabla 2. Conjunto de herramientas seleccionado para la mejora del jugador en tiempo real
Nombre corto de la herramienta |
Nombre completo de la herramienta |
ETM6.1 CTC RA configuración predeterminada |
Conjunto de herramientas seleccionado, etapa 1 |
Conjunto de herramientas seleccionado, etapa 2 |
ADMVP |
Predicción avanzada de vectores de movimiento |
1 |
1 |
1 |
AFINO |
Predicción afín |
1 |
1 |
1 |
Htdf |
Filtro de dominio de transformación de Hadamard |
1 |
1 |
1 |
DMVR |
Derivación de vectores de movimiento del lado del decodificador |
1 |
1 |
1 |
ADCC |
Codificación de coeficientes avanzados |
1 |
1 |
1 |
ADDB |
Desbloqueo avanzado |
1 |
1 |
1 |
ALFA |
Filtro de bucle adaptativo |
1 |
0 |
0 |
AMVR |
Resolución de vectores de movimiento adaptativos |
1 |
1 |
1 |
ETA |
Selección de transformaciones adaptativas |
1 |
1 |
1 |
BTT |
Árboles binarios y ternarios |
1 |
0 |
1 |
CM_INIT |
Inicialización del modelado de contexto |
1 |
1 |
1 |
DBF |
Filtro de desbloqueo |
1 |
1 |
1 |
EIPD |
Direcciones de intra predicción mejoradas |
1 |
0 |
0 |
HMVP |
Historia Vectores de movimiento Predicción |
1 |
1 |
1 |
iQT |
Cuantización y transformaciones avanzadas |
1 |
1 |
1 |
MMVD |
Fusionar con la diferencia de vectores de movimiento |
1 |
1 |
1 |
POCS |
Recuento avanzado de orden de imágenes |
1 |
1 |
1 |
RPL |
Lista de imágenes de referencia |
1 |
1 |
1 |
SUCO |
Orden de codificación de unidades divididas |
1 |
0 |
0 |
IBC |
Copia intrabloque |
0 |
0 |
0 |
2. Herramientas EVC compatibles
Se considera que la herramienta BTT tiene el mayor potencial, por lo que realizamos pruebas para la herramienta BTT habilitada adicionalmente para el conjunto Stage1 (Tabla 2).
Las siguientes Figuras 1-3 muestran la codificación EVC, el rendimiento de decodificación y los valores PSNR para los archivos ParkScene y Kimono1 codificados con valores QP 27-32 con y sin la herramienta BTT64. Para mayor comodidad, las cifras contienen valores combinados medidos para transmisiones sin BTT64 y con BTT64 en consecuencia.
Figura 1. Rendimiento de codificación ETM 6.1 en una PC con CPU i7-9700 operada por Windows 10 x64 con y sin la herramienta BTT64 habilitada
Figura 2. Rendimiento del decodificador de etapa 1 en HUAWEI P40 Pro operado por EMUI 10.1 con y sin la herramienta BTT64 habilitada
Figura 3. Valores PSNR de archivos codificados por el codificador ETM 6.1 con y sin la herramienta BTT64 habilitada.
La Figura 3 muestra que habilitar BTT64 no reduce significativamente el rendimiento del decodificador y también mejora la calidad del archivo de salida’. De modo que podemos habilitarlo de forma segura como una herramienta EVC adicional.
Para ceñirse al concepto de decodificación propuesto en la Etapa 1, se propone habilitar un tamaño de CU de 64x64 para el BTT (en adelante denominado BTT64 por conveniencia).
Para lograr una velocidad de reproducción en tiempo real en el dispositivo de destino, es importante conocer la información de perfiles de las herramientas EVC durante la decodificación. Esta información fue recopilada por Android Profiler en la prueba decodificada con el decodificador de la Etapa 1. La Figura 4 y la Figura 5 demuestran los datos de perfil obtenidos en el dispositivo de destino para los flujos de bits ParkScene y Kimono1 codificados con el conjunto de herramientas Stage 2 y el valor QP igual a 27.
Figura 4. Perfil del decodificador para el flujo de bits de ParkScene codificado con el conjunto de herramientas de la Etapa 2 (QP=27)
Figura 5. Perfil del decodificador para el flujo de bits Kimono1 codificado con el conjunto de herramientas de la Etapa 2 (QP=27)
Las funciones que consumen más tiempo están relacionadas con DMVR, compensación de movimiento (MC), desbloqueo y reconstrucción. Estas herramientas consumen alrededor del 77% del tiempo de decodificación y son las mejores candidatas para la optimización SIMD.
3. Detalles de implementación y reproducción
Para lograr la reproducción en tiempo real en el conjunto de herramientas seleccionado, se realizaron las siguientes modificaciones principales sobre el software de referencia ETM 6.1:
- Implementación ARM SIMD de las funciones más críticas en piezas de Desbloqueo y Reconstrucción
- Procesamiento paralelo tipo Waterfront (WPP) para procesos de desbloqueo y decodificación, extracción de subprocesos y arranque basado en líneas
Como preparación para las optimizaciones de la funcionalidad multiproceso, hubo algunas refactorizaciones y optimizaciones adicionales en las funciones relacionadas con el desbloqueo. Después de finalizar la implementación multiproceso, la ganancia de FPS del descodificador’sobre el descodificador de la Etapa 1 es del 40 % para el Kimono1 y del 42 % para las secuencias ParkScene, y el reproductor es capaz de demostrar una reproducción de 24 fps en el dispositivo.
Para verificar la velocidad de reproducción de manera objetiva y subjetiva, el reproductor se implementó y probó en el teléfono inteligente Huawei P40 Pro.
La Figura 6 muestra una imagen del reproductor durante la reproducción de flujo de bits de Kimono en el dispositivo.
Figura 6. Imagen del reproductor funcionando en Huawei P40 Pro
4. Perfilado del decodificador optimizado
Figura 7. Perfil de decodificador optimizado para el flujo de bits de ParkScene codificado con el conjunto de herramientas de la Etapa 2 (QP=27)
Figura 8. Perfil de decodificador optimizado para el flujo de bits Kimono1 codificado con el conjunto de herramientas de la Etapa 2 (QP=27)
5. Utilización de la CPU
El decodificador está optimizado para el teléfono móvil Huawei P40 Pro en términos de uso de núcleos de CPU; más específicamente, el software funciona solo con los 4 núcleos de CPU Kirin 990 más potentes (gama alta y media). La Figura 9 y la Figura 10 muestran el porcentaje de utilización de la CPU para cada uno de los 4 potentes núcleos durante el proceso de decodificación.
(a)
(b)
Figura 9. Utilización de núcleos de CPU de gama alta y media. Reproducción de kimono, (a) Etapa 1, (b) Etapa 2
(a)
(b)
Figura 10. Utilización de núcleos de CPU de gama alta y media. Reproducción de ParkScene, (a) Etapa 1, (b) Etapa 2
Las Figuras 9 y 10 muestran que el decodificador optimizado de la Etapa 2 utiliza de manera más efectiva los núcleos de gama alta y media.
6. Consumo de energía
Para estimar el consumo de energía, se lanzó un bucle de reproducción infinito de flujos de bits de prueba en el reproductor con el dispositivo móvil de prueba cargado al 100% y el proceso estuvo funcionando hasta que el dispositivo se apagó debido a una insuficiencia de energía. Como resultado, el reproductor estuvo trabajando durante 4h 25m con el archivo Kimono1 y 4h 07m con el archivo ParkScene a una velocidad de 24 fps. Las Figuras 11 y 12 resumen los resultados obtenidos.
(a)
(b)
Figura 11. Consumo de energía y velocidad de reproducción durante la reproducción infinita de Kimono, (a) Etapa 1, (b) Etapa 2
(a)
(b)
Figura 12. Consumo de energía y velocidad de reproducción durante la reproducción infinita de ParkScene, (a) Etapa 1, (b) Etapa 2
Las figuras 11-12 muestran que el consumo de batería en Etapa 2 ha aumentado ligeramente en comparación con Etapa 1.
7. Conclusión
Solveig Multimedia continuó realizando optimizaciones relacionadas con el algoritmo WPP introducido en la Etapa 1 así como las optimizaciones SIMD de las funciones.
Como resultado de las optimizaciones, el decodificador muestra entre un 53 y un 54 % de ganancia de rendimiento en la aplicación del reproductor EVC, diseñada para el teléfono inteligente Huawei P40 Pro.
El decodificador optimizado muestra 33-35 FPS para el conjunto de herramientas propuesto, donde se incluye adicionalmente la herramienta BTT para que se cumplan en exceso todos los objetivos de la Etapa 2. Y significa que el valor QP también se puede reducir a 23. Para QP=23, el decodificador muestra 31,52 FPS para el Kimono1 y 28,37 FPS para los archivos Parkscene, lo que es suficiente para proporcionar una reproducción en tiempo real de 24 FPS para ambos archivos.
- https://www.solveigmm.com/en/howto/implementación-temprana-de-mobile-real-time-evc-player-mpeg-submission-october-2020/
Olga Krovyakova is the Technical Support Manager in Solveig Multimedia since 2010.
She is the author of many text and video guidelines of company's products: Video Splitter, HyperCam, WMP Trimmer Plugin, AVI Trimmer+ and TriMP4.
She works with programs every day and therefore knows very well how they work. Сontact Olga via support@solveigmm.com if you have any questions. She will gladly assist you!