Por que os vídeos são renderizados pelo cpu em vez do gpu?

8

Bem, eu sei que isso pode parecer uma pergunta muito estúpida, mas eu não consegui encontrar uma resposta usando o google, então sim ...
Então, eu sei que existem técnicas como OpenCL e CUDA, mas por que, por padrão, o processador usado para renderizar, e. um arquivo de vídeo de um software de edição de vídeo? Parece-me contra-intuitivo que a unidade de processamento Gráficos não seja usada para processar gráficos. Ao jogar um videogame, a GPU está encarregada de produzir a imagem na minha tela, não é?

Novamente, sei que isso pode parecer estúpido para você. Por favor seja gentil ° A °

Edit: Eu estava falando especificamente sobre a saída de vídeo de um software NLE como o Premiere Pro

    
por MoritzLost 30.07.2014 / 23:34

1 resposta

13

Antes que o HD fosse uma coisa, os processadores podiam lidar facilmente com a decodificação de vídeo. Quando o HD se tornou popular há cerca de 8 anos, os fabricantes de GPUs começaram a implementar a decodificação de vídeo acelerada em seus chips. Você poderia facilmente encontrar placas gráficas comercializadas como suporte a vídeos HD e alguns outros slogans. Hoje, qualquer GPU suporta vídeo acelerado, até mesmo GPUs integradas, como Intel HD Graphics ou seus antecessores, Intel GMA. Sem essa adição, seu processador teria dificuldade em digerir o vídeo 1080p com framerate aceitável, sem mencionar o aumento do consumo de energia. Então você já está usando vídeo acelerado todos os dias.

Agora, quando as GPUs têm um poder computacional cada vez mais geral, elas são amplamente usadas para acelerar o processamento de vídeo também. Essa tendência começou na mesma época em que a decodificação acelerada foi introduzida. Programas como o Badaboom começaram a ganhar popularidade, pois as GPUs são muito melhores na (re) codificação de vídeo do que os processadores. Isso não poderia ser feito antes, porque as GPUs não tinham habilidades computacionais genéricas.

Mas as GPUs já podiam dimensionar, girar e transformar imagens desde a idade média, então por que não pudemos usar esses recursos para processamento de vídeo? Bem, esses recursos nunca foram implementados para serem usados dessa maneira, então eles ficaram abaixo do ideal por várias razões.

Quando você programa um jogo, você primeiro carrega todos os gráficos, efeitos, etc. para a GPU e, em seguida, apenas renderiza polígonos e mapeia os objetos apropriados para eles. Você não precisa enviar texturas toda vez que elas são necessárias, você pode carregá-las e reutilizá-las. Quando se trata de processamento de vídeo, você tem que alimentar constantemente os quadros para a GPU, processá-los e buscá-los de volta para reencocá-los na CPU (lembre-se, estamos falando de tempos pré-computacionais da GPU). Não era assim que as GPUs deveriam funcionar, então o desempenho não era ótimo.

Outra coisa é que as GPUs não são orientadas para a qualidade quando se trata de transformações de imagem. Quando você está jogando um jogo a mais de 40 fps, você não notará pequenas deturpações de pixel. Mesmo que você fizesse, os gráficos do jogo não eram detalhados o suficiente para as pessoas se importarem. Existem vários hacks e truques usados para acelerar a renderização que podem afetar levemente a qualidade. Os vídeos são reproduzidos em taxas de quadros bastante altas, então escalá-los dinamicamente na reprodução é aceitável, mas a reencodificação ou renderização tem que produzir resultados que sejam perfeitos em pixels ou, pelo menos, o mais próximo possível a um custo razoável. Você não pode conseguir isso sem os recursos adequados implementados diretamente na GPU.

Atualmente, o uso de GPUs para processar vídeos é bastante comum, porque exigimos tecnologia no lugar. Por que não é a escolha padrão é mais uma questão para o editor do programa, não para nós - é a escolha deles. Talvez eles acreditem que seus clientes tenham hardware orientado para processar vídeos na CPU, então mudar para a GPU afetará negativamente o desempenho, mas esse é apenas o meu palpite. Outra possibilidade é que eles ainda tratem a renderização da GPU como um recurso experimental que não é estável o suficiente para configurá-lo como um padrão ainda. Você não quer perder horas renderizando seu vídeo apenas para perceber que algo está errado devido ao bug de renderização da GPU. Se você decidir usá-lo mesmo assim, não poderá culpar o editor do software - foi uma decisão sua.

    
por 31.07.2014 / 00:35