Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Concessione d'autore
Copyleft 2003 by
✔ Le soluzioni commerciali
✔ Le soluzioni Open/Free
✔ Le soluzioni commerciali
✔ Le soluzioni Open/Free
✔ Streaming
Metodo di accesso ai dati multimediali che permette di
riprodurre i contenuti durante il trasferimento
✔ Flusso vs File
Nessun file da scaricare
Fruizione istantanea
✔ Applicazioni MoIP
Multimedia Over IP
Elaborazione real-time
Throughput
✔ Una possibile tassonomia
Stored Multimedia
Live Broadcast Multimedia
Interactive Multimedia
✔ Commutazione di pacchetto
✔ Servizio Best-effort
✔ Perdita di pacchetti
✔ Incertezze temporali
Delay
Jitter
✔ Modifiche all'architettura
IntServ e DiffServ
✔ Modifiche all'infrastruttura
Banda Larga
Aumentare la potenza dei router
✔ Modifiche nelle applicazioni
Buffer di Playout
Controllo di Flusso
Tecniche di recupero degli errori
Cambio di codifica dinamico
Thursday, April 22, 2004 Internet Media Group 8
Una introduzione allo streaming
Soluzioni – Buffer di Playout
Pacchetti
Sorgente Destinazione
Pacchetti
persi
t = istante di spedizione
d = istante di ricezione
p = istante di inizio riproduzione
b = istante di inizio riproduzione ritardata
b - p = dimensione del buffer di playout
Tempo
t d p b
✔ Codec multimediali
Qualità diversa a parità di bitrate
Bitrate diverso a parità di qualità
✔ Application Data Unit (ADU)
Elaborazione indipendente
Application Level Framing e Integrated Layer Processing
✔ Adattatività allo stato della rete
Necessità di un feedback del player verso il server
✔ Clark e Tennenhouse
“Architectural Consideration for a New Generation of
Protocols”, 1990, SIGCOMM Symposium on
Communications Architectures and Protocols
✔ Equivalente a Joint Source-Channel
Coding
✔ Architettura vs. implementazione
Due concetti ortogonali
La progettazione a strati può essere un collo di bottiglia
✔ Carico computazionale
Manipolazione dei dati >> operazioni di trasferimento
✔ Presentazione dei dati
Gestita direttamente a livello applicazione
✔ Application Data Unit
Simbolo interpretato in parallelo
✔ Integrated Layer Processing
✔ Ridondanza
Forward Error Correction
Interleaving
✔ Ritrasmissione
✔ Mascheramento delle perdite
Interpolazione
Ripetizione
Tecniche avanzate
Encoder Server
Net Client
Feedback
✔ Encoder
Codifica Real-time
Diverse richieste
Duplicazione dello stream in più formati
Diversi input
File
Telecamera, microfono, ecc.
✔ Server
Gestione delle connessioni
Pacchettizazione
Ascolto stato della rete
Negoziazione delle capabilities
✔ Client
Ricezione, decodifica, riproduzione
Spedizione statistiche
Negoziazione delle capabilities
✔ Le soluzioni commerciali
✔ Le soluzioni Open/Free
Accesso ai contenuti
Gestione delle sessioni
✔ Real-time Transport Protocol (RTP)
Trasporto dei dati multimediali real-time
✔ RTP Control Protocol (RTCP)
Controllo del trasporto (statistiche sulla qualità)
✔ ISO MPEG
MPEG-1, MPEG-2, MPEG-4
MP3, DVD, DivX
✔ ITU-T H.xxx
H.323, H.263, H.264
Microsoft NetMeeting, GnomeMeeting
✔ 3GPP/ETSI
GSM
✔ Xiph.org Foundation
OGG-Vorbis, OGG-Tarkin, Theora
Thursday, April 22, 2004 Internet Media Group 21
Roadmap
✔ Le soluzioni commerciali
✔ Le soluzioni Open/Free
✔ RealNetworks
✔ Windows Media Player
✔ Apple Quicktime
✔ RealNetworks
Supporto parziale protocolli IETF
Documentazione
✔ Windows Media Player
ASF File Format (brevettato)
Nessun supporto protocolli IETF
✔ Apple Quicktime
Supporto parziale protocolli IETF
“Hinted” file format / encoder non standard
✔ Le soluzioni commerciali
✔ Le soluzioni Open/Free
✔ RealNetworks
Helix Iniziative (RPSL)
Standardized APIs... Single Solution... Application
Development
✔ Apple Quicktime
Darwin Streaming Server (APSL)
Industrial strength performance... Engaging ease of use
✔ Le soluzioni commerciali
✔ Le soluzioni Open/Free
✔ Sito Web
http://streaming.polito.it
✔ Mailing list
omsp-developers@gemelli.polito.it
omsp-bugsreport@gemelli.polito.it
omsp-announce@gemelli.polito.it
✔ CVS/Subversion
https://gemelli.polito.it/svn/{nemesi-dev,mess}
https://gemelli.polito.it/viewsvn
✔ Protocolli IETF
✔ Codec multimediali open/non proprietari
G. Mancini, Marco Penno, Federico Ridolfo, F. Varano
✔ RTSP, RTP/RTCP compliant
✔ Tecniche avanzate
Cambio di codifica dinamico
Process Pooling
✔ Righe di codice
12867 righe di codice in linguaggio ANSI C
✔ Numero di file
33 file sorgenti
✔ Compilazione
AutoTools
✔ CVS/Subversion
https://gemelli.polito.it/svn/mess/trunk
✔ Moduli
Rtsp (rtsp.c, messages.c)
Rtp (rtp.c)
Rtcp (rtcp.c)
Sdp (sdp.c)
Physical (phy.c)
Media entry (media_entry.c)
Scheduler (schedule.c, eventloop.c)
Mplayer + Live.com
VideoLan Client
Real One
Quicktime (sperimentale)
✔ Supporto sperimentale di trasmissioni
live
✔ Architettura modulare
Astrazione delle risorse
Insieme di interfacce
Modulo
trasversale
RTSP strato 3
SD RTP RTCP SDP Adaptive Rate Module strato 2
Livello Fisico strato 1
Media Entry
Processo A
Processo A Processo B
1 2 3 4 1 2 3 4 5 6 7
stream stream
default_presentation file_name BlackHoleSun.gsm-flo
file_name BlackHoleSun.mp3 payload_type 108
payload_type 96 clock_rate 8000
clock_rate 90000 audio_channels 2
audio_channels 2 encoding_name GSM
encoding_name MP3 sample_rate 8000
sample_rate 44100 coding_type frame
coding_type frame frame_len 0
frame_len 1152 pkt_len 20
stream_end stream_end
Frame corrente (riavvolgere il flusso)
Frame successivo (salto nella riproduzione)
Frame vicino con minore scarto (ottimale)
GSM-AMR 20
MP3 26.1
Giampaolo Mancini, Francesco Varano
Marco Penno
✔ RTSP, RTP/RTCP fully compliant
✔ Interfaccia grafica
✔ Tecniche avanzate
Cambio di codifica dinamico
Buffer di playout di sistema
✔ Righe di codice
47510 righe di codice in linguaggio ANSI C
✔ Numero di file
230 file sorgenti (un file per funzione)
✔ Compilazione
Autotools, Makefile
Dipendenze: LibSDL, LibAVCodec (FFMpeg), LibTool
✔ CVS/Subversion
https://gemelli.polito.it/svn/nemesi-dev/trunk
✔ Multithreading
Una directory per thread
✔ Plug-in
✔ Decodifica basata su LibAVCodec
Molte codifiche supportate
Prestazioni ottime
✔ Output multimediale basato su LibSDL
Simple Direct Layer
✔ Thread di esecuzione
Interfaccia utente
Controllo delle sessioni (RTSP)
Ricezione dei dati (RTP)
Controllo di flusso (RTCP)
Decodifica
Presentazione SDL
Audio
Video
Pacchetti fuori sequenza
Validi se arrivati prima dell'istante di decodifica
GSM Data
PCM
AAC
✔ Gestione statica
Nessuna allocazione dinamica per i dati
Scelta ottima in termini di velocità
✔ Buffer pool
Zona di memoria pre-allocata
API per la gestione degli slot
✔ Nessuna copia di ADU a livello utente
Una copia alla ricezione (read() dal socket)
Una copia per la riproduzione (write() sull'uscita)
✔ Decodifica real-time
✔ Granularità temporali comparabili
Time-slice dello scheduler nel kernel: 10ms
Time-slice RTP: 20ms
✔ Timer di sistema impreciso
select()
L'imprecisione aumenta con il carico di CPU
✔ Code dati di dimensioni ridotte
Scheduler interno all'applicazione
Buffer della scheda audio/video
Coda di dati decodificati (dimensioni ridotte)
✔ Timestamp Scheduling
Schedulazione basata sul timestamp RTP
Recupero implicito dei ritardi
✔ Fast Cycles Scheduling
Nessun ciclo di “busy waiting”
Recupero dei ritardi
Feedback sulla coda di playout di sistema
✔ Audio:
MP3: VBR qualità CD (44.1KHz, 16 bit, stereo)
GSM-AMR: VBR qualità voce (8Khz, 16 bit, mono)
PCM-lineare: CBR qualità voce
✔ Video:
MPEG-1 Video
✔ Tutti i codec libavcodec (FFMpeg)
MPEG-1/2, MPEG-4, H.26x
Windows Media Video, Real Video, Sorenson
AC3, AAC, Ogg Vorbis
Thursday, April 22, 2004 Internet Media Group 60
Il progetto Open Media Streaming
NeMeSI – libavcodec
✔ Primitive (API)
int decode(data, data_len, context);
int get_plugin_pt(void);
✔ Convenzione sul formato d'uscita
✔ Aggiunta
Codice sorgente nell'albero di NeMeSI
Libreria dinamica esterna già compilata
Punto di accesso a risorse multimediali
Front-end di rete
Gestore dei servizi
Flusso di byte vs. flusso di pacchetti
Generatore di pacchetti con caratteristiche real-time
✔ Supporto di metadati
Gestione delle licenze Creative Commons
“Digital Rights Management”
✔ Interfaccia utente DVD-like
MPEG-4
Accesso per capitoli, scene
Supporto multilingue
Sottotitoli
Information
Wants To Be
Free
Thursday, April 22, 2004 Internet Media Group 67
FINE
DEMO
WLAN: SSID=Medialab
Dynamic IP: DHCP
http://192.168.1.1
http://streaming.polito.it
omsp-developers@gemelli.polito.it
omsp-bugsreport@gemelli.polito.it
omsp-announce@gemelli.polito.it