CameraCaptureSession.Prepare(Surface) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Préalloue toutes les mémoires tampons pour une Surface de sortie.
[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
Paramètres
- surface
- Surface
la sortie Surface pour laquelle les mémoires tampons doivent être pré-allouées. Doit être l’une des surfaces de sortie utilisées pour créer cette session.
- Attributs
Remarques
Préalloue toutes les mémoires tampons pour une Surface de sortie.
Normalement, les mémoires tampons d’image pour une sortie donnée Surface sont allouées à la demande, afin de réduire la latence de démarrage et la surcharge mémoire.
Toutefois, dans certains cas, il peut être souhaitable que les mémoires tampons soient allouées avant que toutes les demandes ciblant le Surface soient réellement envoyées à l’appareil. Les mémoires tampons volumineuses peuvent prendre un certain temps pour allouer, ce qui peut entraîner des retards dans l’envoi de demandes jusqu’à ce que des mémoires tampons suffisantes soient allouées pour atteindre le comportement d’état stable. Ces retards peuvent entraîner des rafales plus longues que vous le souhaitez, ou provoquer des sauts ou des sauts dans la sortie d’aperçu.
La méthode prepare() peut être utilisée pour effectuer cette préallocation. Il peut uniquement être appelé pour une sortie donnée Surface avant que cette Surface soit utilisée comme cible pour une requête. Le nombre de mémoires tampons allouées est la somme du nombre nécessaire par le consommateur fournissant le Surface de sortie et le nombre maximal nécessaire par l’appareil photo pour remplir son pipeline. Étant donné qu’il peut s’agir d’un nombre supérieur à ce qui est réellement nécessaire pour l’opération à état stable, l’utilisation de la préparation peut entraîner une consommation de mémoire plus élevée que le comportement normal à la demande entraîne. Prepare() retarde également le temps de la première sortie vers un Surface donné, en échange d’une fréquence d’images plus fluide une fois l’allocation terminée.
Par exemple, une application qui crée un android.media.ImageReader#newInstance ImageReader argument maxImages de 10, mais utilise uniquement 3 images simultanées à la fois ne provoquerait normalement que l’allocation de ces 3 images (plus ce qui est nécessaire par l’appareil photo pour une opération fluide). Toutefois, l’utilisation de prepare() sur l’Surface ImageReader entraîne l’allocation de toutes les 10 images. Par conséquent, les applications qui utilisent cette méthode doivent s’occuper de demander uniquement le nombre de mémoires tampons réellement nécessaires pour leur application.
Si la même sortie Surface est utilisée dans les sessions consécutives (sans fermer explicitement la première session), ses mémoires tampons déjà allouées sont reportées et, si elle a été utilisée comme cible d’une demande de capture dans la première session, la préparation ne peut pas être appelée dans la deuxième session.
Une fois l’allocation terminée, StateCallback#onSurfacePrepared sera appelée avec la Surface fournie à cette méthode. Entre l’appel de préparation et l’appel onSurfacePrepared, le Surface fourni pour préparer ne doit pas être utilisé comme cible d’une captureRequest soumise à cette session.
Notez que si 2 surfaces partagent le même flux via OutputConfiguration#enableSurfaceSharing et OutputConfiguration#addSurface, prepare() doit uniquement être appelée sur une surface, et StateCallback#onSurfacePrepared sera déclenchée pour les deux surfaces.
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY LEGACY les appareils ne peuvent pas préallouter les mémoires tampons de sortie ; pour ces appareils, StateCallback#onSurfacePrepared sera immédiatement appelé et aucune préallocation n’est effectuée.
Java documentation pour android.hardware.camera2.CameraCaptureSession.prepare(android.view.Surface).
Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.