Melhorias no decodificador e player EVC móvel em tempo real
By Olga Krovyakova - May, 26 2021
Abstrato
Este artigo descreve as melhorias em relação ao Estágio 1 do projeto Real-time Mobile Video Player de outubro de 2020, que implementou uma versão inicial do player, capaz de reproduzir fluxos de bits EVC em tempo real. O Player é baseado no software de referência ETM versão 6.1 e otimizado para arquitetura ARM. O Player foi desenvolvido e testado no smartphone Huawei P40 Pro e demonstra reprodução em tempo real a 24 FPS em arquivos de teste 1080p com um subconjunto de ferramentas de perfil principal EVC.
1.Resultados
Resumindo foi apresentada a primeira etapa da solução que permite uma reprodução em tempo real das sequências codificadas com as seguintes restrições:
- Valor do parâmetro de quantização: 32;
- Conjunto de ferramentas de codificação: Affine, DMVR, HTDF, ADMVP, ADCC, AMVR, ATS, IQT, CM_INIT, ADDB, DBF, HMVP, MMVD, POCS, RPL (conjunto Stage1).
O EVC Player apresentado demonstra 25,07 FPS para as sequências “ParkScene” e 26,02 FPS para as sequências “Kimono1&rdquo.
Os resultados das otimizações feitas durante a Etapa 2 mostram que a ferramenta BTT pode ser adicionada com segurança ao conjunto de ferramentas e o QP pode ser reduzido para 27 e isso aumentará a qualidade da imagem com as condições:
- Valor do parâmetro de quantização: 27;
- Conjunto de ferramentas de codificação: Affine, DMVR, HTDF, ADMVP, ADCC, AMVR, ATS, IQT, CM_INIT, ADDB, DBF, HMVP, MMVD, POCS, RPL, BTT (mais conhecido como conjunto Stage2).
Tabela 1 - Velocidade média máxima de reprodução alcançada com o conjunto de ferramentas selecionado no dispositivo móvel de teste para QP=27
Sequência de teste |
Velocidade de decodificação do Decodificador de estágio 1 (fps) |
Velocidade de decodificação do Decodificador de estágio 2 (fps) |
Ganho de desempenho ao longo do Decodificador de estágio 1 (%) |
ParkScene |
21h36 |
32,99 |
53,2 |
Quimono1 |
22,85 |
35.02 |
54,4 |
Como resultado das otimizações, o decodificador apresenta 53-54% de ganho de desempenho no aplicativo EVC player, projetado para smartphone Huawei P40 Pro.
Mesa 2. Conjunto de ferramentas selecionado para melhoria do jogador em tempo real
Nome abreviado da ferramenta |
Nome completo da ferramenta |
ETM6.1 CTC RA configuração padrão |
Conjunto de ferramentas selecionado, estágio 1 |
Conjunto de ferramentas selecionado, estágio 2 |
ADMVP |
Previsão avançada de vetores de movimento |
1 |
1 |
1 |
AFINO |
Previsão afim |
1 |
1 |
1 |
HTML |
Filtro de domínio de transformação Hadamard |
1 |
1 |
1 |
DMVR |
Derivação de vetores de movimento do lado do decodificador |
1 |
1 |
1 |
ADCC |
Codificação de Coeficientes Avançados |
1 |
1 |
1 |
ADDB |
Desbloqueio Avançado |
1 |
1 |
1 |
ALF |
Filtro de Loop Adaptativo |
1 |
0 |
0 |
AMVR |
Resolução de vetores de movimento adaptativos |
1 |
1 |
1 |
ATS |
Seleção de transformações adaptativas |
1 |
1 |
1 |
BTT |
Árvores Binárias e Ternárias |
1 |
0 |
1 |
CM_INIT |
Inicialização de modelagem de contexto |
1 |
1 |
1 |
DBF |
Filtro de desbloqueio |
1 |
1 |
1 |
EIPD |
Direções de previsão intra-aprimoradas |
1 |
0 |
0 |
HMVP |
História Vetores de movimento Previsão |
1 |
1 |
1 |
qT |
Quantização e Transformações Avançadas |
1 |
1 |
1 |
DMVM |
Mesclar com diferença de vetores de movimento |
1 |
1 |
1 |
POCS |
Contagem avançada de pedidos de imagens |
1 |
1 |
1 |
RPL |
Lista de imagens de referência |
1 |
1 |
1 |
SUCO |
Ordem de codificação de unidade dividida |
1 |
0 |
0 |
IBC |
Cópia intrabloco |
0 |
0 |
0 |
2. Ferramentas EVC suportadas
A ferramenta BTT é considerada a ferramenta de maior potencial, por isso realizamos testes para a ferramenta BTT adicionalmente habilitada ao conjunto Stage1 (Tabela 2).
As Figuras 1-3 a seguir mostram codificação EVC, desempenho de decodificação e valores PSNR para os arquivos ParkScene e Kimono1 codificados com valores QP 27-32 com e sem ferramenta BTT64. Por conveniência, os números contêm valores combinados medidos para fluxos sem BTT64 e com BTT64 respectivamente.
Figura 1. Desempenho de codificação ETM 6.1 em PC com CPU i7-9700 operado por Windows 10 x64 com e sem ferramenta BTT64 habilitada
Figura 2. Desempenho do decodificador de estágio 1 no HUAWEI P40 Pro operado pela EMUI 10.1 com e sem a ferramenta BTT64 habilitada
Figura 3. Valores PSNR de arquivos codificados pelo codificador ETM 6.1 com e sem ferramenta BTT64 habilitada.
A Figura 3 mostra que habilitar o BTT64 não reduz significativamente o desempenho do decodificador e também melhora a qualidade do arquivo de saída’. Portanto, podemos habilitá-lo com segurança como uma ferramenta EVC extra.
Para manter o conceito de decodificação proposto na Etapa 1, propõe-se habilitar o tamanho 64x64 CU para o BTT (mais referido como BTT64 por conveniência).
Para obter velocidade de reprodução em tempo real no dispositivo de destino, é importante conhecer as ferramentas EVC que traçam o perfil das informações durante a decodificação. Essas informações foram coletadas pelo Android Profiler no teste decodificado com o decodificador Stage 1. A Figura 4 e a Figura 5 demonstram os dados de perfil obtidos no dispositivo de destino para os fluxos de bits ParkScene e Kimono1 codificados com o conjunto de ferramentas do Estágio 2 e o valor QP igual a 27.
Figura 4. Perfil do decodificador para o fluxo de bits ParkScene codificado com o conjunto de ferramentas do Estágio 2 (QP = 27)
Figura 5. Perfil do decodificador para o fluxo de bits Kimono1 codificado com o conjunto de ferramentas do Estágio 2 (QP = 27)
As funções mais demoradas estão relacionadas ao DMVR, Compensação de Movimento (MC), Desbloqueio e Reconstrução. Essas ferramentas consomem cerca de 77% do tempo de decodificação e são as melhores candidatas para otimização do SIMD.
3. Detalhes de implementação e reprodução
Para obter reprodução em tempo real no conjunto de ferramentas selecionado, as seguintes modificações principais foram realizadas no SW de referência ETM 6.1:
- Implementação ARM SIMD das funções mais críticas em peças de Desbloqueio e Reconstrução
- Processamento paralelo semelhante ao Waterfront (WPP) para processos de desbloqueio e decodificação, extração de thread e inicialização baseada em linha
Como preparação para as otimizações da funcionalidade multithread, houve algumas refatorações e otimizações adicionais nas funções relacionadas ao desbloqueio. Após finalizar a implementação multithread, o ganho de FPS do decodificador’em relação ao decodificador do Estágio 1 é de 40% para o Kimono1 e 42% para as sequências ParkScene, e o Player é capaz de demonstrar reprodução de 24 fps no dispositivo.
Para verificar a velocidade de reprodução de forma objetiva e subjetiva o Player foi implantado e testado no smartphone Huawei P40 Pro.
A Figura 6 demonstra uma imagem do Player durante a reprodução de bitstream do Kimono no dispositivo.
Figura 6. Imagem do Player funcionando no Huawei P40 Pro
4. Perfil do decodificador otimizado
Figura 7. Perfil de decodificador otimizado para o fluxo de bits ParkScene codificado com o conjunto de ferramentas do Estágio 2 (QP = 27)
Figura 8. Perfil de decodificador otimizado para o fluxo de bits Kimono1 codificado com o conjunto de ferramentas do Estágio 2 (QP = 27)
5. Utilização da CPU
O decodificador é otimizado para o celular Huawei P40 Pro em termos de uso de núcleos de CPU, mais especificamente o SW funciona apenas com os 4 núcleos de CPU Kirin 990 mais poderosos (hi-end e mid-end). A Figura 9 e a Figura 10 exibem a porcentagem de utilização da CPU para cada um dos 4 núcleos poderosos durante o processo de decodificação.
(a)
(b)
Figura 9. Utilização de núcleos de CPU de ponta e de ponta. Reprodução de quimono, (a) Estágio 1, (b) Estágio 2
(a)
(b)
Figura 10. Utilização de núcleos de CPU de ponta e de ponta. Reprodução ParkScene, (a) Estágio 1, (b) Estágio 2
As Figuras 9 a 10 mostram que os núcleos de alta e média gama são usados de forma mais eficaz pelo decodificador otimizado do Estágio 2.
6. Consumo de energia
Para estimar o consumo de energia, um loop infinito de reprodução de fluxos de bits de teste foi lançado no Player no Dispositivo Móvel de Teste 100% carregado e o processo funcionou até o dispositivo ser desligado por falta de energia. Com isso, o Player funcionou por 4h 25m com o arquivo Kimono1 e 4h 07m com o arquivo ParkScene com velocidade de 24 fps. As Figuras 11 e 12 resumem os resultados obtidos.
(a)
(b)
Figura 11. Consumo de energia e velocidade de reprodução durante a reprodução infinita de Kimono, (a) Estágio 1, (b) Estágio 2
(a)
(b)
Figura 12. Consumo de energia e velocidade de reprodução durante a reprodução infinita de ParkScene, (a) Estágio 1, (b) Estágio 2
As Figuras 11-12 mostram que o consumo da bateria no Estágio 2 aumentou ligeiramente em comparação com o Estágio 1.
7. Conclusão
A Solveig Multimedia continuou a fazer otimizações relacionadas ao algoritmo WPP introduzido na Etapa 1, bem como às otimizações SIMD das funções.
Como resultado das otimizações, o decodificador apresenta 53-54% de ganho de desempenho no aplicativo EVC player, projetado para smartphone Huawei P40 Pro.
O decodificador otimizado mostra 33-35 FPS para o conjunto de ferramentas proposto, onde a ferramenta BTT é incluída adicionalmente para que todos os objetivos do Estágio 2 sejam superados. E isso significa que o valor QP também pode ser reduzido para 23. Para QP=23 o decodificador mostra 31,52 FPS para o Kimono1 e 28,37 FPS para os arquivos Parkscene, o que é suficiente para fornecer uma reprodução em tempo real de 24 FPS para ambos os arquivos.
- https://www.solveigmm.com/en/howto/early-implementation-of-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!