MultiSourceMediaFrameReader.TryAcquireLatestFrame 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í.
Intenta obtener un objeto MultiSourceMediaFrameReference que proporciona acceso a los fotogramas correlacionados con tiempo más recientes de uno o varios objetos MediaFrameSource .
public:
virtual MultiSourceMediaFrameReference ^ TryAcquireLatestFrame() = TryAcquireLatestFrame;
MultiSourceMediaFrameReference TryAcquireLatestFrame();
public MultiSourceMediaFrameReference TryAcquireLatestFrame();
function tryAcquireLatestFrame()
Public Function TryAcquireLatestFrame () As MultiSourceMediaFrameReference
Devoluciones
MultiSourceMediaFrameReference que proporciona acceso a los fotogramas más recientes desde los orígenes de fotogramas multimedia.
Comentarios
Después de obtener una instancia de MultiSourceMediaFrameReference, obtenga el marco multimedia correlacionado con el tiempo de un origen de fotogramas multimedia determinado llamando a MultiSourceMediaFrameReference.TryGetFrameReferenceBySourceId y pasando el valor de la propiedad MediaFrameSourceInfo.Id para el origen de fotograma multimedia deseado.
Cada Objeto MultiSourceMediaFrameReader mantiene un búfer circular de objetos MediaFrameReference obtenidos de TryAcquireLatestFrame. Después de usar todos los objetos MediaFrameReference del búfer, las llamadas posteriores a TryAcquireLatestFrame harán que el sistema llame a Close (o Dispose en C#) en el objeto de búfer más antiguo para reutilizarlo. Una vez eliminado el objeto, ya no se puede usar para acceder a los datos de fotogramas. Por este motivo, no debe almacenar el objeto MediaFrameReference más tiempo que el que realmente necesita para procesar el fotograma. Si el escenario de la aplicación requiere que mantenga una referencia a los datos durante más tiempo, debe usar una de las API proporcionadas para obtener los datos subyacentes. Esos métodos incluyen:
- BufferMediaFrame.Buffer
- VideoMediaFrame.SoftwareBitmap
- VideoMediaFrame.GetVideoFrame
- VideoMediaFrame.CameraIntrinsics Es responsabilidad de la aplicación llamar a Close (o Dispose) en los objetos devueltos por estas API cuando ya no se usan.
Importante
Si accedes a los objetos SoftwareBitmap o Direct3DSurface proporcionados por la propiedad VideoMediaFrame de una clase MediaFrameReference, el sistema crea una referencia fuerte a estos objetos, lo que significa que no se eliminarán cuando se llamae a Dispose en la clase MediaFrameReference contenedora. Se debe llamar explícitamente al método Dispose de SoftwareBitmap o Direct3DSurface directamente para los objetos que deben eliminarse inmediatamente. De lo contrario, el recolector de elementos no usados al final liberará la memoria de estos objetos, pero no se puede saber cuando ocurrirá, y si el número de superficies o mapas de bits asignados supera la cantidad máxima permitida por el sistema, el nuevo flujo de fotogramas se detendrá.