Pregunta

Estoy usando la API MediaCodec en una de mis aplicaciones.Utilicé el código de bigflake y la aplicación funciona bastante bien.Pero todavía no puedo entender el parámetro. timeoutUs en ambas funciones dequeueInputBuffer() y la función dequeueOutputBuffer() incluso después de leer sobre ello en la referencia de API.Sería fantástico si alguien pudiera explicar bien el uso y el efecto de este parámetro.¿Y debería ser igual en las dos llamadas a funciones anteriores?

¿Fue útil?

Solución

Bueno, la idea principal es que internamente, por debajo del trabajo de componentes de la capa MediCODEC es asíncrono.Entonces, cuando llame dequeueInputBuffer() o dequeueOutputBuffer(), no se realiza ningún trabajo de ActuLall es el hilo de llamada, simplemente revisando el estado del componente interno durante el tiempo de espera seleccionado hasta que la respuesta esté lista o ocurra el tiempo de espera. Desde mi experiencia, incluso la asignación de amortiguamiento es Async, por lo que si no hay un tampón interno está listo para DEQUEUE ... el tiempo de espera pequeño puede resultar en info_try_again_later.Pero principalmente es para decodificar \ codificación.Usted envía el marco de entrada para el procesamiento mediante una llamada sin bloqueo, el procesamiento ocurre en otro hilo y verifique la preparación del cuadro de salida también con una llamada sin bloqueo.Por lo tanto, todos los gasítricos no duermen por cada operación pesada (decodificación \ codificación \ etc) y podrían realizar otras operaciones

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top