O que é codificação por software?
A codificação por software comprime mídia com instruções executadas em processadores de uso geral, em vez de usar principalmente um codificador dedicado em hardware. Seu comportamento em relação ao codec e à qualidade depende da implementação e das configurações selecionadas.
Como funciona a codificação por software
Um codificador por software executa algoritmos de codec como instruções de CPU e disponibiliza controles específicos da implementação para predição, controle de taxa, quantização e uso de threads. As predefinições geralmente trocam maior esforço computacional por maior eficiência de compressão, de modo que duas codificações com a mesma taxa de bits nominal podem diferir em qualidade e tempo de execução. Sua portabilidade e capacidade de configuração o tornam útil em conjuntos de máquinas de transcodificação offline, ambientes de desenvolvimento e fluxos de trabalho que precisam de recursos de codec pouco comuns. A capacidade de processamento ainda deve ser dimensionada de acordo com a resolução, a taxa de quadros, a predefinição e os núcleos disponíveis.
Informações essenciais
- Implementações por software podem disponibilizar perfis mais recentes ou ferramentas experimentais de codec antes que dispositivos de função fixa os suportem, mas o fluxo de bits resultante ainda deve corresponder ao perfil e ao nível do decodificador.
- Uma saída determinística não é garantida entre versões ou compilações do codificador: atualizações de bibliotecas, opções de compilação e otimizações específicas de CPU podem alterar a alocação de bits ou até os bytes codificados.
- O processamento paralelo melhora a capacidade de processamento, mas algumas etapas de predição e codificação de entropia têm dependências que limitam o ganho de escala; adicionar núcleos de CPU não reduz necessariamente o tempo de codificação de forma proporcional.
Quando a codificação por software é importante
Escolha a codificação por software quando a flexibilidade de codecs ou o controle preciso de qualidade forem mais importantes do que a velocidade ou o consumo de energia. Predefinições de alta qualidade podem consumir um tempo considerável de CPU e não cumprir prazos de tempo real em hardware limitado.