Páginas

jueves, 14 de junio de 2012

Medidas de la TDT en HD

Os dejo las pruebas realizadas por Vicente Navarro:

 La TDT en HD finalmente llegó; y aquellos que se compraron televisores nuevos que la soportaran, la pueden ver. Yo sigo con mi viejo televisor mastodóntico de tubo, que se sigue viendo fenomenal para contenidos de definición estándar. Pero recientemente, un familiar cercano se compró un buen televisor de los modernos, con muchas pulgadas y capaz de sintonizar TDT HD. Y con él, he tenido ocasión de comprobar detenidamente que la calidad de los contenidos en alta definición es notablemente mejor que los contenidos de definición estándar, pero que aún así, hay un abismo con la calidad de una fuente real de HD (como podría ser un Blu-Ray).
Es frecuente leer (HD sin hache, La Alta Definición en la TDT roza la ilegalidad en cuanto a calidad) que el problema de las emisiones de TDT en HD en España es que el bitrate es muy bajo (cuando no es que los contenidos son simplemente contenidos de definición estándar reescalados). He querido demostrar que realmente es así y me he puesto manos a la obra con mi viejo PC con la VIA EPIA SP8000E y sintonizadoraHauppauge WinTV-HVR-1100. Es fácil analizar en Debian las emisiones DVB-T gracias a los paquetes w-scan,dvbsnoop y dvb-tools.
Antes de empezar, conviene aclarar algunos conceptos del estándar DVB-T: En cada canal de radiofrecuencia de 8 MHz de los que tradicionalmente se usaban para la televisión analógica, el estándar DVB-T transmite un flujo de datos digitales (MPEG-TS) de entre unos 5 y 30 Mbps (en España típicamente 20 Mbps), en función de la modulación, codificación y otros parámetros (DVB-T: Available bitrates (Mbit/s) for a DVB-T system in 8 MHz channels). En ese flujo de datos, típicamente llamado múltiplex, se multiplexan en el tiempo varios flujos de datos de vídeo y de audio, permitiendo así que en cada múltiplex viajen varios programas de TV y de radio a la vez. Cada uno de los flujos de vídeo y audio tiene un PID (Program Identification) que lo identifica.
Pasemos ahora a medir el bitrate de los flujos de vídeo de las emisiones de TDT en España. Para usar los siguientes comandos se supone que tenemos una sintonizadora de DVB-T correctamente configurada en un sistema Linux.
Comenzamos usando w_scan para creando una lista de canales disponibles (en formato válido para tzap):
$ w_scan -X -t 2 -c ES > channels.conf
El aspecto del fichero resultante es éste (vemos los dos múltiplex de RTVE):
TVE-HD Pruebas(RTVE):482000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARCHY_AUTO:1001:0:40001
TDP(RTVE):482000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARCHY_AUTO:2001:2002:40002
Radio Clasica HQ(RNE):482000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARCHY_AUTO:0:2010:40005
Radio 3(RNE):482000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_AUTO:FEC_AUTO:QAM_AUTO:TRANSMISSION_MODE_AUTO:GUARD_INTERVAL_AUTO:HIERARCHY_AUTO:0:3010:40006

La 1(RTVE):770000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:101:103:570
La 2(RTVE):770000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:201:203:571
24h(RTVE):770000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:1001:1003:572
Clan(RTVE):770000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:1501:1503:573
Radio Nacional(RNE):770000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:2001:575
Radio 5 Todo Noticias(RNE):770000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:2031:576
Podemos identificar en el primer campo el nombre del programa. En el segundo campo tenemos la frecuencia en Hz del canal. Todos los programas que tienen la misma frecuencia son parte del mismo múltiplex. Los siguientes campos nos informan de los parámetros de transmisión. Vemos que RTVE usa modulación QAM64, coding rate 2/3 yguard interval 1/4, por lo que el bitrate disponible es de 19,906 Mbps (DVB-T: Available bitrates (Mbit/s) for a DVB-T system in 8 MHz channels). Los últimos 3 campos son el PID del vídeo (0 en el caso de las radios), del audio y del teletexto.
Si no usamos la opción -X del comando w_scan, el formato del fichero resultante es diferente (channels.conf de Linux VDR) y permite especificar que una emisión tiene varios flujos de audio (por ejemplo, varios idiomas):
La 1;RTVE:770000:I999B8C23D0M64T8G4Y0:T:27500:101:103=spa,104=qaa:102:0:570:8916:1016:0
A continuación, usamos tzap para sintonizar el canal deseado. A tzap le especificamos el nombre de un programa concreto de los de dentro del múltiplex para que sepa qué canal de radiofrecuencia sintonizar. Pero en realidad, todos los programas del múltiplex son visibles, puesto que los datos de todos los programas viajan juntos.
$ tzap -c channels.conf "TVE-HD Pruebas(RTVE)"
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
reading channels from file 'channels_tzap_tv.conf'
tuning to 482000000 Hz
video pid 0x03e9, audio pid 0x0000
status 00 | signal ffff | snr 8000 | ber 00003fff | unc 00000000 |
status 1e | signal ffff | snr ffff | ber 00000000 | unc 00000000 | FE_HAS_LOCK
En la salida de tzap podemos ver ya el PID del vídeo y del audio (en hexadecimal) de la emisión que nos interesa.
Una primera forma bastante burda de medir el ancho de banda (del audio y del vídeo a la vez) podría ser usar la opción -r de tzap para enviar el flujo de datos a /dev/dvb/adapter0/dvr0, que podemos medir con pv:
$ tzap -r -c channels.conf "TVE-HD Pruebas(RTVE)"
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
reading channels from file 'channels_tzap_tv.conf'
tuning to 482000000 Hz
video pid 0x03e9, audio pid 0x0000

$  cat /dev/dvb/adapter0/dvr0 | pv -r > /dev/null
[ 923kB/s]
Pero es mejor usar el excelente dvbsnoop, utilidad especializada en analizar los flujos DVB. Antes de usardvbsnoop, es necesario tener un canal sintonizado, algo que ya deberíamos estar haciendo con tzap. En tal caso es posible, por ejemplo, ver fácilmente qué flujos de vídeo o audio hay en el múltiplex sintonizado (y sus PIDs en decimal y hexadecimal):
$ dvbsnoop -s pidscan | egrep 'audio|video'
PID found: 1001 (0x03e9)  [PS/PES: ITU-T Rec. H.262 | ISO/IEC 13818-2 or ISO/IEC 11172-2 video stream]
PID found: 2001 (0x07d1)  [PS/PES: ITU-T Rec. H.262 | ISO/IEC 13818-2 or ISO/IEC 11172-2 video stream]
PID found: 2002 (0x07d2)  [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 2010 (0x07da)  [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 3010 (0x0bc2)  [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
que deberían de coincidir con los del fichero channels.conf y con los que nos mostraba la salida de tzap.
Sabiendo el PID del flujo de vídeo de la emisión que nos interesa medir, el dvbsnoop nos permite hacerlo de forma muy sencilla con la opción -bandwidth:
$ dvbsnoop -n 100000 -s bandwidth 1001
dvbsnoop V1.4.50 -- http://dvbsnoop.sourceforge.net/

---------------------------------------------------------
PID bandwidth statistics...
PID: 1001 (0x03e9)   - max packet count: 100000
---------------------------------------------------------
packets read:  43/(43)   d_time:  0.001 s  = 64672.000 kbit/s   (Avrg: 64672.000 kbit/s) [bad: 0]
packets read:  44/(87)   d_time:  0.004 s  = 16544.000 kbit/s   (Avrg: 26169.600 kbit/s) [bad: 0]
packets read:  43/(130)   d_time:  0.010 s  =  6467.200 kbit/s   (Avrg: 13034.667 kbit/s) [bad: 0]
...
packets read:  62/(99891)   d_time:  0.010 s  =  9324.800 kbit/s   (Avrg:  7941.015 kbit/s) [bad: 0]
packets read:  63/(99954)   d_time:  0.010 s  =  9475.200 kbit/s   (Avrg:  7941.826 kbit/s) [bad: 0]
packets read:  63/(100017)   d_time:  0.009 s  = 10528.000 kbit/s   (Avrg:  7943.055 kbit/s) [bad: 0]
## PID: 1001 (0x03e9)   bad/total packets: 0/100017 (= 0.0%)   Avrg:  7943.055 kbit/s
También podemos medir el bitrate del múltiplex completo con:
$ dvbsnoop -n 100000 -s ts -tsraw -s bandwidth
dvbsnoop V1.4.50 -- http://dvbsnoop.sourceforge.net/

---------------------------------------------------------
PID bandwidth statistics...
Full Transponder   - max packet count: 100000
---------------------------------------------------------
packets read: 128/(128)   d_time:  0.002 s  = 96256.000 kbit/s   (Avrg: 96256.000 kbit/s) [bad: 0]
packets read: 128/(256)   d_time:  0.009 s  = 21390.222 kbit/s   (Avrg: 35002.182 kbit/s) [bad: 0]
packets read: 128/(384)   d_time:  0.010 s  = 19251.200 kbit/s   (Avrg: 27501.714 kbit/s) [bad: 0]
...
packets read: 128/(99840)   d_time:  0.009 s  = 21390.222 kbit/s   (Avrg: 19909.753 kbit/s) [bad: 0]
packets read: 128/(99968)   d_time:  0.010 s  = 19251.200 kbit/s   (Avrg: 19908.881 kbit/s) [bad: 0]
packets read: 128/(100096)   d_time:  0.010 s  = 19251.200 kbit/s   (Avrg: 19908.012 kbit/s) [bad: 0]
## PID: <ALL>   bad/total packets: 0/100096 (= 0.0%)   Avrg: 19908.012 kbit/s
Y sabiendo cómo hacerlo, pasemos a medir el bitrate de las emisiones de TV (excuímos las de radio) de los operadores de TDT de ámbito nacional que, en mi zona, se reciben agrupadas así:
Frecuencia (Hz)Emisión
482000000TVE-HD Pruebas(RTVE)
482000000TDP(RTVE)
626000000Boing(Tele5)
626000000Telecinco HD(Tele5)
626000000MTV(TELSON)
626000000Paramount Channel(TELSON)
650000000NITRO(ANTENA3 TELEVISION
650000000Antena3 HD(ANTENA3 TELEVISION)
650000000MARCA TV(MARCA TV)
65000000013 TV(VEOTV)
650000000MundoInteractivo(VEOTV)
674000000Xplora(La Sexta)
674000000laSexta3(La Sexta)
674000000laSexta HD(La Sexta)
674000000Energy(TELECINCO)
674000000Cuatro HD(TELECINCO)
770000000La 1(RTVE)
770000000La 2(RTVE)
77000000024h(RTVE)
770000000Clan(RTVE)
842000000laSexta(La Sexta)
842000000GOL TELEVISION(La Sexta)
842000000laSexta3(La Sexta)
842000000CUATRO(TELECINCO)
842000000DIVINITY(TELECINCO)
842000000LA TIENDA EN CASA(TELECINCO)
850000000Telecinco(TELECINCO)
850000000FDF(TELECINCO)
850000000LaSiete(TELECINCO)
850000000Disney Channel(Disney Channel)
850000000Intereconomia(INTERECONOMIA)
858000000ANTENA 3(ANTENA3 TELEVISION)
858000000NEOX(ANTENA3 TELEVISION)
858000000NOVA(ANTENA3 TELEVISION)
858000000Discovery MAX(Discovery MAX)
858000000AXN(AXN)
Sabiendo las frecuencias y el nombre de las emisiones, es fácil hacer un script que mida el bitrate de todas ellas y el resultado es el mostrado en el gráfico siguiente. En rojo aparece el bitrate del múltiplex completo (incluye vídeo, audio, teletexto y otros flujos). En naranja aparece la suma de los bitrates de los flujos de vídeo (no se cuenta el audio, teletexto, etc.). En verde aparecen los canales de alta definición. En azul aparecen los canales de definición estándar. En ambos casos, únicamente se mide el vídeo (sin el audio).
Nota: Las mediciones se han hecho con un millón de paquetes (-n 1000000).
Algunos comentarios/conclusiones:
  • Las mediciones son de un día y hora en concreto. Me gustaría tener tiempo para medir a lo largo de muchos días, pero me temo que no es así. Por ello, tenemos que tener en cuenta que los bitrates podrían ser distintos en otros momentos dependiendo de las emisiones, pero lo importante es darnos una idea del orden de magnitud del bitrate que llega a nuestras casas.
  • Las emisiones de definición estándar van codificadas en MPEG2. Las emisiones de alta definición van en H.264/MPEG4. H.264 permite más calidad que MPEG2 a igualdad de bitrate a costa de necesitar bastante más potencia de proceso.
  • El bitrate del vídeo de un DVD puede estar entre 4 Mbps y 8 Mbps. Como vemos en la gráfica, las emisiones de TDT de definición estándar, que son MPEG2 como los DVDs, vienen a usar entre 2,5 y 4,3 Mbps. Por tanto,tienen, en el mejor de los casos, calidad equivalente a un DVD de calidad baja-media.
  • No es lo mismo transportar 4 emisiones (no contamos las de radio) en un múltiplex (como por ejemplo ocurre en el múltiplex de RTVE o en el de Tele 5 HD) que transportar hasta 6 emisiones (como ocurre con el múltiplex compartido por La Sexta y Cuatro). ¡Cuantas más emisiones haya en el mismo múltiplex, menos ancho de banda le tocará a cada emisión!
  • El canal TDP de RTVE, que sólo ha de compartir ancho de banda en el múltiplex con TVE-HD es el que mejor bitrate tiene con diferencia, equivalente a un DVD con máxima calidad.
  • El bitrate del vídeo de un Blu-Ray puede llegar a ser de 54 Mbps. El bitrate típico de los ficheros MKV de alta definición 1080p, que suelen tener muy buena calidad, es de alrededor de 10 Mbps. Una cámara de fotos/vídeo moderna como la Sony DSC-HX20V usa 6 Mbps para grabar 720p30, 9 Mbps para 720i50, entre 17 y 24 Mbps para grabar 1080i50 y 28 Mbps para 1080p50. Excepto TVE-HD, que tiene un bitrate superior a 7 Mbps, el resto de emisiones en HD usan entre 4 y 5 Mbps, una calidad notablemente baja. Únicamente TVE-HD tiene un bitrate mínimamente razonable. Por cierto, TVE-HD suele emitir 720p y el resto de emisiones suelen ser 1080i (720p vs 1080i).

2 comentarios:

  1. pa la saca maestro, muchas gracias por la
    info,un saludo.

    ResponderEliminar
  2. Bueno lo de TVEHD era bastante evidente ya que el resto creo que lo que estan haciendo es simplemente reescalar, aunque, la formula 1 por antena 3 habria que medirla ya que pienso que tambien se aumenta la calidad considerablemente

    ResponderEliminar