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é-allocation de 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
Surface de sortie 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é-allocation de toutes les mémoires tampons pour une surface de sortie.
Normalement, les mémoires tampons d’image d’une surface de sortie donnée sont allouées à la demande, afin de réduire la latence de démarrage et la surcharge de mémoire.
Toutefois, dans certains cas, il peut être souhaitable que les mémoires tampons soient allouées avant que toutes les demandes ciblant la 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. Elle peut uniquement être appelée pour une surface de sortie donnée avant que Surface ne 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 la 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 une Surface donnée, 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 imageReader Surface 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 surface de sortie 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
elle est appelée avec la surface fournie à cette méthode. Entre l’appel de préparation et l’appel onSurfacePrepared, la Surface fournie pour préparer ne doit pas être utilisée 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.
Documentation Java 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 le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.