3. Introducción:
Streaming de Vídeo sobre P2P
Objetivo: permitir la distribución de vídeo en tiempo real desde
cualquier lugar del mundo
3
4. Introducción:
Streaming de Vídeo sobre P2P
SOLUCIÓN NEUROCAST
Permite distribuir Vídeo sobre una red P2P
Streaming Multifuente
Topología tipo Mesh
Utiliza el ancho de Banda de N usuarios para
transmitir de forma conjunta
Cliente y Servidor en uno: PEER
4
5. Introducción:
NeuroCast y H.264/SVC
OPTIMIZACIÓN del Sistema de Transmisión utilizando
SCALABLE VIDEO CODING (H.264/SVC)
H.264/SVC permite separar el flujo o bitstream en subflujos o
substreams que podemos repartir en canales NeuroCast. La
combinación de estos subflujos dan lugar a un nuevo flujo que
representa versiones escaladas temporal, espacial y cualitativamente
5
del original
6. Introducción:
Iniciativas Similares
P2P Next
Proyecto Europeo desarollado por diversas Universidades Europeas sobre la TV
sobre IP (IPTV) utilizando H.264/SVC y BitTorrent con un plugin para el navegador
web mediante el reproductor multimedia VLC.
Joost
Iniciativa privada de los fundadores de Skype como medio de difusión de IPTV.
Utiliza H.264/SVC y P2P presentado dentro de un entorno Flash y con el protocolo
RTMFP de Adobe.
Miro
Iniciativa privada OpenSource basada en un sistema de visualización de VOD H.264/
AVC sobre P2P. No es en tiempo Real.
Octoshape
Iniciativa privada muy similar a P2PNext utilizando H.264/AVC y P2P en tiempo real.
Se basa en el uso de un plugin instalable para diversos reproductores habituales (por
ejemplo Windows Media Player). 6
8. Introducción:
Espacio de Color
RGB YUV
RGB: Red – Green – Blue son los colores primarios de la luz. No hay
ningún tipo de compresión. Utilizado por las pantallas CRT, LCD, LED...
iluminan por separado cada componente RGB
YUV: Espacio de color basado en 1 componente de Luminancia y 2
componentes de Crominancia. Codifica una imagen o vídeo en color teniendo
en cuenta la percepción humana ya que somos más sensibles a la
Luminancia que a la Crominancia. YUV = YCbCr
Y = 0,299R + 0,587G + 0,114B
U = 0,492(B − Y)
= − 0,147R − 0,289G + 0,436B
V = 0,877(R − Y)
= 0,615R − 0,515G − 0,100B
8
9. Introducción:
Medidas Objetivas de Calidad
Medidas destinadas a evaluar la correlación entre una secuencia de vídeo y
otra. Si las usamos para comparar la secuencia original y la secuencia
decodificada obtendremos medidas de calidad que sirven para evaluar la
eficiencia del códec de vídeo.
PSNR: Peak Signal to Noise Ratio, cociente entre el valor máximo que
puede haber en una secuencia al cuadrado y el error cuadrático medio de la
secuencia. 2
PSNR=10log
2 n
−1
N
MSE
1 2
MSE=
N
∑ xi−
x
i
EFICIENCIA: depende de la PSNR y del Parámetro de Cuantización (QP) utilizado
9
12. H.264/AVC
Predicción
Intrapredicción Interpredicción
Bipredicción
Lista0 – Lista1
Imágenes de referencia
12
13. H.264/AVC
Transformación
La Transformación consigue que la mayoría de los coeficientes
sean nulos y los que no lo son estén altamente incorrelados.
́
Se utiliza la DCT:
a a a a
b c −c −b
Y=AXAT A=
a −a −a a
c −b b c
1
a=
2
b=
1
2
cos
π
8
c=
1
2
cos
3π
8
13
15. H.264/AVC
Nivel de Red
Network Abstraction Layer Unit (NAL Unit)
Video Coding Layer NAL Unit (VCL NAL Unit)
NonVCL NAL Unit
Access Unit (AU)
15
17. H.264/SVC
Escalabilidad Temporal
GOP: nº de Access Units entre dos Slices tipo I o P.
Niveles Temporales: log 2 GOP 1
17
18. H.264/SVC
Escalabilidad Espacial
Uso de Predicción InterLayer
18
19. H.264/SVC
Escalabilidad de Calidad
(a)Fine Grain Scalability (MPEG4) (b)lleva a errores de decodificación (MPEG2)
(c)Paso intermedio (d)Medium Grain Scalability(H.264/SVC)
19
20. H.264/SVC
Sintaxis NAL Units
NonVCL NAL Units:
Cabecera de la NAL Unit
Información de la NAL Unit
VCL NAL Units:
Cabecera de la NAL Unit
Cabecera de la Slice
Información de la Slice
Cabecera de la NAL Unit en H.264/AVC:
Cabecera de la NAL Unit en H.264/SVC:
20
21. H.264/SVC
Sintaxis NAL Units
Tipos de NAL Units en SVC:
(1) Coded Slice of a nonIDR Picture
(5) Coded Slice of an IDR Picture
(6) Supplemental Enhancement Information (SEI)
(7) Sequence Parameter Set (SPS)
(8) Picture Parameter Set (PPS)
(14) Prefix NAL Unit
(15) Subset Sequence Parameter Set
(20) Coded Slice in SVC Extension
21
22. H.264/SVC
Sintaxis NAL Units
SEI Scalability Info: Coded Slice of a nonIDR Picture:
num_layers_minus1 first_mb_in_slice
layer_id slice_type
dependency_id pic_parameter_set_id
quality_id pic_order_cnt_lsb
temporal_id direct_spatial_mv_pred_flag
frame_height_in_mbs_minus1 mb_skip_run
Coded Slice in SVC Extension:
store_ref_base_pic_flag
ref_layer_dq_id
slice_skip_flag
num_mbs_in_slice_minus1
22
24. Sistema de Transmisión
Demultiplexor
BitStream SVC → DEMULTIPLEXOR → N Canales P2P NeuroCast
Añade Overhead necesario para el multiplexado
Demultiplexado por Tipo de NAL Unit
Demultiplexado por Tipo de Slice
Demultiplexado Híbrido
24
25. Sistema de Transmisión
Multiplexor
M Canales P2P NeuroCast → MULTIPLEXOR → BitStream SVC
Detector de Pérdidas → RoundRobin, analiza el overhead
Buffer de Lectura/Escritura
Concicliación de Errores (Error Concealment)
25
28. Sistema de Transmisión
Multiplexor – Error Concealment
Generación de la nueva NAL Unit:
Aplicación a B Slices por requerimientos de JSVM
Métodos:
Temporal Direct
Frame Copy (no lo usamos)
Motion and Residual Upsampling
Temporal Direct: Motion and Residual
no_inter_layer_pred_flag = 1 Upsampling:
slice_type = 1
no_inter_layer_pred_flag = 0
direct_spatial_mv_pred_flag = 0
slice_type = 1
mb_skip_run = num_mbs_in_slice_minus1
direct_spatial_mv_pred_flag = 1
mb_skip_flag = 1
28
29. Evaluación del Sistema
Escenario CIF: 352x288 píxels, 25 fps
Distribución Escalable del Flujo:
Capa Tipo Dimensiones FrameRate D Q
0 QCIF 176x144 12.5 fps 0 0
1 CIF 352x288 25 fps 1 0
2 CIF 352x288 25 fps 1 1
Elección de los QP's Elección del GOP e IntraPeriod
Capa D Q QP
GOP = 4
0 0 0 28
IntraPeriod = 8
1 1 0 30 Secuencia:
I B B B P B B B I B B B P B B B I... 29
2 1 1 23
30. Evaluación del Sistema
Demultiplexor:
Canal NeuroCast Slice / Capa BitRate (kbps) % del BitStream
0 Capa base (AVC) 81.90 10%
1 I's y P's / (1 0) 200.20 23.1%
2 B's / (1 0) y (1 1) 176.03 20.9%
3 I's y P's / (1 1) 392.27 46%
Podemos conciliar sólo el Canal 2 porque sólo contiene B's
Multiplexor:
Flujo SVC PSNR min BitRate min PSNR max BitRate max
canal0 32.31 dB 81.90 kbps 32.21 dB 81.90 kbps
canal0+canal1+ 36.77 dB 282.11 kbps 39.52 dB 319.60 kbps
canal2
canal0+canal1+ 38.42 dB 674.37 kbps 42.68 dB 850.40 kbps30
canal2+ canal3
32. Resultados
Se ha determinado la mejor opción de distribución de capas escalables en la
codificación del H.264/SVC así como sus parámetros de codificación.
Se ha diseñado e implementado los elementos Demultiplexor y Multiplexor
consiguiendo una adaptación del flujo H.264/SVC a los Canales NeuroCast.
Se ha implementado dos métodos de conciliación de errores consiguiendo
una respuesta de la PSNR muy plana en función de la probabilidad de
pérdidas de un canal.
La diferencia máxima de PSNR es de 10dB's y equivale a una diferencia de
770 kbps utilizando sólo el Canal 0 de NeuroCast o todos.
El Canal 0 puede ser decodificado directamente como H.264/AVC facilitando
la compatibilidad con este tipo de decodificadores muy extendido
actualmente.
32
33. Líneas Futuras
Mejoras en el Buffer de Lectura/Escritura para la implementación en
tiempo real.
Diseñar nuevos métodos de Error Concealment que permitan una
mayor indepencencia en los canales que pueden ser Fiables y los
que no.
Adaptar NeuroCast para que gestione una política de asignación de
anchos de banda de los canales y diversos métodos de protección
frente a errores para garantizar QoS en los canales Fiables.
33