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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<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 />

A causa della particolare integrazione delle comunicazioni <strong>di</strong> rete nell'emulatore, si è<br />

dovuto optare <strong>per</strong> un in<strong>di</strong>rizzamento statico anche lato server, commentando nel<br />

co<strong>di</strong>ce l'handshaking <strong>di</strong> riconoscimento <strong>di</strong>namico precedentemente descritto.<br />

Il client, successivamente, configurerà l'RTPManager e a riconoscimento avvenuto<br />

della sorgente – notificato dal<strong>lo</strong> StreamMappedEvent – avvierà il<br />

ReceiveStreamReader.<br />

4.4.1 – Le classi che implementano <strong>lo</strong> <strong>streaming</strong> nel livel<strong>lo</strong> RTP<br />

Il porting delle tre classi che rappresentano il nucleo del progetto non ha<br />

presentato particolari problemi. Il ReceiveStreamReader svolge il suo compito<br />

avviando un RawBufferParser che recu<strong>per</strong>a i pacchetti inviati dalla sorgente e li<br />

inserisce nel QueableCircularBuffer, ovviamente garantendone la mutua esclusione.<br />

Particolare attenzione meritano le proprietà del Buffer, che è in grado <strong>di</strong><br />

generare eventi atti a segnalare l'eventuale possibilità <strong>di</strong> ve<strong>lo</strong>cizzare <strong>lo</strong> stream<br />

(evento Accelerate nel caso ci sia molto spazio nel buffer stesso) o la necessità <strong>di</strong><br />

rallentar<strong>lo</strong> e riavvolger<strong>lo</strong> (evento Rewind nel caso <strong>lo</strong> spazio sia invece limitato).<br />

In contemporanea viene avviato un oggetto BufferRender, che preleva i pacchetti dal<br />

buffer e ne effettua la deco<strong>di</strong>fica, <strong>per</strong> poi farli visualizzare dal player e/o registrarli.<br />

Il porting <strong>di</strong> questa classe ha riguardato so<strong>lo</strong> la struttura della classe stessa, i<br />

codec necessari <strong>per</strong> la ricostruzione del file e la classe che si occupa della<br />

registrazione in memoria, tralasciando così le classi AWTRender – le cui funzioni<br />

saranno demandate al futuro player – e MonitorAdapter, le cui specifiche <strong>di</strong><br />

funzionamento appaiono anche in questo caso strettamente correlate alle librerie<br />

AWT.<br />

68

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

Saved successfully!

Ooh no, something went wrong!