MultiSourceMediaFrameReader.TryAcquireLatestFrame 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
嘗試取得 MultiSourceMediaFrameReference 物件,該物件可讓您從一或多個 MediaFrameSource 物件存取最新的時間相互關聯畫面。
public:
virtual MultiSourceMediaFrameReference ^ TryAcquireLatestFrame() = TryAcquireLatestFrame;
MultiSourceMediaFrameReference TryAcquireLatestFrame();
public MultiSourceMediaFrameReference TryAcquireLatestFrame();
function tryAcquireLatestFrame()
Public Function TryAcquireLatestFrame () As MultiSourceMediaFrameReference
傳回
MultiSourceMediaFrameReference,可讓您從媒體畫面來源存取最新的畫面。
備註
取得 MultiSourceMediaFrameReference 的實例之後,藉由呼叫MultiSourceMediaFrameReference.TryGetFrameReferenceBySourceId,並傳入所需媒體畫面來源的 MediaFrameSourceInfo.Id屬性值,從特定媒體畫面來源取得時間相互關聯的媒體框架。
每個MultiSourceMediaFrameReader都會維護從 TryAcquireLatestFrame取得之MediaFrameReference物件的迴圈緩衝區。 使用緩衝區中的所有 MediaFrameReference 物件之後,後續對 TryAcquireLatestFrame 的呼叫會導致系統在最舊的緩衝區物件上呼叫 Close ) (或 Dispose ,以重複使用它。 一旦處置物件之後,您就無法再使用它來存取框架資料。 基於這個理由,您不應該儲存比您實際需要處理框架還要長的 MediaFrameReference 物件。 如果您的應用程式案例要求您保留資料參考較長的時間,您應該使用提供的其中一個 API 來取得基礎資料。 這些方法包括:
- BufferMediaFrame.Buffer
- VideoMediaFrame.SoftwareBitmap
- VideoMediaFrame.GetVideoFrame
- VideoMediaFrame.CameraIntrinsics 當這些 API 不再使用時,應用程式必須負責呼叫 Close (或 Dispose) 。
重要
如果您要存取 MediaFrameReference 的 VideoMediaFrame 屬性提供的 SoftwareBitmap 或 Direct3DSurface 物件,則系統會建立這些物件的強式參考,這表示當您在包含的 MediaFrameReference 上呼叫 Dispose 時,他們不會被處置。 您必須針對要立即處置的物件明確地直接呼叫 SoftwareBitmap 或 Direct3DSurface 的 Dispose 方法。 否則,記憶體回收行程最終會釋放這些物件的記憶體,但您無法得知何時會釋放,而且如果配置的點陣圖或表面的數量超過系統允許的數量上限,新畫面的資料流就會停止。