MultiSourceMediaFrameReader.TryAcquireLatestFrame Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Tenta obter um objeto MultiSourceMediaFrameReference que fornece acesso aos quadros correlacionados por tempo mais recentes de um ou mais objetos MediaFrameSource .
public:
virtual MultiSourceMediaFrameReference ^ TryAcquireLatestFrame() = TryAcquireLatestFrame;
MultiSourceMediaFrameReference TryAcquireLatestFrame();
public MultiSourceMediaFrameReference TryAcquireLatestFrame();
function tryAcquireLatestFrame()
Public Function TryAcquireLatestFrame () As MultiSourceMediaFrameReference
Retornos
Um MultiSourceMediaFrameReference que fornece acesso aos quadros mais recentes das fontes de quadro de mídia.
Comentários
Depois de obter uma instância de MultiSourceMediaFrameReference, obtenha o quadro de mídia correlacionado com o tempo de uma fonte de quadro de mídia específica chamando MultiSourceMediaFrameReference.TryGetFrameReferenceBySourceId e passando o valor da propriedade MediaFrameSourceInfo.Id para a origem do quadro de mídia desejada.
Cada MultiSourceMediaFrameReader mantém um buffer circular de objetos MediaFrameReference obtidos de TryAcquireLatestFrame. Depois que todos os objetos MediaFrameReference no buffer tiverem sido usados, as chamadas subsequentes para TryAcquireLatestFrame farão com que o sistema chame Close (ou Dispose em C#) no objeto buffer mais antigo para reutilizá-lo. Depois que o objeto for descartado, você não poderá mais usá-lo para acessar os dados do quadro. Por esse motivo, você não deve armazenar o objeto MediaFrameReference por mais tempo do que realmente precisa para processar o quadro. Se o cenário do aplicativo exigir que você mantenha uma referência aos dados por mais tempo, use uma das APIs fornecidas para obter os dados subjacentes. Esses métodos incluem:
- BufferMediaFrame.Buffer
- VideoMediaFrame.SoftwareBitmap
- VideoMediaFrame.GetVideoFrame
- VideoMediaFrame.CameraIntrinsics É responsabilidade do aplicativo chamar Close (ou Dispose) nos objetos retornados por essas APIs quando eles não estão mais sendo usados.
Importante
Se você acessar a propriedade SoftwareBitmap ou Direct3DSurface fornecidas pela propriedade VideoMediaFrame de uma MediaFrameReference, o sistema criará uma forte referência a esses objetos, o que significa que eles não serão descartados quando você chamar Dispose na MediaFrameReference contida. Você deve chamar explicitamente o método Dispose do SoftwareBitmap ou Direct3DSurface diretamente para os objetos serem descartados imediatamente. Caso contrário, o coletor de lixo acabará liberando a memória para esses objetos, mas você não saberá quando isso vai ocorrer, e se o número de bitmaps ou superfícies alocados exceder o valor máximo permitido pelo sistema, o fluxo de quadros novos será interrompido.