Un modo che viene in mente è quello di disegnare i pixel del frame in una texture e quindi renderizzare quella texture usando OpenGL.
Ho scritto un post sul blog un po 'indietro su come procedere, principalmente per i videogiochi basati su pixel di vecchia generazione, ma vale anche per la situazione. Il post è Android Native Coding in C e ho impostato un github repository with an example. Usando questa tecnica sono riuscito a ottenere 60 FPS, anche su hardware di prima generazione.
MODIFICA relativo a glTexImage2D vs glTexSubImage2D per questo approccio.
Chiamare glTexImage2D allocherà la memoria video per la trama e copierà i pixel che si passano in quella memoria (se non si passa NULL). Chiamando glTexSubImage2D si aggiorneranno i pixel specificati in una trama già allocata.
Se si aggiorna tutto il della trama, allora c'è poca differenza chiamando l'uno o l'altro, infatti glTexImage2D è solitamente più veloce. Ma se aggiorni solo una parte della texture, glTexSubImage2D vince alla velocità.
È necessario utilizzare le dimensioni di trama power-of-2, quindi nel coprire lo schermo su dispositivi ad alta risoluzione richiede una trama 1024x512 e una trama 512x512 a risoluzioni medie. La trama è più grande dell'area dello schermo (l'alta risoluzione è 800x400-ish), il che significa che è necessario aggiornarne solo una parte, quindi glTexSubImage2D è la strada da percorrere.
Hi Kieran, Sto cercando di convertire il formato e riprodurre audio o video utilizzando FFmpeg e Android ndk. Non ho trovato alcuna risorsa o guida per questo sul web. Dopo una ricerca lunga ho trovato questo collegamento https://github.com/havlenapetr/FFMpeg. ma non riesco a compilare ed eseguire questo esempio. Per favore aiutatemi o datemi il link - come posso riprodurre audio/video usando i file FFmpeg in Android .... Grazie – praveenb
Praveenb, Ho avuto difficoltà a far compilare e utilizzare FFmpeg anche su Android. Ho dovuto giocare un po 'con lo script di configurazione. Inoltre non sto usando la versione più recente di FFmpeg. Ho scaricato una versione leggermente più vecchia che utilizza ancora le funzioni sws_scale per farlo funzionare. Posso fare del mio meglio per aiutarti a farlo funzionare, fammi sapere dove sei adesso e quali tipi di errori hai incontrato. Non dovrebbe essere difficile ottenere le librerie statiche da costruire. – DRiFTy
Ciao, mi sto sforzando di costruire FFmpeg per Android. Potresti dirmi come sei riuscito a costruire le librerie statiche per Android? C'è qualche repository git o qualcosa di simile con cui potrei iniziare? Che dire di quello script di configurazione - cosa c'è da configurare? – j00hi