Domanda

Sto usando Mediacodec API in una delle mie app.Ho usato il codice da BigFlake e l'app sta correndo abbastanza bene.Ma non riesco ancora a capire il parametro timeoutUs in entrambe le funzioni dequeueInputBuffer() e la funzione dequeueOutputBuffer() anche dopo averlo letto sul riferimento API. Sarebbe bello se qualcuno potesse spiegare bene l'uso e l'effetto di questo parametro.E dovrebbe essere uguale a entrambe le chiamate di cui sopra?

È stato utile?

Soluzione

Bene, l'idea principale è quella internamente, al di sotto dei componenti del livello Mediacodec funziona è asincrono.Quindi, quando si chiama dequeueInputBuffer() o dequeueOutputBuffer(), non viene eseguito alcun lavoro azionario è il file di chiamata, semplicemente controllando lo stato del componente interno durante il timeout selezionato finché non si verifica la risposta è pronta o il timeout. Dalla mia esperienza anche l'assegnazione del buffer è Async, quindi se nessun buffer interno è pronto per il dequeue ... il piccolo timeout può causare info_try_again_later.Ma principalmente è per la decodifica \ codifica.Si invia il frame di input per l'elaborazione mediante chiamata non bloccante, l'elaborazione avviene in un altro thread e controlli la prontezza del telaio di uscita anche con chiamata non bloccante.Quindi tutte le pipline non dorme per ogni operazione pesante (decodifica \ codifica \ ecc.) E potrebbe eseguire altre operazioni

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top