Ruta: inicio . Artículos y Reviews . TUTORIALES . HomeCinema en Windows XP

HomeCinema en Windows XP

Autor:
Eagle
Fecha:
28-09-2007

Video Decoder vs DirectShow Filters

Mucho se mostró de como configuar, pero a estas alturas debe haber muchas personas que se pregunten, que diferencia hay entre VMR7 o 9, o mejor aún, que diablos es VMR para empezar y porque no usar Video Overlay, la explicación a esto no es tan sencilla, pero vamos a intentar resumirla para que se entienda.

En las primeras placas de Video, se incorporaba una función de "Video Overlay" que permitía al usuario poder reproducir un Video mientras que a la vez se utilizaba el Windows para otra cosa, sin retrasar al resto de las ventanas, este tipo de ventana "overlay" tenía una condición, nada podía escribirse dentro de ella y debía de anteponerse a una ventana vacía. Los limites del Overlay son mayores aún, debido a que toda la información pasa por el Driver de Video y Windows, el Video Overlay es terriblemente limitado y no permite ningun tipo de corrección en su imagen, por lo tanto, si vemos un video en formato 1280x720 en nuestro hermoso y nuevo monitor de 22 pulgadas de 1680x1050, veremos como las sierras en las diagonales y los bordes muestran una imagen que parece mas bien un video de mala calidad, esto ocurre porque el Video Overlay no tiene ningún tipo de control sobre como se maneja el "Scaling", por lo tanto, al no coincidir la resolución nativa con la resolución de pantalla, el re-scaling simplemente se hace sin ningún tipo de filtro intermedio, el resultado, Video Overlay no sirve absolutamente para nada en nuestro mundo actual donde casi todos los videos que usamos tienen resoluciones distintas.

Para esto, en DirectX se ha creado un API llamado "DirectShow". Lo que hace el DirectShow es "permitir" que parte del Hardware de Audio y Video pueda entrar en interacción con una interface que será la encargada de gestionar lo que se hace a la imagen (o sonido). Debido a que el DirectShow es una interface "programable", se pueden adicionar "plugins o Filtros" (tanto de Audio como Video) para mejorar la reproducción, simplemente, porque una vez abierto un video mediante DirectShow, el mismo acepta la inclusión de "filtros o Plugins" adicionales de Post Procesamiento. El DirectShow por consiguiente es una interface mucho mas avanzada que permite (entre otras cosas) un Scaler nativo, de esta forma, un Video que se reproduce en una resolución distinta a la original (sea mayor o menor) tiene el menor Aliasing posible y la mayor calidad posible (esto se debe a que hay filtros a medio camino, entre el "decoding" de Video por el Codec y la puesta en escena por el Driver de Video).

El proceso como pueden ver, no es nada sencillo de explicar, sin embargo, con un poco de esfuerzo es entendible.

Los pasos que ocurren entonces luego de que un archivo se abre son:

  • Decoding de Video (CODEC)
  • Procesamiento de Video para Scaler (DirectShow)
  • Post Procesamiento de Video (inclusión de Plugins Adicionales)
  • Driver de Video
  • Hardware de Video

Mientras que en Video Overlay no se admiten intermediarios entre el "Decoder" de Video y el Driver de Video, el modo DirectShow se situa como "intermediario" entre estas etapas permitiendo definir procesamientos de imagen adicionales "antes" de que la imagen sea enviada a pantalla.

Video Overlay y VMR7

Ahora que tenemos claro los puntos escenciales de la reproducción de Video, pueden ver la diferencia fundamental entre Video Overlay y DirectShow, donde Video Overlay no admite intermediarios y DirectShow sí y los problemas surgen cuando la resolución "nativa" del video no coincide con la resolución de pantalla (o sea, en el 90% de los casos). Ahora, lo que resta saber es "quien" usa DirectShow, bien, el estandar en Windows se define como VMR7, que significa "Video Mixing Renderer 7" que está basado en la librería de APIs del DirectX7 (de allí su nombre).

Sin embargo, el VMR7 si bien puede manejar filtros de Scaler, no puede manejar Pixel Shaders, ya que estos se introdujeron para el DirectX8, por lo tanto, Microsoft lanzó posteriormente un nuevo estandar y le llamó, VMR9.

VMR9

El VMR9 es el Video Mixer Renderer 9 y es actualmente la forma mas avanzada y eficaz de poder reproducir un formato de Video en Windows XP, debido a que está basado en DirectX9, no solo que incorpora todo lo del VMR7 sinó que también se pueden definir Plugins en DirectShow como programación de "Shaders" esto es, se pueden definir programas que funcionaran a modo de "Shaders" aplicados al Video, así es. Se puede hacer que la imagen se opaque, cambie de forma, se haga mas clara, mas borrosa, cambie los colores o absolutamente cualquier cosa que puedan imaginarse, ya que esta vez, el proceso final será mostrado en pantalla a través del Direct3D, esto quiere decir que nuestro Video se comportará como una "Textura 3D" en pantalla. El VMR9 abre las posibilidades de realizar un Post-Processing al video que de otra forma es dificil, costoso en recursos y que no logra el mismo efecto, gracias al motor de Pixel Shaders de las Placas de Video actuales.

Vale la aclaración que antes de usar el modo VMR9 se recomienda tener instalada la última versión posible de DirectX9c en el sistema (al día de la fecha es la versión de Agosto de 2007) ya que esto influirá directamente sobre la performance, además, algunas versiones anteriores al DirectX9.0c no admiten utilizar los Shaders del MediaPlayer Classic.

Requerimientos de Hardware para VMR7 y VMR9

Si bien ambos modos son compatibles y pueden usarse, para utilizar VMR9 los requerimientos se elevan. Debido a que una placa Onboard carece de la performance necesaria para inclusive mover con suavidad el 3DMark2001 (primer programa que usa Shaders), lo que ocurre si intentamos aplicar VMR9 con Pixel Shaders a un Video en soluciones onboard es que la reproducción del archivo caerá a 2 o 3 FPS y se hará imposible de ver de manera fluída, de la misma manera que ocurriría en un Juego, es por eso que hice incapié en la absoluta necesidad de tener al menos una placa de Video con 128bit de bus y una performance similar a una Geforce 8500GT, esto le permite incluso aplicar Pixel Shaders a un Video en formato 1920x1080 sin pérdida de Performance, esto no es capricho, se debe tener en cuenta, que un Video en Formato 1920x1080 que se reproduce a 30 cuadros por segundo demanda un nivel de performance por arriba de lo "basico" si lo que queremos es que cada fotograma sea pre-procesado con un Shader aplicado, solamente el tener que explicarles esto les hace entrar en razón de cuan importante es la performance de la placa de Video en relación a la calidad del Video y el Shader que usemos.

Las pruebas que hice en laboratorio determinaron que ninguna placa 3D onboard está capacitada para manejar Video en HD con la inclusión de Shaders, ya que su performance decae por el piso y la reproducción se hace imposible, sin embargo, ni bien se pasa al modo VMR7, todo vuelve a la normalidad y el Video se puede ver sin problemas, pero perderemos la funcionalidad de los "shaders".

Lo opuesto es cierto cuando tenemos una placa de Video decente, si usamos Video Overlay o VMR7 notaremos que tenemos "mas uso" de CPU que si usamos el modo VMR9, esto es debido a que la placa de Video es mas eficiente procesando el video final, que si lo debe hacer el procesador mediante Software (a no confundir procesamiento final de la imagen con procesamiento en la etapa de Decoding).

Logrando la Maxima Calidad: VMR9 y Pixel Shaders

Ahora que quedó acentada la diferencia entre uno y otro, vamos a concentrarnos en lograr la máxima calidad posible, si activaron el modo VMR9 Renderless, ahora podremos acceder al menu "Shaders" en el Media Player Classic.

mpc_10_460

Existen 2 Shaders interesantes en el MediaPlayer Classic, uno es "Sharpen Complex y el otro es el Sharpen", el Sharpen Complex brida una mayor claridad a la imagen con un algoritmo avanzado que permite la mínima variación posible, sin embargo, el efecto es algo suave para mi gusto, el Sharpen por el contrario utiliza un algoritmo mas agresivo que realmente provoca un ajuste de claridad muy notorio, en especial en Videos en Alta Definición. La diferencia entre ambos se hace evidente si usamos archivos de baja calidad, donde el Sharpen Complex es preferible, ya que produce menos excesos de contraste en los bordes, sin embargo, para archivos de Alta Definición, el Sharpen es preferible, veamos como luce cada uno. La configuración que elijamos quedará grabada para la próxima vez y los "Shaders" se activan o desactivan simplemente presionando "Ctrl-P".

Todos los Shaders usados en VMR9 son versión 2, lo cual quiere decir, que cualquier placa con soporte para ShaderModel 2 de performance suficiente debería servir.

Marco de Video con VMR9 sin Pixel Shaders:

Así luce nuestro video sin aplicar Shaders.

Marco de Video con VMR9 con Pixel Shaders (Shader - Sharpen Complex)

Así luce el video cuando aplicamos Sharpen Complex (este es ideal para Videos de baja calidad, menos de 640x480)

Marco de Video con VMR9 con Pixel Shaders (Shader - Sharpen)

Así luce el Video cuando se aplica Sharpen, como pueden ver, el resultado es increíble.

Comparación entre los 3 Modos:

Aquí pueden ver los 3 modos en comparación, es indudable que la reproducción y la calidad de la imagen mejora enormemente cuando se Aplica Sharpen, el producto final es superior incluso a como se ve originalmente, ya que la imagen se procesa y el Scaler produce una mejor respuesta. Esto ocurre casi siempre, ya que rara vez observamos videos en su resolución nativa, especialmente si disponemos de paneles LCD Wide.


Comentarios (69) | RSS 2.0

Páginas: « Anterior | 1 2 3 4 5 | Siguiente »

Últimos temas foro TUTORIALES