Scarica Fondamenti di informatica e più Sintesi del corso in PDF di Teorie e tecniche della comunicazione multimediale solo su Docsity! lOMoARcPSD|2805715 M. Furini, Comunicazioni multimediali. Fondamenti di informatica per la produzione e gestione di flussi audio-video nella rete Internet. lOMoARcPSD|2805715 Riassunto Comunicazioni Multimediali – Marco Furini. Cap. 1 Lo scenario digitale La comunicazione multimediale fa ormai parte di ogni aspetto della nostra vita per due motivi: • Progressi scientifico-tecnologici. Sono stati sviluppati software che consentono di produrre comunicazioni multimediali in modo semplice. Inoltre lo sviluppo delle reti ha reso possibile l’utilizzo di materiale multimediale difficilmente utilizzabile nelle reti in passato. • Efficace integrazione di diversi media. L’utilizzo di diversi media per comporre un messaggio ne aumenta la possibilità che questo sia ricordato, in quanto il nostro ricordare coinvolge diversi stimoli sensoriali. Studi hanno dimostrato che di un audio ricordiamo circa il 30%, ma se abbiniamo all’audio un’immagine o un video, la percentuale diventa 50%. Per produrre una corretta forma comunicativa multimediale ogni diverso media deve essere analizzato sotto i seguenti aspetti: • Percezione. Il modo con cui l’essere umano percepisce le informazioni contenute nel flusso informativo (se ascoltiamo un audio il nostro cervello è in grado di capire se si tratta di una canzone, voce o rumore). • Rappresentazione. Come avviene la rappresentazione delle informazioni multimediali all’interno dei computer (analogico → digitale). La rappresentazione digitale varia a seconda dei media (i colori sono codificati diversamente dal testo). • Presentazione. Sapere dove la comunicazione verrà presentata è di fondamentale importanza per la produzione di un’efficace comunicazione multimediale (TV, smartphone, cinema, volantino) • Memorizzazione. È importante sapere la quantità di memoria necessaria per memorizzare la comunicazione multimediale e dare la giusta dimensione (KyloByte, MegaByte) al prodotto finale. • Trasmissione. È importante considerare le diverse tipologie di rete in modo da ottimizzare la distribuzione attraverso la rete internet (adsl, fibra ottica) Rappresentazione Le informazioni per essere gestite da un computer devono essere rappresentate con una modalità basata sull’utilizzo di bit. Il bit assume solo due valori: 0 e 1. Le persone utilizzano il sistema di numerazione posizionale in base 10, detto anche sistema di numerazione arabico. Questo sistema è posizionale perché a seconda della posizione delle cifre, esse assumono un valore diverso (901 la cifra 1 vale un’unità, 910 la cifra 1 vale una decina o 10 unità). Nei computer, come abbiamo detto si utilizza un sistema di numerazione posizionale in base 2, o binario. Per trasformare un numero binario in decimale utilizziamo la formula: numero decimale = x*2n, dove n è la posizione (che parte dallo 0 e non da 1). Esempio: 101 in decimale sarà 1 x 20 + 0 x 21 + 1 x 22 = 1 + 0 + 4 = 5. Con un solo bit possiamo definire due stati, ad esempio 0 = spento e 1 = acceso. Per definire più stati dobbiamo utilizzare sequenze di bit. Con due bit potremmo rappresentare quattro variabili (00, 01, 10, 11). La regola stabilisce che per calcolare il numero di variabili rappresentate usiamo la formula 2n, dove n è il numero di bit utilizzati. Quindi con una sequenza di 2 bit avremo 4 stati, con 3 bit 8 stati, 4 bit 16 stati, 5 bit 32 stati, e così via. Introduciamo ora il termine byte, che altro non è che una sequenza di bit. Bit e byte, e i loro multipli, sono le unità di misura per descrivere grandezze digitali. Esiste una distinzione riguardo questo ordine di misura, rappresentata nella tabella sottostante Multiplo Valore SI (sistema internazionale) Valore ICT (information and communication technology) Kilobyte KB 1000 byte 1024 byte lOMoARcPSD|2805715 Il modello RGB (Red, Green, Blu) utilizza questi tre colori per rappresentare ogni possibile colore percepibile. È un modello additivo in quanto i colori sono rappresentati da somme di rosso, verde e blu, ed è stato ispirato dall’occhio umano in quanto i suoi coni si differenziano proprio in base a questi tre colori. È principalmente usato in dispositivi elettronici (monitor, TV). Ogni colore è rappresentato dalle tre componenti separate, indicate da un valore a 8 bit, quindi da 0 a 255. Ad esempio il bianco, che è la somma di rosso, verde e blu sarà 255, 255, 255, il nero 0, 0, 0, il verde 0, 255, 0, uno dei tanti grigi 130, 130, 130. Il modello CMYK (Cyan, Magenta, Yellow, Black) è stato sviluppato per la gestione dei colori nei processi di stampa. Usa quattro componenti: ciano, magenta, giallo, nero in maniera sottrattiva. Ogni componente è sempre rappresentata da 8 bit, quindi con un numero che va da 0 a 255. Questo modello considera la parte di luce riflessa e non quella assorbita dalla superficie colpita dal raggio di luce. Ad esempio se vediamo stampato il colore rosso è perché la superficie ha assorbito il colore ciano (verde + blu = ciano). Se invece fosse stato assorbito il magenta (blu + rosso) avremmo avuto il colore verde, mentre se fosse stato assorbito il giallo avremmo avuto il blu. Il modello HSV (Hue, Saturation, Value) è stato sviluppato pensando a caratterizzare i colori per il sistema visivo umano. Hue (tonalità) indica la lunghezza d’onda dominante e assume un valore da 0 a 360, dove 0 rappresenta il rosso, 120 il verde, 240 il blu, 360 ancora il rosso. Saturation (saturazione) indica quanto il colore è vicino al colore puro. Value (valore) indica il grado di luminosità del colore, ovvero quanto un colore è vicino al bianco o al nero. Nel image editing è spesso possibile caratterizzare i colori mediante questo modello. Il modello YUV definisce i colori in base a una componente luminosa (Y) e due cromatiche (UV). Questo modello veniva utilizzato prevalentemente per la gestione dei colori nei segnali televisivi analogici. Così nei programmi in bianco e nero si poteva utilizzare solo la componente luminosa Y, mentre le due componenti cromatiche sono la differenza dal colore blu (B-Y=U) e dal rosso (R-Y=V). È stata fatta questa scelta riguardo le componenti cromatiche per risparmiare banda di trasmissione. Anziché trasmettere i segnali nel formato RGB, si trasmettono i segnali convertiti nel formato YUV e la conversione avviene con lo standard CCIR 601 che definisce come le componenti YUV sono derivate dal RGB. Il modello YCbCr è simile al modello YUV, ma è utilizzato nel digitale, come nella compressione di immagini o video. Utilizza una componente luminosa (Y) e due cromatiche (Cb e Cr). Anche i questo caso le componenti cromatiche sono rappresentate come differenza dal colore blu (Cb-Y) e dal rosso (Cr-Y). I valori delle tre componenti si possono derivare dai valori RGB utilizzando lo standard CCIR 601. Tipi di immagini La gestione software delle immagini prevede due tipologie: vettoriale e bitmap. Le immagini vettoriali non esistono in natura, sono molto utilizzate nella computer graphics e nel disegno geometrico (CAD). Sono descritte mediante combinazioni di elementi geometrici (linee, cerchi, quadrati), dove ogni elemento è definito da vettori che specificano origine, direzione, verso e lunghezza. Possono essere ridimensionate senza nessuna perdita di qualità, non occupano un grosso spazio in memoria, sono facilmente convertibili in bitmap, sono quasi sempre legate a uno specifico programma e rappresentano difficilmente immagini di tipo realistico. La particolarità di queste immagini consiste nel poter modificare ogni singolo elemento che compone l’immagine senza alterare gli altri. Le immagini bitmap rappresentano immagini del mondo reale e sono ottenute con dispostivi fotografici o scansioni. Sono formate da griglie di punti detti pixel. Se ridimensionate perdono di qualità, occupano grosso spazio in memoria, non sono facilmente convertibili in vettoriali. Sono rappresentate all’interno di un computer da una matrice tridimensionale di elementi, dove la griglia XY rappresenta la dimensione, o risoluzione, dell’immagine, mentre l’asse Z rappresenta la profondità del colore, cioè il numero di bit utilizzati per rappresentare i colori. Nella gestione di un’immagine bitmap bisogna considerare i seguenti parametri: lOMoARcPSD|2805715 • Risoluzione. Dimensione della griglia XY. Non esiste una risoluzione fissa o ideale, dipende dalla scelta che facciamo quando acquisiamo l’immagine. A parità di dimensione d’immagine, quella con la risoluzione più alta sarà più definita, in quanto la griglia XY sarà composta da più pixel, mentre nel caso contrario noteremo lo “sgranarsi” dell’immagine, ovvero la presenza di tanti quadratini che compongono l’immagine. • Aspect ratio. Rapporto tra larghezza e altezza di un’immagine (rapporto X/Y). Normalmente abbiamo rapporti di 4/3, ormai obsoleto, e 16/9, più moderno, ma ormai superato dal 18/9 o 2/1. • Profondità di colore (o di pixel). Il numero di bit, che equivale alla profondità di Z, utilizzati nella rappresentazione dei colori. Nelle immagini colorate si usa solitamente una profondità di colore pari a 24 bit per ogni pixel, mentre in quelle in bianco e nero si usano 8 bit. • Qualità. La qualità dipende dal numero di pixel che compongono la griglia XY e dalla scala di colori Z. Maggiore è il numero di pixel maggiore sarà la qualità dell’immagine. Infatti una macchina fotografica a 20 Megapixel produrrà immagini migliori di una a 2 Megapixel. • Spazio di memoria. Maggiore è la qualità di un’immagine, e quindi il numero di pixel, maggiore sarà lo spazio che richiede per essere archiviata. Ad esempio un’immagine di risoluzione 1920x1080 avrà una certa dimensione nel caso di una profondità di colore a 8 bit, mentre un’altra dimensione a profondità a 24 bit. Calcoliamo le dimensioni. Nel primo caso sono 1920x1080x8 pixel quindi 16588800 bit che corrispondono a 1,98 MegaByte, mentre nel secondo caso 1920x1080x24 sono 49766400 bit che corrispondono a 5,93 MegaByte. Il problema della dimensione si pone, più che nell’archiviazione, nella trasmissione internet. Una pagina web con immagini di grosse dimensioni impiegherà molto tempo ad aprirsi. • Trasmissione. Abbiamo già visto che esistono diversi tipi connessioni ad internet ed in particolare esse differiscono per la velocità. Supponiamo che due utenti debbano visitare un sito in cui è presente un’immagine di dimensioni di 49766400 bit. Il primo utente dispone di una connessione a 20 Mbps, mentre il secondo ha una connessione a 56 Kbps. Dopo quanto tempo visualizzeranno l’immagine? Applichiamo la formula: dimensione immagine / velocità di connessione, quindi il primo utente scaricherà la foto in 49766400 bit / 20000000 bit/s = 2.5 secondi circa, mentre il secondo utente scaricherà l’immagine in 49766400 bit / 56000 bit/s = 888 secondi circa che corrispondono a 15 minuti circa. • Visualizzazione. La scelta della risoluzione dovrebbe dipendere dal dispositivo sul quale si vuole far visualizzare l’immagine. La scelta della risoluzione è a discrezione di chi produce l’immagine, ma bisogna tenere conto di una regola: la risoluzione dell’immagine dovrebbe essere almeno pari alla dimensione della griglia del dispositivo. Ogni schermo supporta una propria risoluzione. Uno schermo Full-HD ha una risoluzione di 1920x1080, mentre uno HD ha una risoluzione di 1280x720. Nel caso in cui, per esempio, volessimo produrre un’immagine per uno schermo HD la risoluzione che dovremo scegliere non dovrà essere inferiore a 1280x720. Questa immagine a risoluzione 1280x720 non verrà visualizzata in maniera ottimale su uno schermo Full-HD. Una buona comunicazione dovrebbe produrre diverse dimensioni di una stessa immagine. Di seguito trovate una tabella con le risoluzioni di vari dispositivi. Formato dispositivi Risoluzione HD 1280x720 Full-HD 1920x1080 Super HD (4K) 4096x2160 Ultra HD (8K) 7680x4320 Cap. 3 Il segnale audio lOMoARcPSD|2805715 Il suono come fenomeno fisico Il suono viene generato dalla vibrazione di materia. Queste vibrazioni producono onde che propagandosi in un mezzo trasmissivo, come può essere l’aria, colpiscono oggetti che incontrano facendoli vibrare. Quando le onde raggiungono il nostro sistema uditivo, questo le trasforma in impulsi che permettono al nostro cervello di percepire le onde come suono. La materia che vibra (corda di chitarra) viene chiamata sorgente sonora, mentre le onde che trasportano il suono sono chiamate onde sonore. L’energia delle onde sonore è proporzionale alla forza con la quale vibra la materia. I suoni possono essere composti da varie onde sonore. Quelli composti da una solo onda sono detti suoni puri e sono generati da strumenti di laboratorio o da strumenti progettati appositamente (diapason). L’ampiezza è la distanza massima raggiunta dalla materia rispetto alla posizione di equilibrio. Il tempo necessario per fare un’oscillazione completa di chiama periodo ed è espresso in secondi. L’inverso del periodo fornisce il numero di oscillazioni al secondo, detto frequenza misurata in Hertz (Hz). Un’altra caratteristica delle onde è la velocità di propagazione nel mezzo trasmissivo: nell’aria è di 340 m/s, nell’acqua 1480 m/s, nel vetro 5700 m/s, ma la velocità di propagazione può essere influenzata dalla temperatura del mezzo trasmissivo. Normalmente i suoni reali non sono puri e sono quindi composti da una moltitudine di onde sonore. Per sapere quali onde compongono un suono è necessario fare un’analisi spettrale del suono. Una volta identificate le onde è possibile studiare il segnale mediante la trasformata di Fourier, che individua le componenti di frequenza di un segnale, ovvero individua le singole onde che compongono l’onda sonora Ampiezza del segnale L’ampiezza di un’onda sinusoidale indica il massimo spostamento della sorgente sonora dalla posizione media di equilibrio. Dato che lo spostamento della pressione atmosferica è troppo piccolo (millesimi di millimetro) si utilizza il parametro SPL (Sound Pressure Level), parametro che rappresenta la pressione sonora dell’aria e che viene misurato considerando la variazione media della pressione rispetto alla pressione atmosferica. La quantità di SPL si calcola su scala logaritmica ed è data dalla formula: SPL = 20log(x/y), dove x è la pressione del suono da misurare e y è la pressione del suono di riferimento. L’unità di misura è il Decibel (dB). L’ampiezza è direttamente correlata alla percezione dell’intensità di un suono → più è grande l’ampiezza più sarà grande il suono in dB. Siccome la membrana del nostro sistema uditivo vibra quando incontra un onda sonora, le vibrazioni provocate da suoni oltre i 120 dB possono essere dannose, oltre a provocare dolore fisico. Frequenza del segnale lOMoARcPSD|2805715 stereofonico, nel caso di suono mono 1 canale). Il bitrate sarà di: 44100 Hz x 16 bit x 2 = 1411200 bit al secondo, ovvero 1,35 Mbps. Conversione digitale-analogica L’operazione di conversione da segnale audio digitale a analogico è effettuata dal decodificatore, un componente che legge i singoli valori del segnale campionato e li trasforma in impulsi elettrici. Cap. 4 Il video Il video come fenomeno fisico Tutti i video sono realizzati mettendo in sequenza una determinata serie di immagini che scorre a una certa velocità. Noi percepiamo i movimenti e non le immagini statiche, perché il nostro cervello viene ingannato dalla velocità con la quale sono visualizzate le singole immagini. La velocità è stabilita in base a una specifica caratteristica del sistema visivo umano: la persistenza della visione. La persistenza della visione è un fenomeno che si verifica quando osserviamo qualcosa. Consiste nel fatto che il nostro occhio ricorda per un breve istante quello che abbiamo visto. Ricordiamoci che le immagini, prima di passare al nervo ottico, si formano sulla retina e ci rimane impressa per circa 40 – 50 millesimi di secondo. Il video sfrutta questa caratteristica della retina facendo scorrere immagini molto simili fra loro a non più di 40 – 50 millisecondi di distanza tra una e l’altra (20 – 25 immagini o frame al secondo, da qui il termine FPS, Frame Per Secondo). È importante che le immagini sia molto simili l’una con l’altra per avere l’effetto di movimento. Dispositivi di visualizzazione Ogni video viene riprodotto su uno schermo. L’immagine del video viene generata sullo schermo attraverso una griglia composta da M linee orizzontali e N linee verticali. Le caselle individuate tramite la divisione della griglia MxN sono i pixel. Schermi CRT (Cathode Ray Tube) Gli schermi CRT o a tubo catodico utilizzano una griglia MxN di punti per visualizzare le immagini. Ogni punto è composto da tre diversi fosfori, elementi chimici che si illuminano nel momento in cui vengono colpiti da un fascio di elettroni. I tre diversi fosfori corrispondono al rosso, verde e blu. Un fosforo colpito da un fascio di elettroni emette luce per circa 15 – 20 ms. l’intensità della luce dipende dalla forza con la quale è stato colpito, di conseguenza variando la forza con la quale vengono colpiti fosfori si possono generare tutti i colori percettibili dal sistema visivo umano. Ovviamente la scelta dei pixel da colpire non è casuale, ma ogni fascio di elettroni colpisce i punti da sinistra a destra, dall’alto verso il basso. Quando il fascio di elettroni ha completato una riga si sposta su quella sottostante a sinistra. In questa fase non colpisce nessun punto, quindi si muove più velocemente. Il periodo destra – sinistra pende il nome di horizontal blanking period. Quando il fascio raggiunge l’ultimo punto in basso a destra torna all’inizio, cioè il punto più in alto a sinistra. Il periodo dello spostamento da in basso a destra a in altro a sinistra si chiama vertical blanking period. Dato che i fosfori rimango visibili per 15 – 20 ms bisogna che il fascio di elettroni colpisca in continuazione i fosfori per evitare che il pixel si spenga. Questa operazione si chiama refresh dello schermo. Se la frequenza di refresh scende sotto i 50 Hz, l’occhi umano percepisce uno sfarfallio dell’immagine, detto effetto flicker. Per ottenere una buona visibilità sugli schermi CRT non bisognerebbe quindi fermarsi a 20 – 25 FPS, ma avere una riproduzione a minimo 50 FPS, per evitare appunto l’effetto flicker, ma ciò comporta una maggior richiesta di banda di trasmissione del segnale video. Per risolvere questo problema si è introdotto l’interlacciamento. Questa nuova tecnica consiste nel dividere ogni singola immagine in due parti, una con le righe pari, una con le righe dispari dell’immagine e visualizzare questi semi-frame in maniera alternata. Questo consente di avere un filmato a 25 FPS e una generazione di 50 (semi)FPS sullo schermo. Schermi LCD (Liquid Crystal Display) Lo schermo LCD è formato da una griglia di cristalli liquidi, una particolare sostanza il cui stato fisico è a metà tra solido e liquido. Questa sostanza è formata da tante piccole “bacchette o filamenti” che sono lOMoARcPSD|2805715 orientabili attraverso lo stimolo di un campo elettrico. Ponendo dietro questa griglia una sorgente luminosa e variando il campo elettrico si può influire sulla quantità di luce che passa attraverso la griglia. Ad esempio se non c’è campo elettrico le bacchette rimangono in una posizione tale da bloccare il passaggio della luce e viceversa. La visualizzazione delle immagini è basata sul modello di colori RGB e ogni punto dello schermo è diviso in tre sotto-elementi, a ognuno dei quali viene applicato un filtro rosso, verde o blu. Variando il campo elettrico di questi sotto-elementi si può controllare la quantità di luce che passa, quindi determinare il colore finale di ogni pixel della griglia. Tipologie di video Video analogico Il segnale del video analogico dipende da un’onda, contenente informazione relative alle immagini, le cui caratteristiche dipendono dalle norme stabilite nei vari paesi. In particolare nel mondo ci sono tre principali standard: NTSC, PAL e SECAM. Nessuno di questi standard utilizza il modello RGB, ma una combinazione di una componente luminosa e due cromatiche, scelta obbligata per mantenere la compatibilità con le televisioni in bianco e nero. • NTSC (National Television System Committee). Standard sviluppato negli Stati Uniti negli anni 40/50. Prevede la presenza di 525 righe, delle quali solo 480 sono visibili (le rimanenti sono utilizzate per altre informazioni come i sottotitoli), e stabilisce il rapporto XY a 4:3, cioè il video avrà una risoluzione di 640x480. La frequenza di visualizzazione delle immagini è di 30 fps (in realtà 29,97 Hz) e la gestione dei colori è basata sul modello YIQ (variazione di YUV). Il sistema NTSC si è diffuso nell’America del nord, America centrale e in qualche zona dell’asia. • PAL (Phase Alternative Line). Standard sviluppato in Germania tra anni 50/60. 625 righe delle quali solo 576 sono visibili. Rapporto della griglia XY pari a 4:3, cioè il video ha una risoluzione di 768x576. La frequenza di visualizzazione delle immagini è di 25 fps e la gestione dei colori è basata sul modello YUV. Sistema diffuso in Europa (Francia esclusa), molte zone dell’Africa, dell’Asia e del sud America. • SECAM (Sequental Couleur avec Memoire). Sviluppato in Francia negli anni 50/60. 625 righe delle quali solo 576 sono realmente visibili. Rapporto XY di 4:3, cioè risoluzione video di 768x576. Frequenza di 25 fps e gestione dei colori basata sul modello YDbDr (variazione di YUV e YIQ). Sistema diffuso in Francia, molte zone dell’Africa e dell’Asia. Si differenzia dal PAL per una diversa modalità di rappresentazione dei colori. Video digitale Anche nel digitale esistono modelli che stabiliscono come deve essere fatta la digitalizzazione della sequenza di immagini che compongono il video. • Formato 4:4:4. Modello che considera ugualmente importanti le tre componenti che compongono il segnale video. Per ogni punto dell’immagine si campiona la componente luminosa Y e le due componenti cromatiche Cb e Cr. La profondità dei colori è 8 bit (successivamente 10 bit). Bitrate molto elevato. Ad esempio con immagini di 768x576 il bitrate è di 325 Mbps se il video è codificato a 30 fps, oppure 270 Mbps se il video è a 25 fps. Per memorizzare un film di due ore serverebbero circa 243 GB, cioè uno spazio di archiviazione troppo alto e l’impossibilità di poter trasmettere il video. • Formato 4:2:2. Definito nella Recommendation CCIR-601 (divenuto poi Recommendation ITU-R BT 601) è stato sviluppato per l’utilizzo del segnale video all’interno di studi televisivi. La componente luminosa Y e le due componenti cromatiche Cb e Cr vengono campionate con frequenze diverse sfruttando il fatto che la componente luminosa è più importante delle componenti cromatiche. In particolare il segnale luminoso viene campionato a una frequenza doppia rispetto a Cb e Cr, sono utilizzati 8 bit per la profondità del colore (successivamente 10 bit). Y viene campionato per ogni punto, mentre Cb e Cr sono campionate ogni due punti. Se consideriamo un video con risoluzione lOMoARcPSD|2805715 pari a 768x576 e 30 fps abbiamo un bitrate di circa 216 Mbps (195 GB per un film di due ore). Come prima spazio di archiviazione troppo alto e impossibilità di poter trasmettere il video. • Formato 4:2:0. Derivante dal 4:2:2 e sviluppato per il broadcast televisivo. Y è campionata ad ogni punto, Cb e Cr sono campionate ogni due punti a righe alternate, cioè in una riga saranno campionati Y ogni punto e Cb ogni due, nella riga sotto saranno campionati Y ogni punto e Cr ogni due. Il bitrate è di 162 Mbps (146 GB per un film di due ore) con risoluzione di 768x576 a 30 fps. Come nel caso precedente spazio di archiviazione alto e impossibilità di streaming. • Formato CIF (Common Intermediate Format). Sviluppato per sistemi di videoconferenza, ha una risoluzione di 360x288 pixel. Successivamente affiancato da 4CIF (risoluzione 768x576 per la luminosità e 360x288 per le componenti cromatiche), 16CIF (risoluzione di Y 1440x1152 e 720x576 per Cb e Cr), QCIF (risoluzione di Y 180x144 e Cb Cr a 90x72). Bitrate di CIF è 81 Mbps (73 GB per un film di due ore a 30 fps. Nonostante le piccole dimensioni, le attuali reti ADSL non sono in grado di supportare lo streaming. • Formato 720p. Sviluppato per segnale televisivo ad alta definizione HDTV, ha un aspect ratio di 16:9. La risoluzione è di 1280x720 e prevede che l’immagine venga completamente ridisegnata sullo schermo (p sta per progressive) a ogni refresh. Il bitrate è di circa 1.1 Gbps considerando 8 bit per la codifica di ogni componente. • Formato 1080i. Sviluppato per segnale televisivo HDTV, ha un aspect ratio di 16:9, una risoluzione di 1920x1080 e prevede l’interlacciamento. Il bitrate è di circa 1.24 Gbps considerando una codifica per ogni componente di 8 bit. • Formato 1080p. Diverso dal 1080i in quanto progressive e non interlacciato. Il bitrate è di 2.5 Gbps con una codifica di ogni componente di 8 bit. Cap. 5 Informazioni e dati La compressione dei dati L’informazione, o un flusso informativo in generale, è composta da due entità: dati entropici e dati ridondanti. I primi sono la componente principale dell’informazione (quantità minima di dati per rappresentare l’informazione), mentre i dati ridondanti sono superflui rispetto all’informazione. Se si potessero individuare ed eliminare i dati superflui di un flusso informativo si potrebbero ridurre i dati necessari per rappresentare il flusso. Questo è proprio il meccanismo dei meccanismi di compressione. Un meccanismo di compressione è composto da due componenti: un codificatore (encoder), che riduce il numero di dati che rappresenta un flusso, e un decodificatore (decoder), che ricrea il flusso originale partendo dai dati compressi. Gli algoritmi alla base di questi meccanismi possono essere raggruppati in due diverse categorie: compressione senza perdita (lossless) e compressione con perdita (lossy). La prima categoria elimina solo i dati ridondanti e permette di ricostruire completamente il flusso informativo originale, mentre la categoria con perdita elimina oltre ai dati ridondanti anche una parte di dati entropici, ricostruendo un flusso simile all’originale, in quanto l’individuazione della componente entropica non è sempre fattibile. Un’altra distinzione fra i meccanismi di compressione riguarda la complessità. Nella compressione simmetrica l’algoritmo di codifica e quello di decodifica hanno la stessa complessità, mentre nella compressione asimmetrica hanno diversa complessità (generalmente algoritmi di decodifica più semplici rispetto a quelli di codifica). Compressione senza perdite Gli algoritmi di compressione senza perdita sono conosciuti anche come algoritmi di codifica entropica. Non viene introdotta nessuna perdita, quindi è reversibile. È solitamente utilizzata per comprimere informazioni che devono essere assolutamente preservate (testi o software, dove la mancanza anche di un solo bit comprometterebbe il flusso). Run Length Compression lOMoARcPSD|2805715 dell’immagine con soli 8 bit. Quindi ogni colore invece che essere rappresentato da 24 bit è rappresentata da 8 bit, cioè il suo indice di tabella. PNG – Portable Network Graphics È un formato di compressione senza perdita progettato per comprimere immagini bitmap. Sviluppato negli anni 90 è divenuto standard nel 2003 con il nome ISO/IEC 15948. Il funzionamento della compressione prevede due passi: filtraggio e compressione. Nel filtraggio si usano i dati di alcuni pixel dell’immagine per predire il valore di altri pixel (l’idea di base è che pixel vicini hanno valori simili e questi valori possono essere rappresentati per differenza anziché valore assoluto). Esistono 5 modalità di predizione: A C B X • None: nessuna predizione. • Sub: differenza tra pixel X e pixel A. • Up: differenza tra pixel X e pixel B. • Average: differenza tra X e la media tra A e B, cioè (A+B)/2. • Paeth: funzione lineare tra A, B e C. Il secondo passaggio prevede la compressione utilizzando l’algoritmo di compressione senza perdita chiamato DEFLATE che combina l’algoritmo Lempel-Ziv e la compressione Huffman. JPEG – Joint Picture Expert Group È un formato di compressione divenuto standard nel 1992 con il nome IS 10918-1, comunemente conosciuto come JPEG. È stato sviluppato per essere un formato di compressione con le seguenti caratteristiche: • Indipendente dalla dimensione dell’immagine. Permette di comprimere immagini di qualsiasi dimensione. • Indipendente dal numero di colori e dal modello di colori. Non si pone nessuna restrizione sul numero di colori dell’immagine, a differenza di GIF. • Indipendente dall’aspect ratio dell’immagine. Consente di comprimere immagini con qualsiasi rapporto tra lunghezza e larghezza. • Utilizzabile su computer general-purpose. È stato sviluppato per funzionare su computer normali, in quanto opera in tempi ragionevoli su qualsiasi dispositivo. È un metodo di compressione lossy (non reversibile) che utilizza cinque fasi per comprimere un’immagine. Andiamo a vederle nel dettaglio. 1. Preparazione dell’immagine JPEG considera l’immagine come composta da un numero di livelli, al massimo 255, ognuno dei quali rappresenta una componente dell’immagine. Ad esempio se l’immagine è in formato RGB, sono necessari lOMoARcPSD|2805715 tre livelli per la componente R, la G e la B. All’interno di ogni livello i punti hanno una profondità di colore massima che varia da 8 bit a 12 bit. L’algoritmo di compressione si applica a ogni livello. Per funzionare su computer normali, ogni livello è diviso in blocchi di 8x8 pixel. Questa divisione facilita la successiva fase di trasformazione mediante la DCT, operazione molto costosa dal punto di vista computazionale. Per poter comprimere immagini di qualsiasi dimensione, l’ultima riga o l’ultima colonna possono essere duplicate in modo da rendere la dimensione divisibile per 8. 2. Trasformazione DCT È la principale innovazione introdotta da JPEG. Lo scopo di questa fase è quello di passare dal dominio del tempo al dominio delle frequenze, infatti l’occhio umano è meno sensibile alle componenti di frequenza spaziale ad alta frequenza rispetto a quelle a bassa frequenza. Inoltre se le componenti ad alta frequenza vanno oltre una determinata soglia, allora non possono essere individuate dall’occhio umano. Con una rappresentazione a componenti di frequenza spaziale si possono individuare quelle componenti non visibili e si possono eliminare senza influenzare la qualità dell’immagine riprodotta. Nello specifico il segnale in ingresso viene scomposto in una serie di funzioni di diversa ampiezza e frequenza (si trasforma un’immagine nelle sue componenti di frequenza, dove le alte frequenze rappresentano cambi repentini, mentre le basse frequenze rappresentano cambi graduali). In pratica la DCT produce i coefficienti delle funzioni armoniche (solo coseno) che sommate assieme formano il segnale originale. La prima fase prevede un’operazione di centratura attorno allo zero. Per questioni di efficienza, ai valori di ogni singolo elemento viene sottratto 128 in modo da centrare i valori sullo 0 (siccome ogni elemento è rappresentato con 8 bit di profondità, quindi valori che variano da 0 a 255, togliendo 128 si avranno valori che variano da -128 a 127). Per effettuare la trasformazione DCT indichiamo con S(x,y) la matrice 8x8 e applichiamo la trasformazione in modo da ricavare una seconda matrice, denotata con F(x,y), contenente i valori del blocco in input traslati nel dominio delle frequenze. Ogni elemento della matrice F è una combinazione dei 64 elementi della matrice S. in particolare per il calcolo dell’elemento F(0,0) la funzione coseno vale 1, quindi l’elemento F(0,0) è in funzione dei 64 valori originali della matrice di input S. Questo è l’elemento che determina il colore fondamentale del blocco 8x8 ed è denominato coefficiente DC. Tutti gli altri 63 elementi della matrice F sono calcolati in funzione del coseno e prendono il nome di coefficienti AC. 3. Quantizzazione Dopo aver ottenuto i coefficienti DCT è necessario passare al processo di quantizzazione. In questa fase avviene la prima compressione dell’immagine. In particolare questa fase elimina le informazioni visive ritenute meno importanti attraverso tabelle di quantizzazione, che tengono conto del fatto che l’occhio umano è più sensibile ai coefficienti DC e alle frequenze basse e meno sensibile alle frequenze alte (che si hanno con un cambio netto del contenuto come in vicinanza di bordi). Nella codifica JPEG esistono due tabelle standard, una per i coefficienti di luminosità e una per i coefficienti cromatici, ma l’utente può personalizzare la tabella per ottenere diversi livelli di compressione. Il funzionamento della quantizzazione è il seguente: ogni tabella 8x8 prodotta dalla DCT viene divisa per una tabella di quantizzazione, creando una nuova tabella 8x8. Si introduce una riduzione della dimensione dei coefficienti DC e dei coefficienti AC. Se un coefficiente assume il valore, arrotondato, zero allora si può rimuovere la sua frequenza in quanto l’occhio non è in grado di vedere quella particolare frequenza. I valori contenuti nella tabella di quantizzazione possono essere aumentati o diminuiti, dipendentemente dalla scelta del rapporto di compressione che l’utente effettua. Aumentando il livello di compressione i valori della tabella vengono aumentati e viceversa. Maggiore sono le frequenze eliminate e maggiore è la quantità di dati eliminata, ma peggiore sarà la qualità dell’immagine. lOMoARcPSD|2805715 4. Codifica entropica Dopo aver effettuato la quantizzazione, l’immagine è rappresentata da una sequenza di blocchi 8x8, ognuno dei quali è composto da qualche numero e molti zeri. Per aumentare ulteriormente il livello di compressione, JPEG comprime questi valori attraverso diverse codifiche entropiche, poste in cascata, al fine di incrementare la compressione di dati. Questa fase si articola in quattro parti che andremo ad analizzare. Vettorizzazione Come abbiamo visto la codifica entropica si applica a vettori, ma il risultato della quantizzazione è una matrice. Dobbiamo quindi trasformate la matrice in un vettore per applicare tecniche di codifica entropica come la codifica differenziale, la run-length e la codifica di Huffman. La vettorizzazione tiene conto del fatto che la matrice è solitamente composta da molti zeri e da alcuni non-zero nella parte in alto a sinistra della matrice. JPEG effettua una scansione della matrice a zig-zag. Questa vettorizzazione produce un vettore in cui il coefficiente DC, l’elemento (0,0), è il primo e i coefficienti AC a più bassa frequenza (quelli in alto a sinistra nella matrice) sono scanditi per primi lasciando le componenti a più alta frequenza (quelli in basso a destra) per ultimi. Grazie a questa scansione gli elementi che solitamente contengono il valore zero ricadono alla fine del vettore. Codifica differenziale Il coefficiente DC influisce pesantemente sul colore fondamentale (o sulla luminosità) del blocco 8x8 ed è quindi molto importante. I coefficienti DC di due blocchi consecutivi variano di poco. Per questo motivi ai coefficienti DC dell’intera immagine viene applicata la codifica differenziale, che invece di codificare il valore assoluto del coefficiente DC, codifica la sua differenza rispetto al coefficiente DC del blocco precedente. Ad esempio supponendo che i coefficienti DC dei primi quattro blocchi siano 34,37,39,36, applicando una codifica differenziale la sequenza diventa 34, 3, 2, -3. I valori sono poi codificati nella forma SSSS, valore, dove SSSS indica il numero di bit necessari per codificare il valore. Codifica run-length Si applica solo ai coefficienti AC, processati secondo lo schema a zig-zag ottenuto alla vettorizzazione. Ciò significa che i coefficienti delle basse frequenze (in alto a sinistra) sono codificati prima dei coefficienti delle alte frequenze (in basso a destra). I coefficienti sono codificati con una coppia di valori (salto, valore), dove salto è il numero di zero nella sequenza e valore rappresenta il valore del coefficiente che interrompe la sequenza di zero. Ad esempio, considerando la sequenza di coefficienti AC 6, 1, -1, 0, 0, 0, 0,…, 0, essa verrà codificata: (0,6)(0,1)(0,-1)(0,0) dove la coppia (0,0) indica che tutti i rimanenti coefficienti AC sono uguali a zero. Si noti che per ridurre ulteriormente il numero di bit necessari per questa codifica, il campo valore è codificato con la coppia (SSSS, valore) come nel caso della codifica differenziale. Codifica di Huffman Per ridurre ulteriormente il numero di bit si utilizzano degli specifici codici di Huffman per codificare il campo SSSS dei coefficienti DC. Ad esempio questo significa che la coppia (4,12) viene rappresentata con la sequenza 1011100 (101 rappresenta il 4, mentre 1100 rappresenta il valore 12. I coefficienti AC subiscono una codifica simile. La codifica run-length produce una sequenza di coppie (salto,valore), dove valore è rappresentato dalla coppia (SSSS, valore). La codifica di Huffman per i coefficienti AC tratta la coppia salto/SSSS come una singola entià e la sua codifica è stabilità dalla tabella dei codici di Huffman per i coefficienti AC. In pratica se devo codificare la coppia (0,6) il valore salto è pari a zero. La codifica di 6 mediante la coppia (SSSS,valore) è (3,110). Questo significa che la coppia salto/SSSS è 0/3 e pertanto dalla lOMoARcPSD|2805715 state sviluppate per i servizi di telefonia digitale su reti ISDN (Integrated Services Digital Network). In particolare la codifica m-law è stata sviluppata per essere utilizzata nelle reti ISDN di Stati Uniti, Canada e Giappone, mentre la A-law per essere utilizzata in Europa. Schemi di compressione basati su modelli psico-acustici Queste tecniche mirano a eliminare dal segnale originale tutte le informazioni che non sono percepibili dal sistema uditivo umano in modo da produrre un segnale audio di qualità paragonabile a quella del segnale originale, ma composta da una minore quantità di dati. Sensibilità dell’orecchio umano Il nostro sistema uditivo è in grado di percepire suoni che vanno dai 20 ai 20000 Hz, ma non tutte le frequenze all’interno di questo intervallo sono percepibili in modo assoluto, infatti per essere percepite queste frequenze devono avere una certa intensità. Questa intensità dipende dal valore della frequenza. In pratica è possibile stabilire una soglia di udibilità calcolando l’intensità minima che una frequenza deve avere per poter essere percepita. Le ricerche del 1933 di Harvey Fletcher e Wilden Munson si riassumo al diagramma di Fletcher-Munson, contenente la soglia di udibilità di suoni puri a specifiche frequenze (il grafico mette in relazione le frequenze udibili in Hz con l’intensità percepibile 0-130 dB). Le curve mostrano come sono percepiti i segnali audio ed evidenziano che i suoni appartenenti alla stessa curva producono lo stesso livello di percezione sonora, anche se frequenza e intensità sono diverse. Per questo motivo le curve sono dette isofone. I numeri sopra le curve sono i foni, indicano la curva e l’udibilità. Si può notare che suoni di frequenza diversa, ma con la medesima intensità sono percepiti in modo diverso, mentre suoni di diversa intensità e frequenza possono essere percepiti allo stesso modo. Ogni curva è costruita in modo che i punti sulla curva producano una percezione di livello sonoro pari al livello sonoro prodotto da un segnale di frequenza 1000 Hz. Ad esempio, tutti i punti sulla curva isofona 20 producono la stessa percezione di livello sonoro che si ha con un segnale di frequenza 1000 Hz di intensità 20 dB, l’isofona 40 produrrà la stessa percezione per 1000 Hz a 40 dB e così via. È possibile stimare la curva 0-foni che indica la soglia di udibilità del sistema uditivo umano, mentre la curva più alta è la massima soglia di udibilità, al di sopra della quale si prova dolore fisico. Il diagramma di Flecther-Munson è stato poi aggiornato con la pubblicazione dello standard ISO 226:2003. Mascheramento delle frequenze La membrana uditiva umana si comporta come una serie di filtri che separano le frequenze che compongono il segnale audio e ognuna di queste frequenze viene percepita da una distinta zona della membrana. I 32 millimetri che compongono la membrana si possono dividere in circa 25 bande critiche, ognuna di lunghezza pari a 1.3 millimetri e ognuna è in grado di percepire un certo insieme di frequenze. Quello che è importante è che se due frequenze simultanee rientrano nella stessa banda critica allora il sistema uditivo umano difficilmente percepisce distintamente questi due suoni. Consideriamo queste due frequenze come f1 e f2. L’intervallo di frequenze intorno a f1 entro il quale l’uomo non percepisce f1 e f2 distintamente è detto banda critica. Le bande critiche non hanno tutte la stessa sensibilità. A frequenze alte corrispondono bande critiche più larghe di quelle che si hanno a frequenze basse. Quindi più f1 e f2 sono frequenze alte più la loro differenze dovrà essere maggiore per essere percepita. Banda Limite inferiore Centro Limite superiore Larghezza lOMoARcPSD|2805715 1 50 100 2 100 150 200 100 3 200 250 300 100 4 300 350 400 100 5 400 450 510 110 6 510 570 630 120 7 630 700 770 140 8 770 840 920 150 9 920 1000 1080 160 10 1080 1170 1270 190 11 1270 1370 1480 210 12 1480 1600 1720 240 13 1720 1850 2000 280 14 2000 2150 2320 320 15 2320 2500 2700 380 16 2700 2900 3150 450 17 3150 3400 3700 550 18 3700 4000 4400 700 19 4400 4800 5300 900 20 5300 5800 6400 1100 21 6400 7000 7700 1300 22 7700 8500 9500 1800 23 9500 10500 12000 2500 24 12000 13500 15500 3500 25 15500 18775 22050 6550 Il fenomeno appena visto prende il nome di frequency masking e consiste nella presenza di un segnale di intensità superiore (segnale mascheratore) che silenzia un segnale di intensità inferiore (segnale mascherato). Questo fenomeno avviene quando le due frequenze fanno parte della stessa banda critica. A ogni segnale è associata una soglia di mascheramento che indica che tutti i segnali che si trovano al di sotto della soglia non si possono udire. Il valore della soglia dipende da diversi fattori quali intensità e frequenza del mascheratore. Le soglie di mascheramento generalmente hanno una forma a campana con una curva più ripida dal lato delle frequenze basse e più morbida dal lato delle frequenze alte. Mascheramento temporale È il fenomeno che si crea quando un segnale rende non percepibili altri suoni presenti nelle vicinanze temporali del segnale. In presenza di questi segnali il nostro sistema uditivo diventa insensibile a qualsiasi suono per un periodo temporale che varia dai 5 ms prima del suono (fenomeno di pre-mascheramento) ai 50-300 ms dopo il suono (fenomeno di post-mascheramento). L’intervallo di insensibilità dipende dalla forza del segnale mascheratore. Schema generale di compressione Lo schema generale di un meccanismo di compressione audio basato su un modello psico-acustico funziona nel seguente modo: 1) il segnale audio viene trasformato dal dominio del tempo al dominio delle frequenze, 2) viene utilizzato il modello psico-acustico per individuare quelle frequenze che possono essere rimosse senza alterare la qualità del suono, 3) per ogni banda viene stabilità il numero di bit che devono essere utilizzati per la quantizzazione, in seguito avviene la codifica per bande, 4) il segnale è ulteriormente compresso con tecniche di codifica entropica, che eliminano dati ridondanti, 5)avviene il processo di codifica finale. La decompressione audio funziona nel seguente modo: 1) ripristino dei valori calcolati e codificati, 2) ricostruzione del flusso nel caso sia stato sottoposto a codifica entropica, 3) ricostruzione dei valori quantizzati per le singole bande, 4) trasformazione del risultato nel dominio del tempo. lOMoARcPSD|2805715 Compressione MPEG Il gruppo MPEG (Motion Picture Experts Group), composto da università e industrie di diversi paesi, ha sviluppato diversi standard di compressione audio per rispondere a determinate esigenze dello scenario digitale. i loro algoritmi si basano su modelli percettivi e non fanno nessuna supposizione sulla natura del segnale da comprimere, cioè si possono usare sia per comprimere segnali vocali di bassa qualità, sia brani audio ad alta qualità. Basandosi su modelli percettivi, MPEG è un metodo di compressione con perdita, quindi è un processo non reversibile. Una caratteristica del meccanismo MPEG è il fatto di specificare solamente il formato del flusso finale e la struttura dell’algoritmo di decodifica. L’algoritmo di codifica non viene standardizzato per consentire agli sviluppatori di trovare soluzioni implementative sempre più efficienti. Un’altra caratteristica è che codificatore ha una complessità maggiore al decodificatore, che viene mantenuto “snello” per favorire la riproduzione dei contenuti multimediali. Il generale MPEG utilizza lo schema di compressione visto prima e considera il segnale audio come una sequenza di blocchi di campioni di dati. La lunghezza di questi blocchi dipende dal tipo di algoritmo utilizzato (i blocchi possono essere composti da 384, 576 0 1152 campioni). Ognuno di questi blocchi viene sottoposto al processo di codifica. MPEG-1 Lo standard MPEG-1 stabilisce tre diversi livelli di compressione per il segnale audio, chiamati Layer I, Layer II e Layer III (quest’ultimo è riconosciuto con il nome di MP3). Questo meccanismo è in grado di gestire diverse frequenze di campionamento, un numero variabile di canali audio, diverse modalità sonore (mono, stereo, ecc.) e diversi bitrate. In particolare il Layer I utilizza blocchi composti da 384 valori e produce un flusso audio con un bitrate che varia da 32 a 448 Kbit al secondo, il Layer II utilizza invece 1152 campioni e produce un flusso audio con un bitrate che può variare da 32 a 384 kbps, infine il Layer III utilizza 1152 campioni e produce un flusso audio con un bitrate che varia da 32 a 320 Kbps. Quest’ultimo è il livello che raggiunge una più alta compressione grazie all’analisi delle bande critiche e alla codifica di Huffman che non sono presenti negli altri due livelli. La tabella riassume le caratteristiche dei tre livelli e i loro campi di applicazione Livello Tipo di applicazione Compressione (Kbps) Qualità 1 Digital Audio Tape 32-448 Hi-Fi 2 Televisione digitale 23-192 Simil CD Audio 3 Qualità Audio CD 64 CD Audio Andando nel dettaglio il livello I e II dividono il segnale in sottobande, simili alle bande critiche. L’individuazione delle bande critiche permette di verificare la presenza di fenomeni (tipo mascheramento simultaneo) che consentono l’eliminazione di frequenze non udibili. Il livello I divide il segnale in 32 bande di ampiezza costante, il livello II in 25. Facendo una divisione lineare e non essendoci corrispondenza con le bande critiche non si ha una compressione efficiente. Livello I e II differiscono anche dal modo con cui raggruppano i campioni e dal modo con cui allocano i bit nel processo di codifica. Il livello III si differenzia dagli altri due in quanto oltre a dividere il segnale in 32 sottobande, aggiunge un’ulteriore analisi (basata sulla MDCT, Modified Discrete Cosine Transform) che consente di suddividere ogni sottobanda in ulteriori 18 sottobande, cioè 576 sottobande totali. Questo significa che si simulano più fedelmente le bande critiche dell’orecchio umano. Inoltre il livello III usa anche una codifica di Huffman per ridurre ulteriormente i dati prodotti dal processo ed ha una più efficiente quantizzazione. MPEG-2 È uno standard di compressione audio/video. La parte audio è un’evoluzione del MPEG-1, in quanto è stata introdotta la gestione di tre ulteriori frequenze di campionamento (16000m 22050, 24000 Hz), la capacità di codificare il segnale audio con diversi bitrate e la possibilità di codificare fino a cinque canali audio normali e un canale a basse frequenze. L’algoritmo di compressione, a differenza di MPEG-1, è chiamato AAC (Advanced Audio Coding). Con il meccanismo AAC si possono codificare fino a 48 canali, con una lOMoARcPSD|2805715 H.261 È il risultato del lavoro del ITU-T, in precedenza CCITT (Comitè Consultatif International Telephonique et Telegraphique). È stato rilasciato nel 1990 con il nome di Video CoDec for Audiovisual Services at px64 Kbps, infatti sviluppato per le reti digitali ISDN (banda massima 64 Kbps) è considerato il primo meccanismo di compressione video. Inizialmente erano previste due risoluzioni: QCIF (176x144) e CIF (352x288), ma successivamente fu introdotto il formato 4CIF (704x576). Basa il suo funzionamento sulla rimozione delle ridondanze temporali all’interno di una sequenza di immagini e nella rimozione delle ridondanze spaziali all’interno di ogni singola immagine. Nello specifico la rimozione delle ridondanze spaziali opera come JPEG (modelli psico-visivi), mentre la rimozione delle ridondanze temporali avviene analizzando il filmato e utilizzando la tecnica di compensazione del moto. Il vincolo progettuale di dover codificare il video in tempo reale (videochiamata) si traduceva nell’obbligo di effettuare il processo di codifica in un tempo massimo di 150 ms, in quanto il superamento di tale soglia avrebbe dato problemi di interazione tra le persone coinvolte nella videochiamata. Per rispettare questo vincolo il B-frame non è utilizzato, si usano solo I-frame e P-frame, più semplici da codificare. Lo standard non specifica quale sia la sequenza dei frame, ma un comune codificatore separa due I-frame con tre P-frame quindi IPPPIPPP. La rimozione delle ridondanze spaziali avviene con un procedimento analogo a JPEG: l’immagine viene scomposta in blocchi di 8x8 pixel, ognuno dei quali viene trasformato con la DCT e poi quantizzato. Ogni blocchetto quantizzato subisce una trasformazione a zig-zag e infine viene sottoposto al processo di codifica entropica. La rimozione delle ridondanze temporali avviene in tre fasi: 1. Suddivisione dell’immagine in macroblocchi di dimensione di 16x16 pixel. 2. Ricerca nel frame di riferimento di un macroblocco simile. 3. Codifica del macroblocco in modalità intra se non è stato trovato un blocco simile o in modalità inter se è stato trovato un blocco simile. Se la ricerca ha trovato un macroblocco simile, la codifica viene fatta per differenza tra i due macroblocchi, cioè il macroblocco risultante viene codificato rimuovendo le ridondanze spaziali (come nel JPEG). Notare che la codifica H.261 è 4:2:0, quindi le componenti cromatiche sono la metà della componente luminosa. Ne deriva che ogni macroblocco 16x16 pixel dell’immagine è in realtà formato da un macroblocco 16x16 pixel della componente luminosa, da un blocco 8x8 per Cb e uno 8x8 per Cr. Ogni macroblocco dell’immagine è quindi composto da sei blocchi 8x8, quattro per Y, e due per Cb e Cr. La codifica per differenza non è tuttavia sufficiente, infatti il decodificatore non saprebbe ricostruire i due macroblocchi iniziali se non gli si dicesse anche la posizione esatta del macroblocco di riferimento, per questo si codifica anche il vettore di moto. Nello standard H.261 la ricerca viene fatta nel fotogramma precedente in una regione che va da +15 a -15 pixel in orizzontale e in verticale. La quantizzazione varia leggermente rispetto a quella JPEG. Non si usano le matrici di quantizzazione, ma i coefficienti prodotti dalla trasformazione DCT sono quantizzati utilizzando un fattore di scala, pari a 8 per i coefficienti DC, mentre variabile tra 2 e 62 per i coefficienti AC (il valore dipende dal bitrate che si vuole ottenere, più alto il bitrate più basso deve essere il valore di scala e viceversa). MPEG-1 È il primo standard di compressione video proposto dal gruppo Motion Picture Expert Group, rilasciato nei primi anni 90 e definito nel documento ISO Recommendation 11172, è stato progettato per la gestione di video digitale su reti digitali T1 (banda massima 1.5 Mbps) e per la memorizzazione su supporti ottici (CD- ROM). Il meccanismo si pone come obbiettivo la codifica di filmati video con una banda massima di 1.5 Mbps (1.2 Mbps per il video e 256 Kbps per l’audio) che porta ad avere una qualità del video compresso paragonabile a quella raggiunta dalle cassette VHS e una qualità audio pari a quella del CD audio. La risoluzione prevista è di 352x288 pixel con 25 frame al secondo nel formato PAL e di 325x240 pixel con 30 fps nel formato NTSC. Si basa sulla codifica 4:2:0 per il campionamento e utilizza 8 bit per la quantizzazione dei campioni (256 livelli). Lo standard non definisce nei dettagli il codificatore, quindi lascia libertà nella realizzazione del codificatore, a patto che produca un bitstream valido. Questo approccio permette sia di lOMoARcPSD|2805715 sfruttare le capacità e l’inventiva degli sviluppatori, sia di non bloccare lo standard su tecnologie che, nel corso degli anni, potrebbero essere superate. La codifica MPEG-1 si basa sulla rimozione di ridondanze spaziali e ridondanze temporali. A differenza di H.261 non c’è il vincolo della codifica in tempo reale, quindi si può comprimere maggiormente il video, anche a discapito di una maggiore complessità computazionale, per questo si utilizza anche il B-frame. Ricordiamo che MPEG-1 si basa sul formato 4:2:0 e utilizza macroblocchi da 16x16, quindi ogni macroblocco è composto da 4 blocchi 8x8 pixel relativi a Y e 2 blocchi 8x8 per Cb e Cr. La rimozione delle ridondanze spaziale avviene quando si codifica I-frame come per JPEG. La rimozione delle ridondanze temporali avviene quando si codifica un P-frame o un B-frame. • Codifica di un P-frame. L’immagine viene suddivisa in macroblocchi e si ricerca per ognuno un macroblocco simile nel frame di riferimento. La codifica di un P-frame fa riferimento al precedente P-frame o I-frame. Se la ricerca da esito positivo si procede alla codifica del macroblocco per differenza, come in JPEG, codificando anche il vettore di moto. Se la ricerca da esito negativa si procede alla codifica intra. • Codifica di un B-frame. Si suddivide l’immagine in macroblocchi e si ricerca per ognuno un macroblocco simile nei due frame di riferimento. La codifica fa riferimento alle informazioni contenute nel precedente e successivo I-frame o P-frame. Quindi la ricerca si divide in due: una per gli I-frame e P-frame precedenti e una per gli I-frame e P-frame successivi. Nel caso di esito negati si procede con la modalità intra, mentre con esito positivo si codifica il macroblocco per differenza. In particolare se si è trovato solo un macroblocco simile allora il processo è simile a quanto avviene per il P-frame e si utilizzerà un solo vettore di moto. Nel caso in cui si siano trovati due macroblocchi simili si dovrà codificare la differenza media tra i due blocchi e i due vettori di moto. La frequenza con cui I, B e P si susseguono in un flusso MPEG-1 è stabilita dal GOP (Group of Picture) nel momento in cui si effettua la codifica. GOP GOP GOP GOP I B B P B B P B B P B B La fase di quantizzazione in MPEG-1 p simile a quella operata in JPEG, ma differisce per la tabella di quantizzazione. Esiste un fattore di scala che varia da 1 a 31 e che viene utilizzato per ridurre ulteriormente i coefficienti prodotti dalla DCT. Questo fattore di scala è determinato dal rate control, lo strumento mediante il quale MPEG-1 tiene sotto controllo il flusso di bit prodotti dalla codifica. Infatti le diverse tipologie di frame hanno livello di compressione diverso (maggiore per B, minore per I) e questa diversità può creare un flusso di dati variabile che può dare problemi al decodificatore. Quest’ultimo deve visualizzare frame a intervalli predefiniti e indipendenti dal tipo di immagine. Se i dati arrivano lentamente il decodificatore non può decodificare, mentre se arrivano troppi dati sarebbe costretto a eliminare alcuni dei dati. Per ovviare a questi problemi, il codificatore usa il rate control. MPEG-2 Secondo standard audio/video proposto dal gruppo MPEG, è stato rilasciato nella metà degli anni 90 ed è definito dal documento ISO/IEC 13818. Si focalizza sulla gestione del video digitale per la trasmissione sulle televisioni digitali ed è tuttora utilizzato per la gestione di video su DVD. Lo scopo è comprimere video a bitrate più elevati di MPEG-1 migliorando la qualità di video e audio. Alcune parti dello standard sono state progettate insieme al gruppo ITU-T. uno dei vincoli progettuali era di mantenere la compatibilità con il flusso prodotto dallo standard MPEG-1, per questo la compressione è organizzata in sette profili, pensati per supportare particolari esigenze, ognuno dei quali può essere suddiviso in un massimo di quattro livelli che definiscono i parametri necessari per ottenere un particolare flusso di dati. lOMoARcPSD|2805715 Simple Main SNR scalable Spatial scalable High Multiview 4:2:2 High x x High-1440 X x X Main x X X X x x Low X x La peculiarità di MPEG-2 è la capacità di adattarsi a diversi scenari, dalla video conferenza alla televisione digitale. Inoltre i livelli superiori sono codificati e decodificati utilizzando informazioni contenute nel livello base, che è l’unica livello a essere codificato e decodificato in modo indipendente. Questo approccio risulta utile in situazioni in cui la larghezza di banda risulta bassa, variabile o molto rumorosa. Rispetto a MPEG-1 sono stati introdotti diversi miglioramenti, come: supporto della codifica 4:2:2 e 4:4:4 per aumentare la qualità del colore, precisione che può essere di 9-10 bit per la rappresentazione del coefficiente DCT (in MPEG-1 sono 8), supporto di maggiori formati video, supporto di diversi aspect ratio. H.263 Standard della ITU-T rilasciato nel 1996, sviluppato per realizzare un meccanismo di compressione video per sistemi di videoconferenza su reti telefoniche, gestendo video a bitrate più bassi di 64 Kbps usati in H.261. Si differenzia da H.261 per miglioramenti a livello algoritmico. Viene ampliata la gamma delle possibili risoluzioni con il supporto dei formati Sub-CIF (128x96), QCIF (176x144), CIF (352x288), 4CIF (704x576) e 16CIF (1408x1152). Nel 1998 è stato rilasciato H.263+ con ulteriori miglioramenti algoritmici come l’area di ricerca all’interno della quale cercare macroblocchi simili viene ampliata a 256. Nel 2000 è stato rilasciato H.263++. MPEG-4 Terzo standard proposto dal gruppo MPEG rilasciato nel 1999 definito nel documento ISO/IEC 14496, ha l’obbiettivo la produzione di flussi audio/video a bassi bitrate in modo da supportare applicazioni multimediali nelle infrastrutture che stavano emergendo in quegli anni (reti mobili e internet), infatti produce flussi con bitrate a partire da 4.8 Kbps. Il meccanismo di compressione considera l’immagine composta da regioni di forma arbitraria chiamate oggetti (non più sequenza fissa di macroblocchi). Successivamente il meccanismo codifica gli oggetti utilizzando un approccio simile alla tecnica inter-frame, quindi ci sono oggetti I, oggetti P e oggetti B. Nel 2003 viene rilasciato un nuovo standard sviluppato da MPEG e ITU-T conosciuto come H.264 o MPEG-4 Part 10. Al giorno d’oggi questo standard è uno dei maggiormente utilizzati, siccome viene impiegato per gestire video in alta definizione e per gestire video nei sistemi di streaming. H.264 riprende il classico approccio basato sui macroblocchi e si pone come obbiettivo la codifica di video a bitrate più bassi degli standard precedentemente sviluppati. Vanno menzionati fra i miglioramenti algoritmici: l’introduzione della trasformazione DCT a coefficienti interi su blocchi 4x4, l’utilizzo della tecnica di predizione spaziale per i macroblocchi codificati in modalità intra, la possibilità che i B-frame si riferiscano a due frame non necessariamente appartenenti a passato/futuro, impiego di una quantizzazione logaritmica invece che lineate e l’utilizzo di codificatori a lunghezza variabile. Inoltre il meccanismo di compressione è in grado di gestire video codificati nel formato 4:2:2 o 4:4:4, considera fino a 16 frame di riferimento e migliora la tecnica di compensazione del moto introducendo diverse misure per i macroblocchi che ora possono arrivare fino a 4x4. HEVC (High Efficiency Video Coding) È stato sviluppato da MPEG e ITU-T e rilasciato nell’aprile del 2013, mentre la secondo versione è stata rilasciata nel 2015. L’obbiettivo era di migliorare ulteriormente la compressione e la qualità del meccanismo H.264. HEVC può gestire filmati con risoluzioni fino a 8192x4320 e grazie alla sue prestazioni ci si aspetta che diventi il nuovo standard nella trasmissione di video streaming e nella gestione delle trasmissioni di segnali televisivi. lOMoARcPSD|2805715 anche ai privati. Negli anni successivi la NSF iniziò a cedere le reti a operatori commerciali e nel 1995 la NSFner cessò formalmente di esistere. Nel 1972 fu introdotta la possibilità di mandare messaggi a persone attraverso la rete, nasce così il concetto di posta elettronica. Nel 1972 fu la volta di ftp, applicazione che consentiva il trasferimento di file tra computer. Nel 1979 vennero sviluppati i primi programmi per la gestione di notizie. Nel 1988 venne sviluppato IRC (Internet Replay Chat) primo programma per chattare in rete. Nel 1989 nei laboratori del CERN di Ginevra, Tim Berners-Lee sviluppò HTML e l’anno successivo per lo sviluppo dell’applicazione World Wide Web. Nel 1993 Mark Andreesen nei laboratori della NCSA (National Center for SuperComputing Applications) sviluppo Mosaic X, primo browser grafico della storia di Internet. Nell’anno siccessivo Andreesen insieme a Jim Clark fondò la Netscape Communication e sviluppò Netscape, il browser che più di tutti ha contribuito alla diffusione del World Wide Web. Nel 1995 Microsoft rilasciò Internet Explorer. Negli anni successivi si svilupparono applicazioni e tecnologie di accesso ad Internet che cambiarono in maniera profonda la nostra società come e-commerce, e-banking, trading online, e-learning, file-sharing, chat, voice-over-IP (VOIP), blog, padcast, audio, video, giochi online. Architettura di Internet Dal punto di vista della rete, l’architettura è composta da client, server e router, in quanto la maggior parte delle comunicazioni e delle interazioni in internet avviene utilizzando la modalità client-server. I dispositivi possono essere sia client, che sono in grado di effettuare richieste al server e ricevere e capire le risposte del server, sia server, che sono in grado di ricevere richieste dai client, di elaborarle e fornire loro una risposta. In realtà client e server sono entità software per questo anche il nostro pc, ad esempio, può essere un server. Le comunicazioni nella rete avvengono mediante commutazione di pacchetto. Come già detto le informazioni vengono suddivise in pacchetti e ognuno di questi pacchetti contiene una parte della comunicazione e diverse informazioni, come l’indirizzo di destinazione. Grazie ai vari router lungo la rete i pacchetti vengono instradati verso il client o server. È necessario però che client e server parlino la stessa “lingua” per capirsi, per questo il linguaggio comune della rete internet è la suite di protocolli TCP/IP. Oltre a questo esistono altri protocolli per specifici servizi, come SMTP (Simple Mail Transfer Protocol) per le email, http (Hyper-Text Transfer Protocol) per il web. L’indirizzo di destinazione presente in ogni pacchetto è una sequenza di 32 bit che prende il nome di indirizzo IP e identifica univocamente un dispositivo all’interno della rete internet, quindi non esistono due o più dispositivi con lo stesso indirizzo IP. La sequenza dei 32 bit è formata da quattro gruppi di 8 bit ciascuno: in forma decimale, l’indirizzo assume la forma XXX.XXX.XXX.XXX dove ogni gruppo XXX può assumere un valore tra 0 e 255. L’indirizzo IP 155.185.2.21 identifica il web server dell’università di Modena e Reggio Emilia. Ricordarsi però tutti gli indirizzi IP diventa difficile, come sarebbe avere una rubrica telefonica con solo i numeri e senza nomi. Per questo esiste un servizio chiamato DNS (Domain Name Server) che consiste in un database distribuito che contiene i nomi dei server ed è anche un protocollo che associa l’indirizzo IP ad un nome. Nella pratica, quando digitiamo nella barra del browser un sito (ad esempio www.google.it) il browser trasforma il nome del sito nel suo indirizzo IP grazie al software client DNS che contatta il server DNS chiedendo di trasformare il nome del server nel suo database. Modello TCP/IP Internet è organizzato in quattro livelli, in modo da semplificare la complessità del sistema di comunicazione: • Livello applicazione. Vi risiedono le applicazioni (browser, posta elettronica). Le informazioni che si devono trasmettere in rete (chiamate messaggi in questo livello) subiscono un primo processo di modifica da parte dei protocolli. Dato che non esiste una sola applicazione non esiste un unico protocollo. I messaggi preparati dai protocolli sono consegnati al livello sottostante. • Livello trasporto. Si occupa della gestione dei messaggi ed è il responsabile del trasferimento dei dati tra i dispositivi. Nella rete internet i messaggi possono essere gestiti dai protocolli TCP e UDP, in base all’applicazione usata. Il messaggio gestito da uno dei due protocolli viene trasformato in segmenti che sono poi consegnati al livello successivo. lOMoARcPSD|2805715 • Livello internet. Si occupa di trasformare i segmenti in entità in grado di muoversi nella rete. La trasformazione avviene mediante il protocollo IP che trasforma i segmenti ricevuti in pacchetti. Ognuno di questi pacchetti viene fornito di tutte le informazione per poter muoversi autonomamente in rete e viene passato al livello successivo. • Livello hardware. Si occupa di trasmette realmente i pacchetti nella rete . la trasmissione avviene con uno dei possibili protocolli di trasmissione (Ethernet, Bluetooth, Wi-Fi) scelti in base al messo utilizzato. All’interno della rete non è necessario implementare tutti i quattro livelli, ma solamente gli ultimi due, internet e hardware, per questo il protocollo IP deve essere conosciuto da ogni componente della rete internet. TCP – Transport Control Protocol 16 bit 16 bit Porta origine Porta destinazione Numero sequenza Altre informazioni Dati Il protocollo TCP è definito nel documento RFC793, è un servizio di trasferimento dati affidabile, cioè quando un’applicazione si affida a TCP ha la garanzia che i dati spediti saranno consegnati al destinatario nel medesimo ordine con il quale sono stati spediti. Per garantire questo servizio TCP trasforma i messaggi del livello applicazione in segmenti e inserisce in questi segmenti delle informazioni aggiuntive: • Porta origine (16 bit) e porta destinazione (16 bit). Il mittente inserisce il numero di porta in uscita e il numero di porta in entrata al destinatario. Questi valori, insieme all’indirizzo IP, sono necessari per identificare univocamente l’origine e la destinazione dei dati. • Numero di sequenza. È un semplice numero progressivo che aiuta il destinatario a riordinare i pacchetti, qualora ce ne fosse bisogno. Tra le altre informazioni, che TCP inserisce nel pacchetto, non specificate qui ci sono campi per indicare la lunghezza dell’intestazione del segmento, di marcare urgente il segmento TCP, per informare il destinatario che i dati devono essere immediatamente inviati al livello applicazione, per aprire e chiudere la connessione TCP, controllare il flusso di dati e che il segmento TCP non abbia subito modifiche durante la trasmissione e infine di consentire a mittente e destinatario di mettersi d’accordo sulla dimensione del segmento. Generalmente alcune informazioni sono concordate con l’applicazione destinataria, infatti TCP è un protocollo connection-oriented, cioè prima di iniziare una trasmissione di dati, le applicazioni stabiliscono una connessione per mettersi d’accordo su alcuni parametri. Scopriamo in che modo TCP garantisce alle applicazioni la consegna dei loro messaggi. Quando il destinatario riceve un segmento TCP invia al mittente una ricevuta (tecnicamente chiamata ACK, da ACKnowledgment) informando che il segmento è stato ricevuto, in questo modo il mittente è sicuro che il segmento è arrivato a destinazione. Se invece entro un certo intervallo di tempo il mittente non riceve l’ACK, suppone che il segmento sia andato perso e lo ritrasmette. Il punto critico di questo meccanismo è il calcolo del tempo di attesa per l’ACK. Per questo TCP sceglie l’intervallo con un meccanismo adattivo, che misura periodicamente i ritardi di trasmissione tra il server e il client, stimando il tempo di andata e ritorno di un segmento (RTT, Round Trip Time). Durante la connessione fra client e server TCP effettua diverse misurazioni di RTT e calcola per differenza il tempo che si deve attendere prima di effettuare una trasmissione facendo una media pesata tra tutte le misurazioni. Un’altra importante caratteristica di TCP è capire quando la rete ha dei problemi (cogestione di rete). In questo caso TCP evita di spedire ulteriori dati che andrebbero a perdersi nella rete, diminuendo la lOMoARcPSD|2805715 frequenza con la quale spedisce i segmenti. Quando un segmento va perso (no ACK) TCP azzera la frequenza di trasmissione e avvia la fase di partenza lenta (slow start) trasmettendo un segmento TCP attendendone l’ACK. Se l’ACK arriva entro i tempi di attesa TCP suppone che la congestione si stia risolvendo e invia il doppio dei pacchetti attendendo le ricevute. Se arriva l’ACK per i due pacchetti allora trasmette il doppio di segmenti e così via fino a quando TCP ha riempito la metà del buffer del destinatario. Solo a quel punto TCP diminuisce la frequenza con la quale spedisce i dati. UDP – User Datagram Protocol 16 bit 16 bit Porta origine Porta destinazione Lunghezza Checksum Dati È definito nel documento RFC768 e non necessita di stabilire una connessione tra le applicazioni coinvolte per gestire la trasmissione di dati, infatti è connectionless e non offre nessuna garanzia all’applicazione che trasmette, quindi non garantisce la consegna dei pacchetti e nel caso di consegna non garantisce il corretto ordinamento dei pacchetti. Questa mancanza va a favore della più rapida gestione dei dati, in quanto il protocollo UDP introduce meno ritardi di trasmissione del protocollo TCP. Per questo UDP è utilizzato da applicazioni VoIP, streaming audio/video e online games. Nella pratica UDP inserisce meno informazioni rispetto a TCP, infatti i campi porta di origine e destinazione hanno lo stesso significato di quelli di TCP, lunghezza indica la dimensione in byte dell’intero segmento UDP e checksum è usato per controllare che il segmento UDP non abbia subito modifiche durante la trasmissione. IP – Internet Protocol 16 bit 16 bit V HL ToS Lunghezza Identificazione D M Fragment TTL Protocol Checksum Sorgente Destinazione Opzioni Dati È un protocollo appartenente al livello internet ed è definito nel documento RFC791. È connectionless e ha il compito di preparare i dati per la loro trasmissione effettiva nella rete e gestire la trasmissione dal dispositivo mittente a quello di destinazione. Quando un segmento prodotto dal livello trasporto arriva al livello internet, il protocollo IP inserisce il segmento all’interno del pacchetto IP che oltre al segmento contiene informazioni aggiuntive per permettere al pacchetto di essere correttamente instradato nella rete. Il protocollo IP offre un sevizio best-service in quanto non garantisce che un pacchetto arrivi a destinazione entro un certo intervallo, che una serie di pacchetti arrivi nello stesso ordine con cui è stata spedita, che un pacchetto arrivi a destinazione. Esistono due versioni di IP: IPv4 più comune e presente in figura sopra e IPv6 che dovrebbe sostituire IPv4. Analizziamo i vari punti di IPv4: • V. indica la versione (4 o 6) del protocollo IP, permettendo di interpretare correttamente il formato del pacchetto. • HL. Indica la lunghezza dell’intestazione del pacchetto IP. Questo valore è espresso in multipli di 32 bit ed è un valore compreso tra 5 e 15. lOMoARcPSD|2805715 • Synchronization. Identifica la sorgente del flusso RTP. Non si tratta dell’indirizzo IP, ma di un numero che viene assegnato casualmente dal mittente ogni volta che si crea un flusso di dati. Non possibile utilizzare l’indirizzo IP del mittente perché questo potrebbe essere coinvolto in più flussi RTP e creare ambiguità. RTP Control Protocol (RTCP) 2 bit 5bit 8bit 16 bit V P RC Tipo Lunghezza Sincronizzazione È definito nel documento RFC 3550 e misura la qualità del servizio che l’applicazione in uso sta ricevendo in modo da poter porre rimedio qualora la qualità del servizio non sia sufficiente. Nello specifico RTCP fornisce statistiche sul traffico come il numero di pacchetti spediti, i pacchetti persi, il jitter e comunica queste statistiche a tutti i partecipanti della sessione. Le specifiche del protocollo non dicono nulla su come utilizzare le statistiche. I campi del pacchetto RTCP hanno il seguente significato: • V. Indica la versione del protocollo. • P. Indica se il campo dati è stato completato inserendo dei bit aggiuntivi (chiamati bit di padding). • RC. Indica il numero di rapporti (da 0 a 32) presenti all’interno del pacchetto. • Tipo. Indica il tipo di pacchetto RTCP. Esistono cinque tipologie diverse di pacchetti che vedremo successivamente. • Lunghezza. Indica la lunghezza del pacchetto RTCP. Il valore è in multipli di 32 bit. • Sincronizzazione. Identifica la sorgente del flusso. Osserviamo in dettaglio i 5 diversi tipi di pacchetto: • SR (Sender Report). Utilizzato per trasmettere e ricevere statistiche da che spedisce traffico. • RR (Receiver Report). Utilizzato per ricevere statistiche da parte di partecipanti alla sessione che non spediscono traffico. • SDES (Source DEScription items). Fornisce informazioni sui dispositivi che partecipano alla sessione. • BYE (Goodbye). Utilizzato per terminare la partecipazione alla sessione. • APP (Application-specific message). Utilizzato per gestire eventuali funzioni speciali dell’applicazione. Dato che RTCP invia report a tutti i partecipanti alla sessione, più alto sarà il numero dei partecipanti, più alta sarà la banda usata. Per questo motivo RTCP è fornito di un algoritmo adattivo per calcolare l’intervallo di tempo che deve passare tra l’invio di un pacchetto RTCP e l’invio successivo, limitando il suo uso di banda al massimo 5%. Real-Time Streaming Protocol (RTSP) È definito nel documento RFC 2326 ed è sviluppato per controllare e gestire l’esecuzione di uno o più flussi multimediali, quindi non è un protocollo che trasporta dati ma controlla solamente i flussi di dati. Per questo RTSP lavora insieme al protocollo incaricato della vera trasmissione dei dati multimediali. I principali comandi di RTSP sono: • Setup. Specifica l’inizio di una sessione RTSP. Viene definito l’indirizzo del flusso multimediale e si propongono le porte sulle quali far arrivare il flusso multimediale (tipicamente porte RTP) e quelle lOMoARcPSD|2805715 sulle quali gestire le statistiche del flusso di dati (RTCP). il server risponde indicando le porte che verranno utilizzate per gestire il traffico. • Play e Record. Inizia la trasmissione dei dati del flusso specificato con il comando Setup. Si può selezionare anche solo un intervallo (play dal minuto 4 al minuto 9). Se non viene specificato un intervallo si esegue tutto il flusso. • Pause. Stop temporaneo dell’esecuzione del flusso multimediale. Per riprendere l’esecuzione è necessario eseguire una nuova richiesta di play. • Teardown. Interrompe l’esecuzione del flusso multimediale e rilascia le sessioni relative. FINE