CameraCaptureSession.Prepare(Surface) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Asigne previamente todos los búferes para un Surface de salida.
[Android.Runtime.Register("prepare", "(Landroid/view/Surface;)V", "GetPrepare_Landroid_view_Surface_Handler", ApiSince=23)]
public abstract void Prepare(Android.Views.Surface surface);
[<Android.Runtime.Register("prepare", "(Landroid/view/Surface;)V", "GetPrepare_Landroid_view_Surface_Handler", ApiSince=23)>]
abstract member Prepare : Android.Views.Surface -> unit
Parámetros
- surface
- Surface
el Surface de salida para el que se deben asignar previamente los búferes. Debe ser una de las superficies de salida que se usan para crear esta sesión.
- Atributos
Comentarios
Asigne previamente todos los búferes para un Surface de salida.
Normalmente, los búferes de imagen de una salida determinada Surface se asignan a petición para minimizar la latencia de inicio y la sobrecarga de memoria.
Sin embargo, en algunos casos, puede ser conveniente asignar los búferes antes de que las solicitudes destinadas a la Surface se envíen realmente al dispositivo. Los búferes grandes pueden tardar algún tiempo en asignarse, lo que puede provocar retrasos en el envío de solicitudes hasta que se asignen suficientes búferes para alcanzar el comportamiento de estado estable. Estos retrasos pueden provocar que las ráfagas tarden más tiempo de lo deseado o que se omitan o se produzcan problemas en la salida de la versión preliminar.
El método prepare() se puede usar para realizar esta asignación previa. Solo se puede llamar a para una salida determinada Surface antes de que se use Surface como destino para una solicitud. El número de búferes asignados es la suma del recuento necesario por el consumidor que proporciona el Surface de salida y el número máximo que necesita el dispositivo de cámara para rellenar su canalización. Dado que esto puede ser un número mayor que lo que realmente es necesario para la operación de estado estable, el uso de la preparación puede dar lugar a un mayor consumo de memoria que el comportamiento normal a petición da como resultado. Prepare() también retrasará el tiempo de la primera salida a un Surface determinado, a cambio de velocidad de fotogramas más suave una vez completada la asignación.
Por ejemplo, una aplicación que crea un android.media.ImageReader#newInstance ImageReader con un argumento maxImages de 10, pero solo usa 3 imágenes simultáneas a la vez normalmente solo haría que se asignaran esas 3 imágenes (además de lo que necesita el dispositivo de cámara para un funcionamiento suave). Pero el uso de prepare() en el Surface ImageReader dará lugar a que se asignen todas las 10 imágenes. Por lo tanto, las aplicaciones que usan este método deben tener cuidado de solicitar solo el número de búferes realmente necesarios para su aplicación.
Si la misma salida Surface se usa en sesiones consecutivas (sin cerrar la primera sesión explícitamente), sus búferes ya asignados se transfieren y, si se usó como destino de una solicitud de captura en la primera sesión, no se puede llamar a prepare en ella en la segunda sesión.
Una vez completada la asignación, StateCallback#onSurfacePrepared se invocará con el Surface proporcionado a este método. Entre la llamada de preparación y la llamada onSurfacePrepared, el Surface proporcionado para preparar no debe usarse como destino de un CaptureRequest enviado a esta sesión.
Tenga en cuenta que si dos superficies comparten la misma secuencia a través OutputConfiguration#enableSurfaceSharing de y OutputConfiguration#addSurface, solo es necesario llamar a prepare() en una superficie y StateCallback#onSurfacePrepared se desencadenarán para ambas superficies.
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY LEGACY los dispositivos no pueden asignar previamente búferes de salida; para esos dispositivos, StateCallback#onSurfacePrepared se llamará inmediatamente y no se realizará ninguna asignación previa.
Java documentación para android.hardware.camera2.CameraCaptureSession.prepare(android.view.Surface).
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.