FFmpeg consegue multithreading no CLI como sua "refatoração mais complexa" em décadas

A interface de linha de comando do FFmpeg acaba de ganhar suporte de ponta a ponta a multithreading no que contribuidores descrevem como sua refatoração mais complexa em décadas, permitindo que diferentes etapas do pipeline de mídia (I/O, filtros, codificação) rodem em paralelo em vez de quase sempre em sequência. Comentadores exploram onde isso vai ou não importar na prática, contrastando codificação em lote/nuvem em escala com fluxos de trabalho pontuais ou sensíveis à latência, e observando que muitos codecs individuais já eram multithread. A mudança também provoca um debate mais amplo sobre quão difíceis realmente são as refatorações de concorrência, se ferramentas como LLMs poderiam eventualmente automatizar esse trabalho e como o FFmpeg se compara a alternativas como VapourSynth ou stacks personalizados de codificação em larga escala usados pela Netflix e pelo YouTube.

IA, LLMs e Refatoração de Código

  • Uma grande parte da discussão debate se futuros LLMs poderiam realizar refatorações complexas como a nova reformulação multithread do CLI do ffmpeg.
  • Os defensores dizem:
    • O GPT-4 atual já é útil para refatorações menores (por exemplo, deduplicar componentes React, converter scripts seriais em formas paralelas).
    • A principal limitação é o tamanho do contexto; com janelas maiores e automação em torno dos testes, os LLMs poderiam lidar com bases de código muito maiores.
    • Refatoração é bem definida (transformações que preservam o comportamento), o que a torna uma boa candidata para ferramentas automatizadas.
  • Os céticos argumentam:
    • LLMs não têm “entendimento” real e têm dificuldade com código não trivial, sob medida ou intensivo em concorrência.
    • Eles frequentemente produzem código plausível, mas incorreto, especialmente fora da distribuição de treinamento.
    • Refatorações complexas de concorrência e trabalho de desempenho exigem raciocínio semântico e matemático mais profundo do que uma limpeza baseada em padrões.
  • Alguns sugerem combinar LLMs com ferramentas existentes (por exemplo, sistemas de patches semânticos) em vez de depender apenas de LLMs.

O Que Essa Mudança de Multithreading Realmente É

  • Muitos codecs (H.264, etc.) já eram multithread; essa refatoração paraleliza o pipeline do ffmpeg em si (leitura, decodificação, filtragem, codificação, escrita), para que as etapas possam rodar em paralelo.
  • Os maiores ganhos esperados: grafos de filtros complexos e configurações com múltiplas saídas, menos em transcodificações simples de entrada única e saída única.
  • Há alguma confusão no thread sobre se isso afeta codecs específicos (por exemplo, MP3/LAME); vários comentários observam que muitos codecs antigos não são adequados para codificação multithread eficiente.

Valor Prático: Nuvem vs Indivíduos

  • Um lado: serviços em grande escala (estilo Netflix/YouTube) já conseguem uso multicore executando muitos processos ffmpeg; multithreading no CLI adiciona complexidade com pouco ganho nesse nível.
  • O outro lado: para usuários individuais ou serviços menores com poucos jobs concorrentes, um processo ffmpeg único mais rápido é muito valioso (por exemplo, codificações pontuais mais rápidas, pipelines de CI, streaming em desktop).

Pipelines Alternativos e Paralelismo Baseado em Chunk

  • Alguns descrevem usar VapourSynth, gstreamer e ferramentas como av1an para obter paralelismo com threading ou por cena/por chunk há anos.
  • A discussão sobre dividir o trabalho por segmentos de keyframes versus threading intra-frame:
    • O paralelismo baseado em chunk pode melhorar a codificação offline e é usado em alguns pipelines, mas adiciona latência e complexidade para streaming ao vivo/baixa latência.
    • São destacadas as trocas entre qualidade, latência e utilização de CPU; não há consenso claro sobre a abordagem “melhor”.

Notas de Processo do Projeto e do Ecossistema

  • A refatoração foi grande (centenas de commits) e mantida via patches no estilo de lista de emails, em vez de fluxos modernos de PR.
  • Alguns veem isso como “old school”, mas aceitam como parte de projetos de longa duração como o ffmpeg.