FAQPesquisarRegistrarEntrar
Bem-vindo: Ter Set 07, 2010 6:21 pm

Todos os horários são GMT - 3 horas




 Página 1 de 1 [ 5 mensagens ] 
Autor Mensagem
 Título: Aceleração de vídeos pela GPU
MensagemEnviado: Sáb Fev 28, 2009 1:35 am 
Moderador
Moderador
Avatar do usuário
Offline

Sexo: Masculino
Mensagens: 6196
Localização:
Venâncio Aires - RS
Registrado em:
Qua Ago 29, 2007 2:29 pm
O artigo no qual eu me baseei para escrever este é de autoria do Guru3D e pode ser encontrado aqui. A primeira imagem aqui presente é de autoria do Guru3D.
Você comprou um PC novo lindão e foda com uma puta placa de vídeo - e gastou uma boa grana nela. E não lhe parece muito "justo" usar apenas todo o potencial dela apenas nos jogos, não é? Poisé, para mim também não. Pensamos em algo no qual ela poderia ser utilizada além de renderizar zilhões de polígonos e logo vídeos nos vem à mente.

Também pudera, com todo esse auê de HDTV aqui, Bluray ali, 1080p acolá, é um tanto impossível deixar de pensar neles. MAAAAS, as nossas grandes amigas ATI e nVidia não parecem muito animadas com essa idéia, tanto que nenhuma delas nos disponibilizou algum player para que possamos aproveitar o produto que adquirimos dela. Sacanagem!

Antes, é melhor que falemos sobre duas coisas que serão de suma importância para um compreendimento claro do que se segue: 1080p e x264 - ou a versão "free" deste, o h264 (em suma é a mesma frescura DivX vs XviD).

1080p
    1080p é na verdade uma maneira mais compacta de definir a resolução 1920 x 1080. Vendo um número desses não tem como não dizer "que puta resolução!" e é visível que é MUITA coisa para renderizar, ainda mais inúmeras vezes por segundo. Comparem na imagem abaixo:

    Imagem


    Como podem ver, é um trabalho bastante grande para a CPU realizar, afinal são 2.073.600 pixels para serem renderizados a cada frame, e como num sistema multitarefa ela deve necessariamente realizar outras coisas, isso torna essa tarefa ainda mais pesada. E enquanto isso a GPU tá lá parada, assoviando e chupando e cana... injusto no mínimo...

    Para que haja uma comparação, seguem abaixo, imagens do seriado Legend of the Seeker (Kahlan <3). A primeira na resolução padrão e a segunda em 720p. A diferença na qualidade é absurda no mínimo. As telas estão em 1680 x 1050:

    Imagem
    Baixa resolução: 624 x 352

    Imagem
    720p: 1280 x 720

x264 e h264
    99% dos arquivos de mídia que temos em nosso computador tem alguma forma de compressão, sejam as imagens (.jpg, .png, .gif), músicas (.mp3, .wma, .ogg) e, os astros desse mini-artigo, os filmes (.mpg, .mp4, .mkv). Todos esses algoritmos de compactação tem uma idéia bastante bacana por detrás deles (não é simplesmente um arquivo zipado).

    Vejam por exemplo o tão famoso .mp3: Nossa (dos humanos) audição é horrível, uma das piores entre todos os seres vivos capaz dela. A frequência do som que nos é audível varia dos 20Hz até os 20Khz, fora dessa faixa nosso ouvido não consegue captar. Mas isso não quer dizer que o som não existe, ele está ali. Mas se não o ouvimos, por que precisamos dele? Aí que está, não precisamos.

    O algoritmo do mp3 corta essas faixas. Além disso, ele corta também sons mascarados que nosso ouvido não consegue captar na presença de outro som. E, sobre esse resultado ainda aplica um algoritmo de compactação, deixando o arquivo o menor possível.

    Expliquei isso para que entendam a necessidade de usarmos codecs (que são esses formatos). Ninguém iria ter suas músicas em .wav ou suas imagens em .bmp, não é mesmo?

    Pois bem, o x264/h264 é o codec de vídeo mais refinado no momento. As extensões de arquivo geralmente são .mkv, também chamados de Matroska. Ele usa inúmeras técnicas de compressão e diversos outros algoritmos para manter o tamanho do arquivo baixo e ao mesmo tempo a qualidade alta. Entre esses algoritmos (comum a outros codecs), pode-se citar um que divide o vídeo em blocos, e compara a cada intervalo de frames se houve uma mudança significativa nesse bloco, caso houve, ele grava a nova informação e se não, só grava que houve uma repetição, logo poupando espaço no arquivo.

    Visivelmente, essa é uma tarefa árdua para o processador, tanto na hora de encodar, quanto na hora de executar o arquivo. Some isso a imensa resolução do vídeo e você descobrirá porque os PCs da Xuxa e do Milhão não rodam conteúdo de alta definição.

    Certamente um encoder profissional poderia dar uma explicação melhor, mas acho que foi o suficiente para que consigam entender a árdua tarefa que é para a CPU renderizar um arquivo desses.

Bom, agora você sabe o que é 1080p e o que é x264/h264 e sabe que terá qualidade com eles. Mas, como todo bom nerd, nunca está satisfeito com apenas isso, quer sempre algo mais. Filtros e mais filtros! Performance! Aumento na qualidade! Mas tudo isso se torna ainda mais pesado para a CPU.

E a GPU está lá, parada, vários graus Celsius abaixo do processador, tirando uma soneca. E convenhamos, ela é muito melhor para isso do que a CPU. Vamos pegar a série 4800 da ATI ,por exemplo (meh, se todo mundo paga pau para a nVidia, eu posso pagar para a ATI também!), com sua quantidade absurda de steam e shader processors. Certamente teríamos um trabalho mais rápido e melhor caso fosse realizado com ela.

Acho que chega de papo-furado, apresento a vocês a solução gratuita para seus problemas, o Media Player Classic Homecinema! Podem clicar ali e baixar ele logo mesmo!

Imagem


A interface dele é simples e bastante espartana. Muitos já devem conhecer o Media Player Classic do pacote de codecs Klite (excelente pacote BTW) e esse aqui mantém a mesma idéia por detrás do projeto. Ele habilita DXVA – DirectX Video Aceleration – quando possível, fazendo com que o trabalho de executar passe para a GPU e não para a CPU. Além de permitir aplicar efeitos de pós-processamento feitos pelos shader processors de sua GPU!

A versão x64 (aye, versão 64-bits! \o/) tem algumas limitações, que podem ser melhor lidas no site oficial. Bom, depois de instalado, abra as opções dele (View > Options) e configure essas duas telas da seguinte maneira:

Imagem

Imagem


IMPORTANTE: Em “DirectShow Video”, caso esteja usando o Windows XP selecione VMR9 renderless e caso esteja usando o Vista, selecione EVR Custom Preset. Caso marque a opção “Direct3D Fullscreen (remove tearing)” o Player só executará em tela cheia e para sair do vídeo, deve-se pressionar CONTROL + C. Pelo que eu entendi, isso aplica Antialising no vídeo! Sinta-se livre para alterar qualquer outra configuração.

Após isso, saia do aplicativo e entre de novo para ter certeza de que as novas configurações foram aplicadas.

Após entrar novamente, você está pronto para executar arquivos de vídeo com aceleração por sua GPU! Mas como todo bom nerd, você precisa dos filtros, pois bem, faça o seguinte:
  1. Desmarque a opção “Direct3D Fullscreen (remove tearing)” caso a tinha marcado
  2. Abra um arquivo de vídeo qualquer
  3. Clique com o direito em qualquer parte do vídeo e vá em Shaders > Combine
  4. Configure assim:
    Imagem
  5. Caso deseje, pode marcar novamente a opção “Direct3D Fullscreen (remove tearing)”
Pronto, já deve ter notado a diferença na qualidade! Para ver a diferença com mais clareza, use CONTROL+P para ativar ou desativar os filtros. Compare e comprove! Eu achei a diferença na qualidade gritante!

Abaixo umas telas para comparações (vejam elas em tela cheia, fica mais clara a diferença):

The Legend of the Seeker 01.12 - Home:

Imagem
Padrão

Imagem
Homecinema

Imagem
Homecinema com shader


Já disse que a Kahlan é linda? <3

Diablo III - Trailer de Gameplay:

Imagem
Padrão

Imagem
Homecinema

Imagem
Homecinema com shader


Quero ver se providencio um arquivo em 1080p para testar, só tinha em 720p. Atualizarei assim que conseguir um.

Atualização 08/03/2010!

Como o Biel havia solicitado eu trago uma pequena atualização devido à nova versão do MPC - HC. A parte das configurações para o DXVA não mudaram muito, há apenas umas opções a menos na tela de configuração de filtros internos, o que não é relevante. Porém, vou passar uma atualização nos shaders.

Estou usando atualmente o seguinte:

Imagem
Configuração atual


Explico agora o porquê das diferenças.
  • 15-235 -> 0-255 foi substituído pela versão 15-235 -> 0-255 [SD][HD], que suporta ambos vídeos em baixa qualidade (SD) como em alta (HD).
  • Deinterlace caiu fora porque segundo o que li, é inútil; o que a GPU faz é melhor. Porém não sei informar como fica para aqueles que não tem GPU.
  • BT.601 -> BT.709 entrou pois ele faz um upgrade na qualidade do contraste das cores, em especial o fundo das imagens, o que sempre é bem-vindo.
  • YV12 Chroma Upsampling entrou porque alguns vídeos possuem problemas com os vermelhos e esse shader corrige isso.
  • Sharpen complex foi substituído pelo Sharpen. Aqui é mais complicado, é uma questão de gosto pessoal escolher entre todos os sharpens disponíveis (Sharpen, Edge Sharpen, Sharpen Complex e Sharpen Complex 2). Recomendo olhar as imagens abaixo de Coração Valente em 720p (filme foda bagarai BTW) e fazer a sua escolha. O recomendável é baixar as imagens e vê-las em tela cheia para melhor ver as diferenças. Caso preferir, pode ver numa apresentação de slides clicando aqui.

    Imagem
    Sem sharpen
    Imagem
    Sharpen

    Imagem
    Edge Sharpen

    Imagem
    Sharpen complex

    Imagem
    Sharpen complex 2

----------------
Now playing: Stormwarrior [Stormwarrior] - Thunderer



_________________
We are heading northe... heading home!
Valhalla - Deliverance! Why've you ever forgotten me?
Holmgard and Beyond! That's where the winds will us guide!
The Hammer's our guide, we'll never kneel down to the cross!

Ac her forþ berað; fugelas singað, gylleð græghama

Auroras do Passado: Beowulf Drakengard, Guerreiro do Dragão 14
Imagem
Imagem

Last.fm | Twitter
 Perfil  
 
 Título: Re: Aceleração de vídeos pela GPU
MensagemEnviado: Seg Mar 08, 2010 12:29 am 
Usuário Mestre
Usuário Mestre
Avatar do usuário
Offline

Sexo: Masculino
Mensagens: 5129
Localização:
Canoas - RS
Registrado em:
Seg Jul 30, 2007 6:00 pm
Cru, esse tuto é muito bom *0*. Sigo ele sempre que formato o PC, porém agora deu uma mudada no HC. Agora tem as opções "16-235 -> 0-255 [SD][HD]" e "16-235 -> 0-255 [SD]". comofas/



_________________
Imagem
Meu amigo é meu mestre, meu discípulo e meu companheiro
Enrique Ernesto Febbraro
 Perfil  
 
 Título: Re: Aceleração de vídeos pela GPU
MensagemEnviado: Seg Mar 08, 2010 8:07 am 
Moderador
Moderador
Avatar do usuário
Offline

Sexo: Masculino
Mensagens: 6196
Localização:
Venâncio Aires - RS
Registrado em:
Qua Ago 29, 2007 2:29 pm
O [SD] é um shader mais simples (e menos pesado por isso), usado apenas para filmes em baixa definição. Assim quem tem um PC mais simples e prefere (ou só consegue) assistir filmes em baixa definição pode também usar o shader.

O [SD][HD] é indicado para vídeos tanto em baixa como em alta definição, e deve ser selecionado sempre, caso teu PC aguente.

Na verdade, a GPU faz uma diferença enorme na hora de calcular os shaders. Mesmo com um processador legal, sem a GPU o PC vai apanhar bastante para renderizar o vídeo com eles.



_________________
We are heading northe... heading home!
Valhalla - Deliverance! Why've you ever forgotten me?
Holmgard and Beyond! That's where the winds will us guide!
The Hammer's our guide, we'll never kneel down to the cross!

Ac her forþ berað; fugelas singað, gylleð græghama

Auroras do Passado: Beowulf Drakengard, Guerreiro do Dragão 14
Imagem
Imagem

Last.fm | Twitter
 Perfil  
 
 Título: Re: Aceleração de vídeos pela GPU
MensagemEnviado: Seg Mar 08, 2010 1:35 pm 
Administrador
Administrador
Avatar do usuário
Offline

Sexo: Masculino
Mensagens: 1507
Localização:
São Leopoldo - RS
Registrado em:
Dom Jul 22, 2007 5:09 am
Eu ia pedir isso mas no fim esqueci: Cru, pode atualizar as fotos do tutorial com a versão mais recente?

Valeu!



_________________
"I'm no expert, but I can fake one on teh Interwebz"

Imagem
Asus M2N SLI | Athlon 64 X2 6000+ | Seventeam ST-750EAJ | Kingston 4GB DDR2 800 | Samsung Raid 0 2x160GB | Samsung + Seagate 750GB
XFX ATI 4870 512/256 | LG 22" W2252 | Phillips TV 42" Full HD 1080p 3000 Series
Sony PS2 | Sony PSP | Nintendo DS Lite | Nokia XpressMusic 5530
 Perfil  
 
 Título: Re: Aceleração de vídeos pela GPU
MensagemEnviado: Seg Mar 08, 2010 8:05 pm 
Moderador
Moderador
Avatar do usuário
Offline

Sexo: Masculino
Mensagens: 6196
Localização:
Venâncio Aires - RS
Registrado em:
Qua Ago 29, 2007 2:29 pm
Atualizado com mais algumas infos :)



_________________
We are heading northe... heading home!
Valhalla - Deliverance! Why've you ever forgotten me?
Holmgard and Beyond! That's where the winds will us guide!
The Hammer's our guide, we'll never kneel down to the cross!

Ac her forþ berað; fugelas singað, gylleð græghama

Auroras do Passado: Beowulf Drakengard, Guerreiro do Dragão 14
Imagem
Imagem

Last.fm | Twitter
 Perfil  
 
Exibir mensagens anteriores:  Ordenar por  
 Página 1 de 1 [ 5 mensagens ] 

Responder


Todos os horários são GMT - 3 horas


Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante


Enviar Mensagens: Proibido
Responder Mensagens: Proibido
Editar Mensagens: Proibido
Excluir Mensagens: Proibido
Enviar Anexos: Proibido

Procurar por:
Ir para:  

phpBB skin developed by: John Olson
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzido por: Suporte phpBB