09.02.2013 Views

Sviluppo di una piattaforma per lo streaming multimediale - MobiLab ...

Sviluppo di una piattaforma per lo streaming multimediale - MobiLab ...

Sviluppo di una piattaforma per lo streaming multimediale - MobiLab ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Sviluppo</strong> <strong>di</strong> <strong>una</strong> <strong>piattaforma</strong> <strong>per</strong> <strong>lo</strong> <strong>streaming</strong> multime<strong>di</strong>ale in ambiente Android<br />

l’interazione tra utente e servizio MUM implementa un terzo control<strong>lo</strong> dei dati. Su<br />

questo canale viaggiano ad esempio i coman<strong>di</strong> <strong>di</strong> avvio e interruzione del<strong>lo</strong> <strong>streaming</strong><br />

effettuati dall’utente.<br />

2.3 – Le classi d'utilità dell'architettura SOMA<br />

Il package Unibo è <strong>una</strong> libreria java, creata dalla collaborazione fra i laboratori<br />

DEIS dell'Univarsità degli Stu<strong>di</strong> <strong>di</strong> Bo<strong>lo</strong>gna e DIS dell'Università degli Stu<strong>di</strong> <strong>di</strong><br />

Napoli “Federico II”, contenente le classi che implementano i componenti necessari<br />

<strong>per</strong> creare e gestire le catene <strong>di</strong> plug-In e <strong>per</strong>mettere il control<strong>lo</strong> a livel<strong>lo</strong> del singo<strong>lo</strong><br />

frame.<br />

Attraverso i componenti offerti da tale package è possibile implementare meccanismi<br />

<strong>di</strong> buffering, oppure variare <strong>di</strong>namicamente la stessa catena <strong>di</strong> plug-in.<br />

Cominciamo con l'analizzare la prima libreria – unibo.handoff.client – che incorpora<br />

tutte le classi le cui funzionalità ricadono sotto la responsabilità del client; tra queste<br />

in<strong>di</strong>chiamo ReceiveStreamReader e BufferRender, due classi utilizzate <strong>per</strong> gestire la<br />

connessione RTP <strong>di</strong> basso livel<strong>lo</strong>.<br />

ReceiveStreamReader recu<strong>per</strong>a il DataSource inviato dal sender e <strong>lo</strong> avvia<br />

gestendo <strong>lo</strong> stream <strong>di</strong> dati, <strong>per</strong> poi memorizzare il tutto all'interno del buffer scelto: è<br />

cioè il produttore del nostro buffer (in grafica è il Thread <strong>di</strong> lettura frame).<br />

BufferRender invece estrae dal buffer i frame e ne effettua il rendering video.<br />

In particolare, nei test del laboratorio CiNi, il file estratto dal buffer viene registrato e<br />

salvato sul <strong>di</strong>sco rigido <strong>per</strong> i test <strong>di</strong> qualità (Thread <strong>di</strong> Rendering).<br />

Questa registrazione avviene tramite la classe AVIMultiplexerLinux che deco<strong>di</strong>fica<br />

tramite un NativeDecoder <strong>lo</strong> stream e <strong>lo</strong> salva in un formato visualizzabile.<br />

33

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!