Sto cercando un esempio di video di decodifica su Raspberry Pi direttamente, senza utilizzare OpenMAX.Decodifica video in Raspberry Pi senza usare OpenMAX?
Questo spiega i diversi strati di software multimediale:
C'è un ulteriore livello che non è mostrato qui, il "MMAL" strato che è (credo) un wrapper Broadcom intorno OpenMAX . (In caso contrario, sarebbe un'alternativa OpenMAX, posta sopra il driver del kernel), ad esempio raspivid e raspistill sono scritti usando MMAL.
Desidero un esempio di decodifica video in cui l'input è raw H.264 e l'uscita è video in memoria o video sullo schermo. Voglio fare questo usando VCHIQ direttamente, non usando OpenMAX. (Principalmente per prestazioni e motivi di flessibilità)
Questo repository github: https://github.com/raspberrypi/userland/ contiene la sorgente per tutto mostrato sopra (arancione e caselle verdi; sorgente per VCHIQ sé, attuazione OpenMAX IL in cima VCHIQ, anche OpenGL e EGL implementazioni, ...). Quindi in teoria dovrebbe essere sufficiente per iniziare. Il problema è che non è ovvio come usarlo, anche se si è molto familiari con OpenMAX e con i framework multimediali in generale.
Ad esempio: vchiq_bulk_transmit() sembra essere la funzione che si userebbe per inviare video al decodificatore. Ma come inizializzare il primo argomento di tipo VCHIQ_SERVICE_HANDLE_T
? Dove vanno i risultati, nel framebuffer o in un handle di risultati o ...?
EDIT La taglia può essere raccolto da uno fornendo un esempio di lavoro di decodifica video utilizzando vchiq, una procedura dettagliata API che mostra la sequenza di chiamata (anche se non un esempio di lavoro) o un puntatore alla documentazione sufficiente scrivere questo. Un esempio funzionante otterrà un abbondante extra bounty :)
C'è un motivo particolare che non utilizza OpenMAX? – drahnr
@drahnr: Voglio un'API in cui ottengo i miei dati decodificati immediatamente. OpenMAX IL ha un sacco di buffer, non ci sono particolari vincoli su ciò che un'implementazione può fare con loro, può potenzialmente bufferizzare più frame e non c'è modo nell'API di controllarlo. Ho visto implementazioni abbastanza lente nel restituire dati (il throughput è ancora alto, i dati sono solo in ritardo). ... Suppongo che se qualcuno volesse avere una possibilità di rispondere a questo che mostra come ottenere i frame decodificati usando OpenMAX in meno di 1/60 di secondo su RPi, andrebbe bene :) –
Questo probabilmente non è quello che vuoi sentirlo, ma implementare un decodificatore H264 è molto impegnativo e non conosco una singola anima che la codificherebbe gratuitamente (anche se avessi piazzato una taglia da 500 rep). – karlphillip