Tutorial: Usar DXVA en MPC-HC (decodificación AVC/H264 y VC1 por Hardware)

Desde hace unos cuantos años, cuando nos compramos una gráfica vienen dándonos por el saco hablándonos de las capacidades de reproducción de vídeos por GPU y eso. Y desde hace unos pocos menos, más o menos allá por la salida de los formatos BluRay y HD-DVD, se les llenaba la boca hablando de capacidades de apoyar la decodificación de esos nuevos formatos.

Pues bien, a mí siempre me escamó que no tenía ni pajolera idea de usar el Avivo de mis ATI (antes tenía una x1600XT, y ahora una HD3870). Hace unos días me topé con un hilo para aprovechar la GPU, y vaya, los resultados son más que notables.

Hay que tener en cuenta que de ahora en adelante, cuando me refiera a DXVA, me referiré a la decodificación por hardware de AVC/H264 y VC1 utilizando DXVA.

Antes, si bien podía reproducir vídeos 1080p con fluidez, la carga de mi CPU (Q6600) era más o menos del 50%. No podía jugar a apenas nada, y menos encodear, sin que me racanease el PC a muerte. Pero ahora, utilizando DXVA (DirectX Video Acceleration), con vídeos 1080p no me pasa ni del 10% de uso de CPU. La mejora en el rendimiento es más que notable.

¿Mi tarjeta soporta DXVA para H264 y VC1?

Se supone que las tarjetas superiores a la serie HD 2000 de ATI, y las 8000 de nVidia lo soportan. En el link de la wikipedia anterior, vemos que hay un programita hecho por un japonesito de nick Bluesky23 llamado DXVAChecker que nos dice las capacidades de nuestro hardware en lo referido a DXVA.

Capturas de lo que me sale a mí con una HD3870

dxvachecker_decoder dxvachecker_processor

Si se parece más o menos en la parte de H264, pues podréis xD

Programas a usar

Hay un montón de configuraciones diferentes para poder usarlo. Las más simples serían usar el PowerDVD, usar el KMPlayer, o la que voy a exponer aquí, utilizar los filtros internos de MPC-HomeCinema.

Lo dicho, bastará con bajarnos el MPClassic HomeCinema.

Configuración

Como una imágen vale más que mil palabras, voy a enlazaros lo que tendréis que tocar. Está todo en el menú de Opciones, que sacaremos clickeando con el botón derecho encima de la zona del vídeo.

Internal Filters

dxva_internal_filters

Aunque yo no lo tenga marcado, marcad las dos opciones rodeadas en rojo: H264/AVC (DXVA) y VC1 (DXVA).

Playback > Output (para Windows XP)

Esta zona difiere lo que hay que usar según utilicemos XP o Vista. Aquí van las opciones para Windows XP.

dxva_xp_sets

Playback > Output (para Windows Vista/Windows 7)

Cambiamos el renderer en este caso al EVR Custom.

dxva_vista_sets

Playback

En el caso de que queráis ver subtítulos flotantes y demás, al utilizar los decoders DXVA perderemos toda la configuración que hacía que los pudiésemos ver antes en cualquier cosa que tirase de DirectShow (como fue mi caso), vamos, el DirectVobSub y demás zarandajas.

Y como estoy seguro de que todos aquellos que leáis esta página veréis anime o películas, y la mayoría tendrán algún tipo de subtítulo, pues esto es algo inconcebible.

La solución es bien fácil, marcando el parámetro rodeado de rojo, Auto-load Subtitles, podremos verlos sin ningún problema.

dxva_playback

Y ya está 🙂

Probando si va todo como debería

No todo lo que tengamos de vídeos será compatible con la nueva configuración, pero no hay que preocuparse: aquello con lo que no podamos usar DXVA, tirará de lo que usasemos anteriormente (en mi caso, CoreAVC). Para ver si lo que estamos viendo está siendo tocado por la “magia” del DXVA, basta con fijarse en Filters…

dxva_working

Y ya está. Notaréis, probablemente, como el uso de CPU viendo vídeos de alta resolución, es bastante menor.

[Opcional] Usar Pixel Shaders para algo xD

Si vais sobradetes, pues también podéis usar los Pixel Shaders (2.0) de vuestras tarjetas a placer, con los filtros que os apetezcan.

ps2shaders1

Por ejemplo, esta es mi configuración de shaders. Además, nunca está de más cambiar el resizer para otro tipo de vídeos para utilizar Bicubic. Podéis apreciarlo en las capturas de Playback > Options que hay más arriba.

Y ya está…

Fácil, rápido, y para toda la familia. Ah, y repito, si no pilla DXVA el vídeo que uséis, tirará de la configuración por defecto anterior y tal. El que funcionen los vídeos o no está íntimamente ligado al número de refs y b-frames que uséis y la resolución. Ya sabéis, aquello de “si te pasas te lo pierdes”, pues aquí va que ni pintado xD