Compartir a través de


MultiSourceMediaFrameReference Clase

Definición

Clase contenedora que proporciona acceso a fotogramas correlacionados con tiempo obtenidos de uno o varios objetos MediaFrameSource . Llame a TryGetFrameReferenceBySourceId para obtener la clase MediaFrameReference que representa un fotograma de un origen de fotogramas multimedia determinado.

public ref class MultiSourceMediaFrameReference sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 262144)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class MultiSourceMediaFrameReference final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 262144)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class MultiSourceMediaFrameReference : System.IDisposable
Public NotInheritable Class MultiSourceMediaFrameReference
Implements IDisposable
Herencia
Object Platform::Object IInspectable MultiSourceMediaFrameReference
Atributos
Implementaciones

Requisitos de Windows

Familia de dispositivos
Windows 10 Creators Update (se introdujo en la versión 10.0.15063.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v4.0)

Comentarios

Para obtener una instancia de MultiSourceMediaFrameReference desde un origen de fotogramas multimedia, cree un objeto MultiSourceMediaFrameReader llamando a CreateMultiSourceFrameReaderAsync en un objeto MediaCapture , pasando los objetos MediaFrameSource desde los que desea leer. Después de comenzar llamando a StartAsync, llame a TryAcquireLatestFrame para obtener un MultiSourceMediaFrameReference que contiene los fotogramas correlacionados más recientes de los orígenes de fotogramas multimedia.

Obtenga el marco multimedia correlacionado con el tiempo de un origen de fotograma multimedia determinado mediante una llamada a MultiSourceMediaFrameReference.TryGetFrameReferenceBySourceId y pasando el valor de la propiedad MediaFrameSourceInfo.Id para el origen de fotogramas multimedia deseado.

Cada objeto MultiSourceMediaFrameReader mantiene un búfer circular de objetos MediaFrameReference obtenidos de MultiSourceMediaFrameReference.TryGetFrameReferenceBySourceId. 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:

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á.

Para obtener instrucciones de procedimientos sobre el uso de MediaFrameSource para capturar fotogramas, consulte Procesamiento de fotogramas multimedia con MediaFrameReader.

Métodos

Close()

Elimina el objeto y los recursos asociados.

Dispose()

Realiza tareas definidas por la aplicación asociadas a la liberación o al restablecimiento de recursos no administrados.

TryGetFrameReferenceBySourceId(String)

Intenta obtener una clase MediaFrameReference correlacionada con el tiempo para el origen de fotogramas multimedia especificado.

Se aplica a

Consulte también