Divxhouse.com Web sobre videoedición

Test de Decoders para H.264

TEST DE DECODERS H264

Este pequeño test sirve para valorar de una manera práctica, la optimización de los distintos decoders de H.264 (AVC) que existen en la actualidad. Existen otros, pero he elegido a los gratuitos/conocidos. De esta manera podremos elegir el más adecuado para nuestros intereses.

Decoders del Test

  • CoreAVC 2.0: Decoder de H264 de la empresa Corecodec. Dentro de características está el implementar decodificación por GPU mediante CUDA. Esto permite optimizar la reproducción de vídeo en H.264 si disponemos de una gráfica Nvidia con soporte para Cuda.
  • DiAVC: Decoder de H264 creado por un usuarios de Doom9. De reciente creación, pero con un desarrollo interesante , optimizado para CPUs actuales. NOTA: Como está en constante desarrollo, puede que al cabo de un mes sus prestaciones hayan mejorado.
  • Divx H264 1.1: Decoder de la casa Divx.com, gratuito y solo disponible en 32bits.
  • FFDSHOW: Decoder de múltiples formatos, tanto audio como vídeo, dentro de los que se incluye H.264.
  • FFDSHOW MT: El mismo que el anterior, ya que está dentro del ffdshow. Esta opción sirve para utilizar los distintos núcleos del sistema, si los hay.
  • MPC-HC Vídeo: Derivado de ffmpeg y primo-hermano del ffdshow.  Proviene de las entrañas del MPC-Home Cinema. Permite decodificar por DXVA si la gráfica y el vídeo lo permite, y es el único de todos los decoders que lo permite utilizar.

Equipos para el Test

He utilizado dos equipos diferentes para las pruebas, por un lado el sobremesa Intel Q8200 y por otro un portátil antiguo (3 años) con el microprocesador Intel T2250.

  • Equipo A: Intel Quad Q8200 2.33Ghz - Windows 7 64bits
  • Equipo B: Intel Core Duo T2250 1.73Ghz - Windows 7 32bits

Herramientas para el test

Para el test, tenía pensado utilizar un pequeño programa de Haali que permite averiguar los FPS máximos que puede decodificar cada decoder. Pero después de hacer unas pequeñas pruebas, he visto que los resultados eran extraños y la utilización de la CPU desequilibrada.

Para las pruebas he utilizado Graphstudio (web), que está presente en 32bits y 64bits. Esta utilidad es similar a Graphedit, pero con la particularidad de realizar tests de decoders por directshow.

En Source File se carga el vídeo a testear. En Decoder el filtro de decodificación a testear. En Renderer NULL, para evitar desvirtuaciones en los renders. Number os passes, el numero de veces que se examinará el vídeo. Al finalizar las pasadas, hace una media aritmética entre todas. Start y a esperar. Es importante no tener nada puesto durante las pruebas. Ni antivirus, ni programas residentes, ni explorador ni nada de nada. Esto minimizará el impacto que ello pueda realizar sobre el resultado final.

En parte de las pruebas en el Quad q8200, he forzado a utilizar un solo core para ver como respondían los decoders ante esta situación. Me ha parecido interesante ver como ffdshow MT con un core funciona peor que ffdshow Normal.

Vídeos para el test

Para los test de vídeo, he utilizado la película Transformers 2007. A partir del HD-DVD he creado las distintas pruebas para el proceso, 720p y 1080p con los distintos presets.

  • 1080p: 1920x792
  • 720p: 1280x528

Y cada resolución HD ha sido procesada con el profile: UltrafastNormal Placebo. Esto es porque cada configuración tiene unas características que implican un distinto manejo a la hora de decodificar (visualizar el vídeo), siendo la de Placebo la que va mas cargada y Ultrafast la que va mas ligera.

  • x264.r1376 --pass 1 --bitrate ?????? "Transformers.avs" --preset Ultrafast--stats stats.tmp -o NUL
  • x264.r1376 --pass 2 --bitrate ?????? "Transformers.avs" --preset Ultrafast--stats stats.tmp -o ultrafast.mkv
  • x264.r1376 --pass 1 --bitrate ?????? "Transformers.avs" --preset Normal--stats stats.tmp -o NUL
  • x264.r1376 --pass 2 --bitrate ?????? "Transformers.avs" --preset Normal--stats stats.tmp -o ultrafast.mkv
  • x264.r1376 --pass 1 --bitrate ?????? "Transformers.avs" --preset Placebo--stats stats.tmp -o NUL
  • x264.r1376 --pass 2 --bitrate ?????? "Transformers.avs" --preset Placebo--stats stats.tmp -o ultrafast.mkv

MEDIAINFO de los vídeos para el Test

  • 720p - Ultrafast = cabac=0 / ref=1 / deblock=0:0:0 / analyse=0:0 / me=dia / subme=0 / psy=1 / psy_rd=0.0:0.0 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=6 / sliced_threads=0 / nr=0 / decimate=1 / mbaff=0 / constrained_intra=0 / bframes=0 / wpredp=0 / keyint=250 / keyint_min=25 / scenecut=0 / rc=2pass / mbtree=0 / bitrate=6000 / ratetol=1.0 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / aq=0
  • 720p - Normal = cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=7 / psy=1 / psy_rd=1.0:0.0 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=6 / sliced_threads=0 / nr=0 / decimate=1 / mbaff=0 / constrained_intra=0 / bframes=3 / b_pyramid=0 / b_adapt=1 / b_bias=0 / direct=1 / wpredb=1 / wpredp=2 / keyint=250 / keyint_min=25 / scenecut=40 / rc_lookahead=40 / rc=2pass / mbtree=1 / bitrate=6000 / ratetol=1.0 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / aq=1:1.00
  • 720p - Placebo = cabac=1 / ref=16 / deblock=1:0:0 / analyse=0x3:0x133 / me=tesa / subme=10 / psy=1 / psy_rd=1.0:0.0 / mixed_ref=1 / me_range=24 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=0 / chroma_qp_offset=-2 / threads=6 / sliced_threads=0 / nr=0 / decimate=1 / mbaff=0 / constrained_intra=0 / bframes=16 / b_pyramid=0 / b_adapt=2 / b_bias=0 / direct=3 / wpredb=1 / wpredp=2 / keyint=250 / keyint_min=25 / scenecut=40 / rc_lookahead=60 / rc=2pass / mbtree=1 / bitrate=6000 / ratetol=1.0 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / aq=1:1.00
  • 1080p - Ultrafast = cabac=0 / ref=1 / deblock=0:0:0 / analyse=0:0 / me=dia / subme=0 / psy=1 / psy_rd=0.0:0.0 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=6 / sliced_threads=0 / nr=0 / decimate=1 / mbaff=0 / constrained_intra=0 / bframes=0 / wpredp=0 / keyint=250 / keyint_min=25 / scenecut=0 / rc=2pass / mbtree=0 / bitrate=16000 / ratetol=1.0 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / aq=0
  • 1080p - Normal = cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=7 / psy=1 / psy_rd=1.0:0.0 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=6 / sliced_threads=0 / nr=0 / decimate=1 / mbaff=0 / constrained_intra=0 / bframes=3 / b_pyramid=0 / b_adapt=1 / b_bias=0 / direct=1 / wpredb=1 / wpredp=2 / keyint=250 / keyint_min=25 / scenecut=40 / rc_lookahead=40 / rc=2pass / mbtree=1 / bitrate=16000 / ratetol=1.0 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / aq=1:1.00
  • 1080p - Placebo = cabac=1 / ref=16 / deblock=1:0:0 / analyse=0x3:0x133 / me=tesa / subme=10 / psy=1 / psy_rd=1.0:0.0 / mixed_ref=1 / me_range=24 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=0 / chroma_qp_offset=-2 / threads=6 / sliced_threads=0 / nr=0 / decimate=1 / mbaff=0 / constrained_intra=0 / bframes=16 / b_pyramid=0 / b_adapt=2 / b_bias=0 / direct=3 / wpredb=1 / wpredp=2 / keyint=250 / keyint_min=25 / scenecut=40 / rc_lookahead=60 / rc=2pass / mbtree=1 / bitrate=16000 / ratetol=1.0 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / aq=1:1.00

Resultados del Test

INTEL QUAD Q8200

INTEL CORE DUO T2250

Conclusiones del Test

Es complicado decidir por el mejor de todos, pero CoreAVC es el más estable en todos los campos. Se ha visto una gran optimización con el preset Ultrafast debido a que este utiliza CAVLC y no CABAC. DiAVC sería merecedor del segundo puesto, pero tiene unos altibajos muy extraños y para su utilización es necesario disponer de instrucciones SSE2 en nuestro microprocesador. Si utilizamos un AMD antiguo, nuestras posibilidades de utilizar DiAVC son limitadas. Para mi conclusión, dejaré los pros y contras de cada decoder y en orden de los ganadores:

CoreAVC 2.0

Pros:

  • Optimizado para casi cualquier equipo
  • CUDA. El que tenga una tarjeta gráfica Nvidia con CUDA, tiene un tesoro con CoreAVC. Con un simple ATOM ION es posible visualizar vídeos a 1080p sin problema alguno.
  • Soporte de la empresa Corecodec con un futuro prometedor.
  • Soporta tanto SO de 32bits como de 64bits.
  • Funciona muy bien tanto con un core, como con varios.

Contras:

  • De pago. Aunque sea un precio bajo, menos de 10$, esto siempre le resta puntos a cualquier producto donde existen alternativas gratuitas y de similares prestaciones.

Descargahttp://corecodec.com/products/coreavc

Divx H264

Pros:

  • Gratuito
  • En los resultados ha quedado casi siempre por detras de CoreAVC, pero ha estado siempre a la altura.

Contras:

  • Viene en el pack Divx 7 y se hace engorroso bajarse 10mb para instalar un simple decoder. (En Divxhouse.com lo tenemos con un simple instalador para evitar esto, pero de serie no es así)
  • Muestra un logo de Divx los primeros segundos del vídeo.
  • Solo soporta 32bits

Descargahttp://www.divxhouse.com/descargas/?did=11

DiAVC

Pros:

  • Optimizado y en constante evolución. En el procesador T2250 ofrece unos resultados muy atractivos, quedando siempre en primer lugar.
  • Gratuito

Contras:

  • Necesario disponer de un Procesador con SSE2
  • Instalador engorroso y poco intuitivo.
  • Ninguna opción de cara al usuario.
  • Únicamente soporta 32bits.
  • Comportamiento mediocre con CAVLC.

Descargahttp://di-avc.com

FFdshow (Normal y MT)

Pros:

  • Gratuito
  • Prestaciones buenas, aunque muy mejorables
  • Incluye otros codecs en el decoder
  • Existe la versión de 32bits y la de 64bits.

Contras:

  • Lioso para el usuario novel,  ya que es necesario conocer el procesador para ajustar la configuración de H264 a ffdswhow-MT o libvcodec.
  • Mejorable en cuanto a otros decoders.

Descargahttp://www.divxhouse.com/descargas/?did=6

MPC-Vídeo Decoder

Pros:

  • Gratuito
  • Versiones de 32bits y 64bits
  • Permite decodificar otros codecs dentro del mismo pack (FLV, MPEG-ASP, MPEG2,etc).
  • El único de los decoders mostrados que permite utilizar DXVA si el vídeo y la tarjeta gráfica lo permiten.

Contras:

  • Muy mal optimizado si no se utiliza DXVA. En un ordenador potente no se apreciará este defecto, pero en uno poco potente se hará notorio.
  • Necesario que mejoren la compatibilidad con Multinúcleo, porque no funciona nada bien en las versiones actuales.

Descargahttp://www.divxhouse.com/descargas/?did=10

ELEGIR EL DECODER DE FORMA MANUAL

Es habitual haber instalado varios decoders y liarnos a la hora de que uno de ellos sea el elegido para decodificar. En este caso podemos desinstalar todos menos el que queremos o utilizar algún programa para ello. Aquí una muestra de los que existen.

Win7DSTweaker 2.7

Esta pequeña utilidad es imprescindible para aquellos que utilizan Windows 7. Permite elegir el decoder de vídeo predeterminado para cada codec (de los habituales). De esta manera si tenemos instalados varios de H264, con esta utilidad podemos forzar el que nosotros queramos. Muy sencillo de utilizar y funciona tanto en decoders de 32bits como de 64bits. Yo aconsejo este programa, si podemos utilizarlo, ya que está mucho más ordenado el tema de filtros, pudiendo especificar al ffdshow que no toque H.264, pero si XviD.

Descarga actualizada: http://www.codecguide.com/windows7_preferred_filter_tweaker.htm

Codec Tweak Tool

Similar al anterior, los programadores de K-Lite nos brindan con un software realmente completo. Permite realizar ajustes con los filtros instalados, permitiendo realizar lo anterior pero para todos los SO de Windows. Su funcionamiento es algo más complejo. Una muestra de su funcionamiento:

  • Imagen 1: Marcar Manage the installed DirectShow filters. Si queremos configurar el decoder por defecto, solo necesitamos marcar esta casilla.

  • Imagen 2: En un lado están los filtros desactivados, los primeros que aparecen, y después los activados. Para activar o desactivar, solo es necesario marcar la casilla de los mismos y pulsar NEXT. Si en los activos solo queremos utilizar DivX H264 decoder, marcaríamos el de CoreAVC H.264 decoder y todos aquellos que decodifiquen H.264 como ffdshow o DiAVC. Todos estos son filtros de 32bits.

  • Imagen 3: Lo mismo que el anterior, pero aquí solo aparecen los filtros en 64bits.

Descarga actualizada: http://www.free-codecs.com/download/Codec_Tweak_Tool.htm