Partage via


MediaFrameReader.TryAcquireLatestFrame Méthode

Définition

Tente d’obtenir un objet MediaFrameReference représentant le dernier frame à partir de MediaFrameSource.

public:
 virtual MediaFrameReference ^ TryAcquireLatestFrame() = TryAcquireLatestFrame;
MediaFrameReference TryAcquireLatestFrame();
public MediaFrameReference TryAcquireLatestFrame();
function tryAcquireLatestFrame()
Public Function TryAcquireLatestFrame () As MediaFrameReference

Retours

MediaFrameReference représentant la dernière image de la source de trame multimédia.

Remarques

Cette méthode ne réussit pas toujours. Si la méthode échoue, l’objet MediaFrameReference retourné sera null. Vous devez donc toujours tester pour voir si l’objet retourné est null avant d’essayer de l’utiliser. Vous devez appeler cette méthode à partir du gestionnaire pour l’événement MediaFrameReader.FrameArrived au lieu d’interroger manuellement les nouvelles images.

Chaque MediaFrameReader conserve une mémoire tampon circulaire d’objets MediaFrameReference obtenus à partir de TryAcquireLatestFrame. Une fois que tous les objets MediaFrameReference de la mémoire tampon ont été utilisés, les appels suivants à TryAcquireLatestFrame entraînent l’appel du système à Fermer (ou Supprimer en C#) sur l’objet tampon le plus ancien afin de le réutiliser. Une fois l’objet supprimé, vous ne pouvez plus l’utiliser pour accéder aux données de trame. Pour cette raison, vous ne devez pas stocker l’objet MediaFrameReference plus longtemps que nécessaire pour traiter le frame. Si votre scénario d’application vous oblige à conserver une référence aux données plus longtemps, vous devez utiliser l’une des API fournies pour obtenir les données sous-jacentes. Il s’agit notamment des paramètres suivants :

Il incombe à l’application d’appeler Close (ou Dispose) sur les objets retournés par ces API lorsqu’ils ne sont plus utilisés.

Important

Si vous accédez aux objets SoftwareBitmap ou Direct3DSurface fournis par la propriété VideoMediaFrame d’un MediaFrameReference, le système crée une référence forte à ces objets. Autrement dit, ils ne sont pas supprimés lorsque vous appelez Dispose sur le conteneur MediaFrameReference. Cela s’applique également aux objets SoftwareBitmap ou Direct3DSurface fournis par l’objet VideoFrame que vous obtenez à partir de la propriété MediaFrameReference.VideoMediaFrame . Vous devez appeler la méthode Dispose de SoftwareBitmap ou de Direct3DSurface explicitement et directement pour les objets à supprimer immédiatement. Sinon, le récupérateur de mémoire va libérer de la mémoire pour ces objets. Mais vous ne pouvez pas savoir quand cela se produit, et si le nombre de surfaces ou d’images bitmap allouées dépasse la quantité maximale autorisée par le système, le flux de nouvelles images s’arrête.

S’applique à