Avançar para o conteúdo

Transcodificação de vídeo examinada: AMD, Intel e Nvidia em profundidade

    1651450023

    Qualidade de imagem: examinada

    Recentemente, abordamos a qualidade de imagem em nossa análise da primeira placa mini-ITX Brazos para desktop. Se você já leu, sabe que houve alguns resultados surpreendentes quando investigamos os recursos de decodificação/codificação de imagens da plataforma. Tudo o mais sendo igual, a qualidade de saída do vídeo codificado foi bastante semelhante na comparação da Intel e da AMD. A produção acelerada por CUDA da Nvidia foi outra história, no entanto. Qualquer vídeo que passamos por ele tinha bloqueio discernível em cenas de alto movimento. Nós tínhamos sido avisados ​​sobre isso anteriormente, mas foi preciso muita comparação AB para perceber o quão ruim a situação realmente era.

    Isso nos leva aos testes de qualidade de imagem de hoje. Há muitas questões remanescentes da nossa cobertura do Brazos, que não foram realmente relevantes lá, mas mereciam sua própria exploração em profundidade.

    O básico: codecs e decodificadores

    Precisamos cobrir alguns pontos básicos antes de mergulharmos no âmago da questão. É importante fazer a distinção entre um codec e um contêiner de arquivo. Por exemplo, o conteúdo Blu-ray é frequentemente visto com uma extensão de arquivo .m2ts. No entanto, o formato de contêiner BDAV (Blu-ray Disc Audio/Video) é basicamente um invólucro de armazenamento. Três codecs possíveis podem ser usados: MPEG-2, H.264 e VC-1.

    Então, qual é a diferença exata entre um codec e um contêiner? Pense nas suas férias mais recentes. Sua bagagem é o recipiente de arquivo, e o tipo de bagagem que você escolhe dita onde você coloca suas roupas, produtos de banho, computador e assim por diante. O codec (descompressão de compressão) é a maneira pela qual você esmaga tudo (os dados) para caber na sua bagagem. Isso basicamente se aplica a qualquer conteúdo multimídia. Por exemplo, o formato AVI (Audio Video Interleave) da Microsoft é um contêiner de arquivo, mas pode ter vídeo codificado com uma variedade de codecs, de DivX a MPEG-2.

    Quando você reproduz algo em um player de vídeo, geralmente, os dados de vídeo codificados passam pelo decodificador e são cuspidos como dados YUV (espaço de cores) e colocados na tela. O decodificador reconhece o formato e descompacta os dados em informações úteis que podem ser processadas e visualizadas.

    Agora, existem dois tipos de decodificadores: software e hardware. Antes do UVD, PureVideo e GMA 4500MHD da Intel, o vídeo era decodificado usando decodificadores baseados em software que dependiam do poder de processamento do host. É por isso que todos costumavam fazer um grande negócio sobre o software de reprodução. CyberLink e InterVideo (agora Corel) eram realmente os únicos grandes nomes da cidade, o que explica por que a ATI licenciou o decodificador PowerDVD para seu decodificador de DVD ATI naquela época. É claro que os decodificadores de software consomem ciclos de processador, o que não prejudica o desempenho em uma CPU moderna, mas prejudica a vida útil da bateria em um ambiente móvel.

    Gradualmente, as empresas de placas gráficas perceberam isso e desenvolveram decodificadores de função fixa, que eram simplesmente circuitos lógicos na GPU dedicados ao processamento de vídeo. Nós nos referimos a isso como aceleração de hardware hoje. O benefício foi que a utilização da CPU do host caiu (aproximando-se de 0%) à medida que a carga de trabalho foi descarregada no processador gráfico.

    Isso tem algumas implicações. Como um decodificador processa vídeo, é mais difícil definir claramente uma linha de base para qualidade ou eficiência. Quer o vídeo passe por um pipeline baseado em hardware ou software, algo está recebendo suas luvas sujas nesses dados de vídeo antes que eles apareçam em seu monitor. Usando o software, você realmente não precisa fazer uma comparação entre os sistemas se usar o decodificador. No entanto, usando o mesmo sistema, decodificadores diferentes podem produzir uma imagem diferente ou alterar a percepção da qualidade da imagem. Na maioria das vezes, um disco Blu-ray reproduzido em hardware gráfico Nvidia ou AMD terá a mesma aparência se você desativar a aceleração no PowerDVD. Em ambos os sistemas, o vídeo está sendo processado em software na CPU, produzindo a mesma saída.

    Quando você adiciona decodificação de hardware à mistura, tudo pode parecer diferente. Por quê? As GPUs modernas já possuem uma parte de seu design especificamente dedicada à decodificação e processamento de dados de vídeo. Esta é a lógica de função fixa acima mencionada. A aceleração de decodificação baseada em hardware em um processador baseado em Sandy Bridge será projetada e programada de forma diferente de uma placa gráfica AMD ou Nvidia.

    Devemos deixar isso bem claro: não existem decodificadores de GPU de uso geral. Não há decodificador que seja executado completamente em DirectCompute, APP ou CUDA. E quaisquer pedidos para adicionar esse suporte são malucos, porque seria um recurso autodestrutivo. Conforme explicamos em nosso artigo sobre Flash, o GPGPU é para processar dados brutos de maneira altamente paralelizada. Mas há mais no vídeo do que apenas dados brutos. Há muito processamento de imagem que ocorre, e muito disso precisa ser feito de maneira serial. Os decodificadores de função fixa vivem para decodificar e processar vídeo; eles não servem a nenhum outro propósito. Transferir esse fardo para recursos de computação de uso geral estaria a um passo de movê-lo de volta para a própria CPU, já que em ambos os casos você estaria trabalhando com um decodificador baseado em software.

    Com isso dito, a Elemental Technologies (a empresa que você provavelmente conhece como tendo desenvolvido o Badaboom) é a única que projetou um decodificador baseado em MPEG-2 CUDA. Mas não é um decodificador GPGPU puro. Partes do pipeline, como codificação de entropia, codificação de sintaxe, decodificação de sintaxe e decodificação de entropia, precisam ser processadas de maneira serial. Existem outras partes do processo que podem ser projetadas para serem executadas em paralelo, como estimativa de movimento, compensação de movimento, quantização, transformada discreta de cosseno, filtragem de desbloqueio, desbloqueio de loop final. É por isso que o decodificador MPEG-2 da Elemental é realmente uma solução meio a meio. Algumas coisas rodam na CPU; alguns são executados nos núcleos CUDA.

    0 0 votes
    Rating post
    Subscribe
    Notify of
    guest
    0 comments
    Inline Feedbacks
    View all comments
    0
    Would love your thoughts, please comment.x