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