Permutación de canales de DTS a OggVorbis

Hola, saludos a todos los del foro, les cuento mi duda…

Primero les muestro unos fragmentos de información que he encontrado…

En wikipedia:
http://en.wikipedia.org/wiki/Surround_sound

5.1 Channel Surround (3-2 Stereo) (digital discrete: Dolby Digital, DTS, SDDS, Penteo)

Delivers Five discrete audio channels and 1 LFE channel from a 6 channel source:

* Two channels for speakers at the front—left (L) and right (R).
* One channel for speaker at the center—center (C).
* Two channels for surround speakers at the rear—surround left (LS) and surround right (RS).
* One low-frequency effects channel (LFE).
* Describes the Dolby Digital, Digital Theater System (DTS), and Sony Dynamic Digital Sound (SDDS) systems. Source media, usually DVD and sometimes Laser Disc or satellite/digital cable is often branded with "Dolby Digital" and/or DTS logos.
* Although DTS uses a higher data rate than Dolby Digital, this doesn't mean that the fidelity is higher.

5.1 surround sound may also be referred to as 3-2 stereo. This defines the configuration that has been standardised for numerous surround sound applications. The term 3-2 refers to 3 front speakers and 2 rear speakers.[5]

Placement: 5.1 speaker layouts should conform to the ITU-R BS.775 standard, despite the myth that music and video content require different placements. The ITU standard states that the left and right speakers are located at ±30˚, while the rear speakers should be positioned approximately ±110˚. There is speculation that rear loudspeakers at ±150˚ provide "more exciting surround effects".

En otra pagina el detalle “técnico”:
http://avisynth.org/GetChannel

[5.1 DTS] 	 
Ch1: front center channel 	 
Ch2: front left channel 	 
Ch3: front right channel 	 
Ch4: rear left channel 	 
Ch5: rear right channel 	 
Ch6: LFE 
5.1 DTS: the LFE is on a separate stream (much like on multichannel MPEG2).

Notar que no es lo mismo que por ejemplo este otro:

[5.1 WAV]
Ch1: front left channel
Ch2: front right channel
Ch3: front center channel
Ch4: LFE
Ch5: rear left channel
Ch6: rear right channel

Por último el detalle técnico del codec Vorbis
http://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-800004.3.9

4.3.9  output channel order

Vorbis I specifies only a channel mapping type 0. In mapping type 0, channel mapping is implicitly defined as follows for standard audio applications:
...
six channels
    the stream is 5.1 surround. channel order: front left, front center, front right, rear left, rear right, LFE 
...
Applications using Vorbis for dedicated purposes may define channel mapping as seen fit. Future channel mappings (such as three and four channel Ambisonics) will make use of channel mappings other than mapping 0.

Mi duda es la siguiente, tengo un archivo de vídeo .mkv con audio en formato DTS. Quiero remplazar ese audio por uno en formato OggVorbis (uniendo vídeo y sonido quizás con ‘mkvtoolnix’). En base a la información anterior he de concluir que una vez importado el audio DTS (me lleva como 50 minutos para 3 horas de audio) al exportarlo a un archivo .ogg deberé permutar las 2 primeras pistas… ¿Es esto correcto?..

¿Audacity no permuta las pistas del audio DTS cuando lo exporta y lo convierte internamente a formato PCM?.. notar en lo que puse más arriba que el formato WAV (PCM) tiene distinta distribución que el DTS y por eso no estoy seguro si Audacity reordena las pistas al importar (por que internamente parece que crea archivos temporales en formato pcm o al menos del mismo tamaño) o si respeta el orden…

Yo en este momento no dispongo de un equipo de audio con 6 parlantes y lo único que he podido corroborar es que efectivamente cada track tiene las salidas mencionadas en el formato OggVorbis. Se puede checkear con un pequeño archivo (< 1 mb) .zip con 6 archivos .ogg con el mismo sonido en cada uno pero en distintos tracks (que he subido aquí http://www.mediafire.com/?nmmhenwdjmn). Para hacer esa corroboración con solo dos parlantes tuve en consideración que las 3 salidas de mi placa de sonido son: F-out, R-out, C/LFE y tengo los parlantes stereo conectados a F-out… Probé de sacar el conector de los parlantes de esa salida y ponerla en R-out y luego en C/LFE y los resultados que obtuve usando el mplayer:

F-out: Pista 1 se escucha por la izquierda
       Pista 3 se escucha por la derecha
       (las demás pistas no se escuchan)
R-out: Pista 4 se escucha por la izquierda
       Pista 5 se escucha por la derecha
       (las demás pistas no se escuchan)
C/LFE: Pista 2 se escucha por la izquierda
       Pista 6 se escucha por la derecha
       (las demás pistas no se escuchan)

Sin embargo como no encuentro un encoder para DTS no puedo crear archivos similares codificados con DTS y luego ver si al importarlos con ‘audacity’ les respeta el orden a las pistas… Si se los respeta solo debería permutar los dos primeros al pasarlo a Ogg Vorbis…

Solo eso quiero saber… ¿Audacity respeta el orden de las pistas del audio DTS al importarlo o le da la configuración de un archivo .wav?.. ¿Solo tengo que permutar las dos primeras pistas cuando paso a formato OggVorbis?

Gracias…

Algo “interesante” me ha sucedido, buscaba archivos de audio dts para ver si audacity les reordenaba los canales al importarlos (pasando al mapeo wav/pcm)…

Encontré dos archivos de ejemplo con las mismas características que voy a pasar a describir:
http://pessoal.onda.com.br/rjamorim/stuff/test.dts.zip (archivo .dts)
http://www.steekr.com/n/50-17/share/LNK5447493580da0797a/ (archivo .mkv)

Si reproduzco estos con el ‘vlc’ (el .dts lo tengo que meter en un contenedor .mkv con ‘mkvtoolnix’) configurando el audio para que sea ‘5.1’ parece que las salidas son por los parlantes que corresponde según una voz que se escucha. Como ya dije a mi no me queda otra que ir probando de a pares de salidas conectando mis dos parlantes en las 3 salidas de la placa de sonido, pero al final de cuentas funciona para checkear…

Por otro lado el ‘mplayer’ con la línea:
$ mplayer -channels 6 ARCHIVO

Reproduce por el parlante izquierdo una voz que dice que es el parlante derecho delantero, y por el parlante derecho dice que es el del centro (cuando por ejemplo debería decir que es el parlante delantero izquierdo y el parlante delantero derecho)… Si se presta atención, el el formato dts las salidas delantera derecha e izquierda estarían en las pistas 2 y 3… si uno fuera en un archivo wav/pcm a buscar en las pistas 2 y 3 se encontraría con el audio de la derecha delantera y el centro (justo lo que dice el ‘mplayer’)

Por otro lado al hacer la siguiente conversión:
$ ffmpeg -i ARCHIVO.mkv ARCHIVO.wav

Se obtiene un .wav que al reproducirlo por ‘vlc’ y ‘mplayer’ dice lo que tiene que decir por cada parlante…

A su vez si se importa el audio del .mkv o .dts (o el .mkv obtenido del .dts) mediante el programa audacity se obtienen las pistas de audio con la distribución del formato wav/pcm

A MI SE ME OCURREN 2 POSIBLES ALTERNATIVAS (quizás existan otras)…

  1. Los dos audios obtenidos están con los canales desordenados de origen como si fuera un archivo wav/pcm cuando es un archivo en formato dts (es decir el programa/usuario codificador de origen anda mal en los dos casos). La herramientas que usan la biblioteca ‘ffmpeg’ para codificar a .wav no reacomoda los canales pero como ya están acomodados mal quedan bien al crear un .wav a partir del audio dts (bug con bug se cancelan). El programa audacity no reacomoda las pistas al importarlas y como ya estan ordenadas como si fuera wav/pcm equivocadamente de origen, así queda cuando se la importa. El reproductor ‘vlc’ tiene un bug y reproduce los audios dts como si tuvieran la distribución wav/pcm de pistas/canales. El ‘mplayer’ anda bárbaro y va a buscar las pistas de audio que corresponden pero estas estás desacomodadas y por eso la salida dice algo que no coincide con los parlantes por los que sale… Es más mplayer está hecho por los mismo desarrolladores de los codecs decodificadores ffmpeg que funcionan mal cuando se convierte el archivo pero anda bien cuando lo usa el mplayer…

  2. Los audios están bien, el ffmpeg re-acomoda las pistas al pasar a .wav y consecuentemente como ‘audacity’ usa ffmpeg también re-acomoda las pistas al importar. El reproductor ‘vlc’ anda bien. El mplayer usa ffmpeg para ir decodificando el audio que pasa a formato pcm con lso canales re-acomodados, pero por un pequeño bug interno el mplayer lo va a leer como si no se hubiesen re-acomodado los canales…

La opción (1) exige que muchos bugs y errores coincidan. La opción (2) solo exige una pequeña falla en ‘mplayer’.

Sin embargo para la opción (2) en todo esto hay una vuelta de tuerca más,… si agarro los audios .ogg que había hecho yo (http://www.mediafire.com/?nmmhenwdjmn) y los importo con el audacity, aparecen exactamente en las posiciones de la distribución de canales OggVorbis. Lo cual indica que un audio dts el audacity lo convierte internamente a formato pcm y lo reordena, pero a un audio OggVorbis le respeta el ordenamiento. Osea, no habría un comportamiento igual en un caso u el otro… Lo cual hace dudar un poco…

¿Se da (1) o (2)?