@unpublished{upm63411, year = {2019}, author = {Rafael Medina Morillas}, title = {Integration of new parallelization techniques with OpenMP over a Versatile Video Coding and OpenHEVC last-generation video decoder}, month = {July}, address = {Madrid}, url = {https://oa.upm.es/63411/}, abstract = {El auge del v{\'i}deo bajo demanda y el constante crecimiento de las resoluciones de v{\'i}deo m{\'a}s?all{\'a} de HD (2K, 4K, 8K...) han originado la necesidad de algoritmos de compresi{\'o}n m{\'a}s eficientes que el implementado en el {\'u}ltimo est{\'a}ndar de v{\'i}deo High Versatile Video Coding (HEVC). De esta manera, en 2018 comenz{\'o} la elaboraci{\'o}n de la nueva propuesta de est{\'a}ndar Versatile Video Coding (VVC). Esta tecnolog{\'i}a mejorar{\'a} varios aspectos del proceso de descodificaci{\'o}n HEVC a cambio de un aumento en el coste de computaci{\'o}n. Este proyecto ha consistido en el desarrollo de un descodificador VVC software que implementase m{\'e}todos de paralelizaci{\'o}n de alto nivel, compatible con varios tipos de arquitecturas de procesador y plataformas. El descodificador se ha elaborado a partir del software de c{\'o}digo abierto OpenHEVC, un descodificador HEVC desarrollado principalmente por el grupo IETR de INSA-Rennes, y solo se ha integrado la funcionalidad Adaptive Multiple Transform (AMT) de VVC. Las t{\'e}cnicas de paralelizaci{\'o}n se han implementado mediante la API OpenMP, la cual permite una gesti{\'o}n de hilos de alto nivel y es compatible con un gran n{\'u}mero de plataformas. El desarrollo del proyecto se ha dividido en tres partes. En primer lugar, se han sustituido las instrucciones POSIX presentes en OpenHEVC por las propias de OpenMP. Despu{\'e}s, se ha implementado la gesti{\'o}n de las distintas estrategias de paralelizaci{\'o}n (frame, slice y una combinaci{\'o}n de ambas) mediante las directivas apropiadas de OpenMP. Finalmente se han eliminado las optimizaciones con AVX2 (compatibles solo con procesadores x86), empleadas en la versi{\'o}n elegida de OpenHEVC, para que el descodificador fuera compatible con arquitecturas ARM. Tras lograr el correcto funcionamiento del descodificador, se ha realizado una serie de pruebas para caracterizar el producto desarrollado y el uso de las AMTs. De esta forma, se ha medido la velocidad de descodificaci{\'o}n y la aceleraci{\'o}n conseguida al paralelizar distintas versiones de OpenHEVC. Tambi{\'e}n se ha medido el coste de computaci{\'o}n y el n{\'u}mero de llamadas de cada transformada en el proceso de descodificaci{\'o}n. Gracias a los resultados obtenidos se ha comprobado que las versiones que utilizan paralelizaci{\'o}n con OpenMP generalmente alcanzan velocidades similares o superiores a las que usan instrucciones POSIX. Del mismo modo, se ha confirmado que el uso de AMT permite alcanzar una mayor compresi{\'o}n que utilizando las transformadas de HEVC, con la desventaja de un mayor coste de computaci{\'o}n. Respecto al an{\'a}lisis de las AMTs, se ha detallado la distribuci{\'o}n del coste y el n{\'u}mero de llamadas de cada transformada y se ha comparado seg{\'u}n diferentes par{\'a}metros. Finalmente, los resultados obtenidos apoyan la decisi{\'o}n realizada en las {\'u}ltimas versiones de VVC de sustituir las AMTs por el sistema Multiple Transform Selection (MTS). Abstract: The popularization of beyond-HD video resolutions (2K, 4K, 8K...) and the increase of videoon- demand consumption have motivated the pursuit for higher compression rates beyond the one achieved with current coding standard High Efficiency Video Coding (HEVC). Consequently, the elaboration of the new standard proposal Versatile Video Coding (VVC) started in 2018. This technology will improve several aspects of the HEVC decoding process at the expense of increasing the computational cost. This project consisted in the creation of a software VVC decoder implementing high level parallelization techniques and compatible with a number of processor architectures and platforms. The decoder was based on the open-source OpenHEVC software, an HEVC decoder mainly developed by the INSA-Rennes IETR group, and it only included the Adaptive Multiple Transform (AMT) function of VVC. The parallelization techniques were implemented with the API OpenMP, which allowed for a high level thread management and extensive platform compatibility. The development of the project comprised three aspects. First, POSIX instructions in Open-HEVC were substituted by OpenMP ones. Second, management of the different parallelism strategies (frame, slice and both combined) was implemented with the OpenMP parallel directives. Finally, AVX2 optimizations (only compatible with x86 processors), which were employed in the chosen version of OpenHEVC, were removed for allowing compatibility over ARM architectures. After the successful integration of the decoder, a series of tests were performed in order to characterize both the developed solution and the use of AMTs. Consequently, the performance and parallelism acceleration of various OpenHEVC versions were measured, as well as the computing cost and number of calls of each transform in the decoding process. The obtained test results showed that OpenMP parallelization generally achieved similar or better performance than the POSIX approach. Moreover, the use of AMT was confirmed to attain higher compression rates than HEVC transforms at a greater computational cost. Regarding the AMT analysis, the distribution of time consumption and number of calls was detailed and compared in terms of different parameters. Ultimately, the decision of using Multiple Transform Selection (MTS) instead of AMT, made in the latest VVC versions, was supported by the results obtained in this project.}, keywords = {Descodificaci{\'o}n} }