Autor Tema: Error al Reproducir Bitperfet DTS en foobar2000 usando WASAPI por HDMI  (Leído 319 veces)

0 Usuarios y 1 Visitante están viendo este tema.

elfrozen6

  • Miembro avanzado
  • *****
  • Desconectado Desconectado
  • Registrado: 05/09/2013
  • Mensajes: 501
  • Valoración: 26
  • Sexo: Masculino
Hace algunos días estoy usando una laptop que ya no uso conectada a un receptor por HDMI, estuve probando esta configuración pero he tenido algunos inconvenientes.

El reproductor como dice el título del post es el foobar2000 con el componente WASAPI y DTS decoder, cuando reproduzco un audio FLAC/ALAC/PCM no tengo ningun problema ya sea en 2.0 o multicanal 5.1, el problema viene cuando quiero reproducir mis DTSWAV 5.1/6.1 que tengo, en el caso de los DTS 5.1 usando WASAPI el foobar2000 envia la señal decodificada PCM al receptor y en los DTS 6.1 simplemente me salta un error indicando que no es soportado.

Intente muchas cosas como quitar el complemento DTS decoder de foobar2000 pero haciendo esto nisiquiera reconoce los archivos DTS, dejo claro que mi laptop si soporta transmisiones en bitperfect por HDMI de 7.1 24 bit a 192kHz, he probado esto usando el Power DVD y el MPC con ffdshow obteniendo flujos Dolby TrueHD y DTSHD Master Audio con todas sus variantes anteriores en el receptor.
Se que una opcion sería conectarla analógicamente pero prefiero utilizar el DAC del receptor y que también éste haga toda la gestión.

He visto en otros foros pero no dan con una solución, quizas sea una limitación del foobar o algo estoy dejando pasar por alto.





tebasuna51

  • Moderador
  • ******
  • Desconectado Desconectado
  • Registrado: 22/02/2010
  • Mensajes: 4.545
  • Valoración: 250
Windows Audio Session API (WASAPI) permite tomar el control exclusivo de un Adaptador de Audio y mandar/recibir audio analógico a un Dispositivo Final (altavoces, micrófono,...).
Permite controlar DAC/ADC (latencias, etc.) y mezclas/efectos enviando el audio analógico lo más puro posible.

Si lo que deseas es enviar el audio digital a tu receptor para que él haga la conversión DAC (me parece lo correcto, en principio el receptor lo hará mejor) da lo mismo que uses WASAPI, ASIO o Direct Sound, lo que tiene que hacer tu reproductor es enviar la señal digital antes de que WASAPI (o el driver que sea) actúe.

Tu reproductor podrá hacer dos cosas, según le indiques y proceda, pasar el audio sin decodificar al receptor (passtrough) por HDMI/SPDIF o usar los decodificadores por soft y enviar el audio PCM por HDMI/SPDIF.

El método passtrough es el recomendado en los formatos que soporte el receptor (DTS, AC3, etc.) mientras que deberá decodificar otros formatos como FLAC, etc.
En ninguno de los dos casos creo que afecte el uso de WASAPI o no, el receptor se encargará de todo decodificar (si procede), DAC, efectos, etc.

Foobar2000 es un gran reproductor de audio pero no le veo ninguna ventaja para la reproducción a través de un receptor de calidad al que puedes enviarle audio digital.
Ni recomendación es que uses un reproductor como MPC-HC que permite el método passtrough o su decodificación.

No tengo problemas reproduciendo dtswav, mi receptor (solo SPDIF, espero que también funcione por HDMI) marca que recibe un DTS 5.1
Incluso puedes convertir los dtswav a DTS estandar reduciendo el tamaño a un 87,5% con idéntica calidad.

elfrozen6

  • Miembro avanzado
  • *****
  • Desconectado Desconectado
  • Registrado: 05/09/2013
  • Mensajes: 501
  • Valoración: 26
  • Sexo: Masculino
Foobar2000 es un gran reproductor de audio pero no le veo ninguna ventaja para la reproducción a través de un receptor de calidad al que puedes enviarle audio digital.
Pues ya me he acostumbrado al foobar2000 como reproductor principal y aún tengo ese bichito de saber si es posible hacer un passtrough.

Ni recomendación es que uses un reproductor como MPC-HC que permite el método passtrough o su decodificación.
Probando mis DTSWAV en MPC no tengo problemas y el receptor me detecta el DTS incluso probando audios AC3 solos que tengo me detecta como Dolby Digital, si esto del foobar no es posible supongo que tendré que usar este.

No tengo problemas reproduciendo dtswav, mi receptor (solo SPDIF, espero que también funcione por HDMI) marca que recibe un DTS 5.1
Incluso puedes convertir los dtswav a DTS estandar reduciendo el tamaño a un 87,5% con idéntica calidad.
Entonces usa el MPC para mandar el audio passtrough por SPDIF al receptor verdad?, he probado un plugin foobar "SPDIFER" y tengo habilitado el paso de AC3 y DTS, pero de igual modo no me ha resultado, supongo que no funciona con HDMI, además mi laptop no tiene salida SPDIF.
Lo raro es que al reproducir los DTS ES 6.1 de música que tengo me sale error en el foobar y en 5.1 como dije antes el foobar decodifica y lo manda como PCM 6CH (5.1), supongo que tiene que ver con que PCM no soporta un 6.1 con información de posición de canales causando que el receptor solo reciba un PCM 7CH crudo, justamente por esta razón es que quería mandar el flujo intacto al receptor.

Como última duda, cuando se refiere a convertir DTSWAV a DTS se refiere a recodificar?, Tengo entendido que los DTSWAV son en realidad DTS 5.1/6.1 a 16/24 bits que están dentro de un WAV con las mismas especificaciones del estandar CD AUDIO en frecuencia de muestreo 44.1kHz que supongo debe ser para "engañar" y hacerse pasar por un CD AUDIO tradicional stereo en PCM.

tebasuna51

  • Moderador
  • ******
  • Desconectado Desconectado
  • Registrado: 22/02/2010
  • Mensajes: 4.545
  • Valoración: 250
Lo raro es que al reproducir los DTS ES 6.1 de música que tengo me sale error en el foobar y en 5.1 como dije antes el foobar decodifica y lo manda como PCM 6CH (5.1)

Será un fallo del decodificador DTS de foobar, se liará con los dts 6.1, de hecho los dts 6.1 pueden ser de dos tipos: discreto, con un canal Back Center codificado separado como una extensión de los 5.1, y mezclado, con el canal Back Center mezclado como fantasma en los Back izquierdo y derecho.

El primer tipo (discreto) si genera un PCM 6.1 con los canales definidos, pero el tipo mezclado solo puede generar un 5.1.
Si tienes interés te buscaré uno de cada tipo a ver si el problema lo da solo con uno de ellos.

Citar
Como última duda, cuando se refiere a convertir DTSWAV a DTS se refiere a recodificar?,

No, el DTS permanece idéntico, simplemente un DTSWAV usa 14 bits útiles de cada 16, al convertirlo a DTS estandar se eliminan esos 2 bits inútiles.

Citar
Tengo entendido que los DTSWAV son en realidad DTS 5.1/6.1 a 16/24 bits

No sé a que te refieres con 16/24 bits, un DTS estandar (con pérdidas, no un DTS-MA) no tiene bitdepth.

Citar
que están dentro de un WAV con las mismas especificaciones del estandar CD AUDIO en frecuencia de muestreo 44.1kHz que supongo debe ser para "engañar" y hacerse pasar por un CD AUDIO tradicional stereo en PCM.

Efectivamente la cabecera del wav indica que es un PCM  estéreo 44.1kHz y así se consigue grabar en un CD de audio, y esa es la única utilidad de un dtswav, ser grabado en un CD. Como método de almacenamiento en modo archivo es ineficiente, sin ninguna ventaja sobre guardar dts estandar.

Para evitar producir daños en los altavoces, por reproductores que no los identifiquen como DTS sino como lo que dice la cabecera del WAV, es por lo que los 2 bits de mayor valor en cada palabra de 16 bits (un valor de volumen de PCM real) no se usan y se ponen a cero, de ahí que el tamaño del DTSWAV sea 16/14 del DTS estandar, pero los datos útiles son idénticos.

elfrozen6

  • Miembro avanzado
  • *****
  • Desconectado Desconectado
  • Registrado: 05/09/2013
  • Mensajes: 501
  • Valoración: 26
  • Sexo: Masculino
Será un fallo del decodificador DTS de foobar, se liará con los dts 6.1, de hecho los dts 6.1 pueden ser de dos tipos: discreto, con un canal Back Center codificado separado como una extensión de los 5.1, y mezclado, con el canal Back Center mezclado como fantasma en los Back izquierdo y derecho.

El primer tipo (discreto) si genera un PCM 6.1 con los canales definidos, pero el tipo mezclado solo puede generar un 5.1.
Si tienes interés te buscaré uno de cada tipo a ver si el problema lo da solo con uno de ellos.

Con el que me ha dado problemas es con el DTS ES 6.1 (discreto), no tengo un DTS Matrix 6.1 para hacer una prueba en este momento.

No, el DTS permanece idéntico, simplemente un DTSWAV usa 14 bits útiles de cada 16, al convertirlo a DTS estandar se eliminan esos 2 bits inútiles.
No sé a que te refieres con 16/24 bits, un DTS estandar (con pérdidas, no un DTS-MA) no tiene bitdepth.
Entiendo, entonces el bitdepth de los DTSWAV en realidad es de 14bits, y esto también aplica a los DTS lossy que hay en películas?, muchos dicen que son 5.1 de 16 o 24 bits a 768kbps o 1536kbps que son los datos que mediainfo/bdinfo nos otorgan y aqui no hay que "engañar" con una cabecera como es el caso de los CD DTS.

Actualización:
 
He probado convirtiendo a un DTS estandar haciendo lo siguiente:

-Como Useac3to me detecta como WAV 2.0 utilicé MKVtoolnix para empaquetarlo dentro de un MKA, haciendo esto el bitrate del archivo disminuye un poco de 1411.2kbps que "sería el falso para engañar" a 1235kbps que debe ser el verdadero causando una disminución al tamaño del archivo.

Asi me detecta el DTSWAV en Useac3to:

WAV, 2.0 channels, 0:03:57, 16 bits, 1411kbps, 44.1kHz

-Luego cargo ese MKA en Useac3to y le doy en demux, primeramente le aplican un "patching" a 24bits y con esto logro obtener un archivo DTS normal con su propia cabecera y no tengo problemas al reproducir los DTS 5.1 en cualquier reproductor, nuevamente el inconveniente es con los DTS 6.1 que solo cuando estan en el MKA foobar2000 reconoce los 7 canales correctamente pero cuando esta como DTS puro al reproducirlo comienza a sonar el típico ruido producto de una mala interpretación de cabecera del foobar2000, todo parece indicar que el plugin DTS Decoder es el que tiene problemas con las pistas 6.1, aunque habría que probar con una pista matriciada que como comente anteriormente no tengo.

MKA cargado a Useac3to haciendo demux a DTS.

MKA, 1 audio track, 0:03:57
1: DTS-ES, 6.1 channels, 1235kbps, 44.1kHz
[a01] Extracting audio track number 1...
[a01] Patching bitdepth to 24 bits...
[a01] Creating file "prueba.dts"...
eac3to processing took 1 second.
Done.


Por cierto por pura curiosidad decodifique ese DTS a WAV-PCM utilizando el decodificador de Sonic ya que me saltaba un error cuando lo hacía con libDcaDec:

[a01] libDcaDec reported the warning "Failed to parse core extension".  <WARNING>
[a01] libDcaDec output changed from 7 channels, 44kHz to 6 channels, 44kHz.  <ERROR>
Aborted at file position 786432.  <ERROR>

Con Sonic me sale esto:

DTS-ES, 6.1 channels, 0:03:57, 1235kbps, 44.1kHz
Decoding with DirectShow (Sonic Audio Decoder)...
DirectShow reports 6.1 channels, 24 bits, 44.1kHz
Remapping channels...
Writing WAV...
Creating file "Prueba.wav"...
eac3to processing took 22 seconds.
Done.


El PCM resultante es perfectamente reproducible en foobar2000 que me detecta los 7 canales segun su display de info y también tiene información de posición de canales según medianfo.

Hay algún otro método que recomiende para dejarlo como un DTS estandar, lo que me extraña es que "infle" el DTS a 24 bits pudiéndolo dejar a 16 bits, claro que añadiendo el comando -down16 se puede solucionar eso, quizas este no sea el método adecuado pero es el único que se me ocurrió, cuando dice dejarlo a 14 bits se refiere a la eliminación de la cabecera WAV que por consecuencia elimina esos 2 bits sobrantes de los 16 aunque realmente el archivo siga "mostrando" que es de 16 bits? o que realmente sera de 14 bits? de esto último dudo que sea porque 14 bits de profundidad no es realmente un "estandar" por asi decirlo.

tebasuna51

  • Moderador
  • ******
  • Desconectado Desconectado
  • Registrado: 22/02/2010
  • Mensajes: 4.545
  • Valoración: 250
...
Entiendo, entonces el bitdepth de los DTSWAV en realidad es de 14bits, y esto también aplica a los DTS lossy que hay en películas?, muchos dicen que son 5.1 de 16 o 24 bits a 768kbps o 1536kbps que son los datos que mediainfo/bdinfo nos otorgan y aqui no hay que "engañar" con una cabecera como es el caso de los CD DTS.

Voy a dejar el tema de los 6.1 para hacer pruebas más adelante.

A ver si me hago entender con el tema de los bits y el bitdepth.

Se llama bitdepth de un audio digitalizado descomprimido a la precisión de las muestras.
Si usamos 16 bits para representar el valor real del volumen hay un cierto ruido de cuantificación ya que un aumento de volumen se realiza a saltitos.
El oído humano medio puede diferenciar ese ruido hasta muestras de 20 bits, más allá no nota diferencia.

En los audios de CD se usan muestras de 16 bits, se considera audio HD con muestras de 24 bits.
Incluso en trabajos de laboratorio se puede trabajar con muestras de 64 bits para no perder precisión en posibles operaciones, pero en el momento de escuchar un audio las muestras de 24 bits no pueden mejorarse.

Cuando algún programa, como MediaInfo, dice que un DTS estandar es de 24 bits está cometiendo un error.
En la cabecera del DTS hay un campo donde se guarda la precisión del archivo descomprimido original, pero dicha precisión se pierde totalmente al codificarse a DTS.
Al ser una codificación con pérdidas no podemos garantizar recuperar el original con la precisión de 24 bits, ni siquiera a 16 bits.
Esas precisiones quedan para las codificaciones sin pérdidas como un DTS-MA que si tendrá una precisión concreta de 16 o 24 bits.

Y ni siquiera podemos asegurar que el original de un DTS fuera de 24 bits, ya que ciertos codificadores ponen siempre 24 en ese campo.
En resumen, un DTS estandar no tiene bitdepth, ni 16, ni 24, tendrá una calidad determinada por el bitrate y nada más.
Y para asegurarnos de que nadie decodifique un DTS a 16 bits perdiendo precisión innecesariamente eac3to parchea siempre ese campo en la cabecera del DTS a 24 bits:

[a01] Patching bitdepth to 24 bits...

Eso no quiere decir en absoluto que se infle y sería un error usar un -down16, ese audio a 24 bits es más fiel al original (fuera 16 o 24 bits) que si lo capamos.
Hay que mantener la mayor fidelidad, ya llegará el momento de recodificar.

-------------------------------

Todo lo anterior no tiene nada que ver con el almacenamiento de un DTS en un DTSWAV.

Como dije, para evitar que un reproductor despistado reviente los altavoces intentando reproducir la secuencia de bits de un DTS como un WAV de CD se recurre al siguiente parche:
Un WAV de CD tiene muestras de volumen, como dijimos, de 16 bits, y se rellenan los 2 bits de mayor orden con ceros, mientras que los 14 restantes se rellenan con el DTS estandar, no con muestras de volumen sino con una secuencia de bits codificados identica al DTS. No tiene nada que ver esto con el bitdepth.

elfrozen6

  • Miembro avanzado
  • *****
  • Desconectado Desconectado
  • Registrado: 05/09/2013
  • Mensajes: 501
  • Valoración: 26
  • Sexo: Masculino
...
Entiendo, entonces el bitdepth de los DTSWAV en realidad es de 14bits, y esto también aplica a los DTS lossy que hay en películas?, muchos dicen que son 5.1 de 16 o 24 bits a 768kbps o 1536kbps que son los datos que mediainfo/bdinfo nos otorgan y aqui no hay que "engañar" con una cabecera como es el caso de los CD DTS.

Voy a dejar el tema de los 6.1 para hacer pruebas más adelante.

A ver si me hago entender con el tema de los bits y el bitdepth.

Se llama bitdepth de un audio digitalizado descomprimido a la precisión de las muestras.
Si usamos 16 bits para representar el valor real del volumen hay un cierto ruido de cuantificación ya que un aumento de volumen se realiza a saltitos.
El oído humano medio puede diferenciar ese ruido hasta muestras de 20 bits, más allá no nota diferencia.

En los audios de CD se usan muestras de 16 bits, se considera audio HD con muestras de 24 bits.
Incluso en trabajos de laboratorio se puede trabajar con muestras de 64 bits para no perder precisión en posibles operaciones, pero en el momento de escuchar un audio las muestras de 24 bits no pueden mejorarse.

Cuando algún programa, como MediaInfo, dice que un DTS estandar es de 24 bits está cometiendo un error.
En la cabecera del DTS hay un campo donde se guarda la precisión del archivo descomprimido original, pero dicha precisión se pierde totalmente al codificarse a DTS.
Al ser una codificación con pérdidas no podemos garantizar recuperar el original con la precisión de 24 bits, ni siquiera a 16 bits.
Esas precisiones quedan para las codificaciones sin pérdidas como un DTS-MA que si tendrá una precisión concreta de 16 o 24 bits.

Y ni siquiera podemos asegurar que el original de un DTS fuera de 24 bits, ya que ciertos codificadores ponen siempre 24 en ese campo.
En resumen, un DTS estandar no tiene bitdepth, ni 16, ni 24, tendrá una calidad determinada por el bitrate y nada más.
Y para asegurarnos de que nadie decodifique un DTS a 16 bits perdiendo precisión innecesariamente eac3to parchea siempre ese campo en la cabecera del DTS a 24 bits:

[a01] Patching bitdepth to 24 bits...

Eso no quiere decir en absoluto que se infle y sería un error usar un -down16, ese audio a 24 bits es más fiel al original (fuera 16 o 24 bits) que si lo capamos.
Hay que mantener la mayor fidelidad, ya llegará el momento de recodificar.

-------------------------------

Todo lo anterior no tiene nada que ver con el almacenamiento de un DTS en un DTSWAV.

Como dije, para evitar que un reproductor despistado reviente los altavoces intentando reproducir la secuencia de bits de un DTS como un WAV de CD se recurre al siguiente parche:
Un WAV de CD tiene muestras de volumen, como dijimos, de 16 bits, y se rellenan los 2 bits de mayor orden con ceros, mientras que los 14 restantes se rellenan con el DTS estandar, no con muestras de volumen sino con una secuencia de bits codificados identica al DTS. No tiene nada que ver esto con el bitdepth.
Excelente explicación como siempre y gracias por tomarte la molestia de explicarlo así, ya me quedo claro.

 

tebasuna51

  • Moderador
  • ******
  • Desconectado Desconectado
  • Registrado: 22/02/2010
  • Mensajes: 4.545
  • Valoración: 250
He creado un par de DTS-ES uno discreto y el otro mezcla (matrix lo llama DTS-HD Master Audio Suite).

eac3to los identifica como DTS-ES, 6.1 y DTS-ES, 5.1


Al decodificar con Foobar2000 no me da error pero ambos los decodifica como 5.1 con el cansl BC mezclado en los surround.
Decodificados con ffmpeg o eac3to el discreto produce un wav 6.1 mientras que el mezcla produce un 5.1 como Foobar2000.

No recibo errores, en todos te da eso o solo en alguno (puede tener alguna ligera corrupción)

elfrozen6

  • Miembro avanzado
  • *****
  • Desconectado Desconectado
  • Registrado: 05/09/2013
  • Mensajes: 501
  • Valoración: 26
  • Sexo: Masculino
He creado un par de DTS-ES uno discreto y el otro mezcla (matrix lo llama DTS-HD Master Audio Suite).

eac3to los identifica como DTS-ES, 6.1 y DTS-ES, 5.1


Al decodificar con Foobar2000 no me da error pero ambos los decodifica como 5.1 con el cansl BC mezclado en los surround.
Decodificados con ffmpeg o eac3to el discreto produce un wav 6.1 mientras que el mezcla produce un 5.1 como Foobar2000.

No recibo errores, en todos te da eso o solo en alguno (puede tener alguna ligera corrupción)

He probado ambos dts, usando el mezclador de windows DS no tengo problemas de reproducción y se escuchan perfectamente ambos.

Cuando uso WASAPI para mandar al receptor con el DTS ES 6.1 Matrix no tengo problemas, aunque foobar sigue decodificando el DTS al menos el receptor recibe un PCM 5.1, por otra parte con el DTS ES discreto 6.1 me sale error (dejo captura del error y propiedades de formatos soportados por mi receptor adjuntado)

Será que en las propiedades de formatos soportados no figura el DTS ES?, no he tenido problemas al sacar un 6.1 discreto pero en DTS-HD.

Intenté hacerlo con el plugin ASIO4ALL v2, este me activa los 8 canales pero por el momento solo he conseguido hacer sonar 2 canales ( PCM estéreo), dejando 6 canales mudos.

tebasuna51

  • Moderador
  • ******
  • Desconectado Desconectado
  • Registrado: 22/02/2010
  • Mensajes: 4.545
  • Valoración: 250
Cuando uso WASAPI para mandar al receptor con el DTS ES 6.1 Matrix no tengo problemas, aunque foobar sigue decodificando el DTS al menos el receptor recibe un PCM 5.1, por otra parte con el DTS ES discreto 6.1 me sale error (dejo captura del error y propiedades de formatos soportados por mi receptor adjuntado)

Será que en las propiedades de formatos soportados no figura el DTS ES?, no he tenido problemas al sacar un 6.1 discreto pero en DTS-HD.

Intenté hacerlo con el plugin ASIO4ALL v2, este me activa los 8 canales pero por el momento solo he conseguido hacer sonar 2 canales ( PCM estéreo), dejando 6 canales mudos.

Sinceramente no sé que intentas hacer con WASAPI o ASIOALL para acabar enviando PCM al receptor, si conectaras las salidas analógicas lo entendería, pero ni WASAPI ni ASIOALL van a tener nada que hacer mientras el audio esté en formato digital PCM.

Y mucho menos tiene nada que ver los formatos soportados por tu receptor si le envías PCM, tu receptor no tendrá ningún problema con DTS-ES (de ambos tipos) pero mándaselo tal cual sin decodificar, pasa de Foobar2000 totalmente.

Es evidente que el decodificador de DTS de Foobar2000 no soporta 6.1 discreto.
Si quieres decodificarlo en el PC usa los lav-filter incluidos en mpc-hc.
Pero sigue siendo absurdo si puedes hacer passtrough a tu receptor.

elfrozen6

  • Miembro avanzado
  • *****
  • Desconectado Desconectado
  • Registrado: 05/09/2013
  • Mensajes: 501
  • Valoración: 26
  • Sexo: Masculino
Sinceramente no sé que intentas hacer con WASAPI o ASIOALL para acabar enviando PCM al receptor, si conectaras las salidas analógicas lo entendería, pero ni WASAPI ni ASIOALL van a tener nada que hacer mientras el audio esté en formato digital PCM.

Y mucho menos tiene nada que ver los formatos soportados por tu receptor si le envías PCM, tu receptor no tendrá ningún problema con DTS-ES (de ambos tipos) pero mándaselo tal cual sin decodificar, pasa de Foobar2000 totalmente.

Es evidente que el decodificador de DTS de Foobar2000 no soporta 6.1 discreto.
Si quieres decodificarlo en el PC usa los lav-filter incluidos en mpc-hc.
Pero sigue siendo absurdo si puedes hacer passtrough a tu receptor.

Es verdad, usando MPC no tengo ningún problema, solo quería saber si era posible con foobar porque ya estoy acostumbrado a su interface y justamente por eso tenía la idea de enviar passtrough y usar el foobar simplemente como GUI pero solo conseguía un 5.1 PCM, no hay de otra tendré que quedarme con MPC.

Gracias por aclararme las dudas de algunos conceptos vagos que tenía.