Bbabo NET

Ciência e Tecnologia Notícias

FFmpeg acelera a decodificação HEVC no Apple M1 em 60%

Os representantes do FFmpeg relataram que, como resultado da ativação dos recursos AArch64 NEON, a velocidade de decodificação HEVC no Apple M1 aumentou de 402 para 649 quadros por segundo com resolução de 1080p. Essa melhoria é outra otimização pequena e incremental em escala de projeto.

FFmpeg é um projeto de software aberto que inclui um conjunto de diversas bibliotecas e programas para trabalhar com arquivos multimídia. Simplificando, o FFmpeg é usado em todo o planeta sempre que você precisar transcodificar formatos, dimensionar um vídeo ou adicionar efeitos de vídeo simples.

No entanto, o assunto não se limita à Terra. FFmpeg também é uma escolha popular para Marte. Além de um rico arsenal de equipamentos científicos, o rover Perseverance, lançado em 2020, carrega 19 câmeras e 2 microfones para diversos fins. Os dados desses sensores são transmitidos para a Terra através da Deep Space Network a uma velocidade relativamente baixa de até 2 megabits por segundo. É aconselhável não obstruir o estreito canal interplanetário com arquivos “brutos”.

O processamento de dados em Marte é realizado por dispositivos Unidade de Armazenamento de Dados. Há um DSU no rover, outro serviu ao seu propósito no módulo de pouso suave. A DSU não é uma placa personalizada, mas um computador disponível comercialmente fabricado pela CompuLab Ltd. No seu “coração” instalaram um Intel Atom E3845 (Bay Trail), um processador quad-core com frequência de 1,91 GHz, e equiparam-no com 8 GiB de RAM, 8 GB de memória flash industrial PSS4A111-8G e uma memória flash industrial de 480 GB. Disco de Estado Sólido. Toda essa riqueza cósmica está conectada à placa-mãe Compulab COMEX-IE38.

Módulo COMEX-IE38. Compulab

As DSUs executam Linux com os drivers necessários para se comunicar com os dispositivos, e o processamento real dos dados é feito pelo FFmpeg e outros pacotes de software de código aberto. Os nasovitas adicionaram apenas cerca de 20 mil linhas de código para controlar este software.

NASA fala sobre o voo do FFmpeg para Marte em relatórios científicos. Outros às vezes ignoram o fato de usar este pacote de software. Segundo representantes da FFmpeg, existem milhares de casos em que um aplicativo ou uma startup inteira é construída com base em um projeto sem especificar a tecnologia “nos bastidores” e com diversos graus de violação dos termos de licenciamento.

hieudinh_

Por exemplo, no início de março, Hieu Dinh mostrou seu aplicativo CompressX. A julgar pelo site do aplicativo, ele foi projetado para compactação offline de vídeos e fotos. Em um tweet, Dinh introduziu a transcodificação com perdas como compactação, o que fez outros microbloggers rirem (1, 2, 3). Hieu admitiu mais tarde que este era apenas mais um programa wrapper em torno do FFmpeg e adicionou (não na versão anterior) uma menção ao pacote no site.

O FFmpeg continua a ser desenvolvido ativamente. As aplicações do projeto são escritas em C e linguagem assembly. Claro, não se fala em reescrevê-lo em C++ ou Rust, mas os padrões da linguagem estão sendo atualizados. Em fevereiro deste ano, a mailing list informou que o projeto estava migrando para C11 com perspectiva de migrar para C17 em um futuro próximo. No entanto, os cabeçalhos públicos permanecerão compatíveis com C99.

O progresso das otimizações para diversas arquiteturas também não para. Às vezes, a eficácia das otimizações é especialmente grande. Por exemplo, em 26 de março, o projeto relatou um aumento significativo na eficiência de decodificação HEVC no Apple M1.

Conforme declarado em uma postagem na lista de discussão, instruções AArch64 NEON ausentes foram adicionadas ao decodificador de formato de vídeo HEVC (também conhecido como H.265).

Algumas dessas funções anteriormente exigiam instruções do I8MM. A extensão I8MM é uma parte obrigatória da microarquitetura Armv8.6-A, que alimenta dispositivos como Apple M2 e AWS Graviton3. Não há suporte para I8MM, por exemplo, Apple M1 e Ampere Altra. Parte da funcionalidade do decodificador exigia I8MM, e o patch adicionou o uso de um substituto adequado da extensão NEON simples.

O resultado é um aumento na velocidade de decodificação de um clipe HEVC 1080p de 402 para 649 quadros por segundo no Apple M1. O dispositivo específico no qual este aumento foi medido não foi nomeado. Também não se sabe quando este patch será incluído na nova versão do FFmpeg.

A Apple não vende mais dispositivos com M1; apenas redes de varejo podem ter sobras de estoque antigo. Esta não é a arquitetura mais antiga suportada pelo FFmpeg. Entre outros, ainda é suportado SuperH, a arquitetura RISC do início dos anos noventa na qual foi construído o processador do console de jogos Sega Dreamcast.

FFmpeg acelera a decodificação HEVC no Apple M1 em 60%