MultiSourceMediaFrameReference 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
하나 이상의 MediaFrameSource 개체에서 가져온 시간 상관 관계 프레임에 대한 액세스를 제공하는 래퍼 클래스입니다. TryGetFrameReferenceBySourceId를 호출하여 특정 미디어 프레임 원본에서 프레임을 나타내는 MediaFrameReference를 가져옵니다.
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
- 상속
- 특성
- 구현
Windows 요구 사항
디바이스 패밀리 |
Windows 10 Creators Update (10.0.15063.0에서 도입되었습니다.)
|
API contract |
Windows.Foundation.UniversalApiContract (v4.0에서 도입되었습니다.)
|
설명
미디어 프레임 원본에서 MultiSourceMediaFrameReference의 instance 얻으려면 MediaCapture 개체에서 CreateMultiSourceFrameReaderAsync를 호출하고 읽으려는 MediaFrameSource 개체를 전달하여 MultiSourceMediaFrameReader를 만듭니다. StartAsync를 호출한 후 TryAcquireLatestFrame을 호출하여 미디어 프레임 원본의 최신 상관 관계가 있는 프레임을 포함하는 MultiSourceMediaFrameReference를 가져옵니다.
MultiSourceMediaFrameReference.TryGetFrameReferenceBySourceId를 호출하고 원하는 미디어 프레임 원본에 대한 MediaFrameSourceInfo.Id 속성 값을 전달하여 특정 미디어 프레임 원본에서 시간 상관 관계 미디어 프레임을 가져옵니다.
각 MultiSourceMediaFrameReader는 MultiSourceMediaFrameReference.TryGetFrameReferenceBySourceId에서 가져온 MediaFrameReference 개체의 순환 버퍼를 유지 관리합니다. 버퍼의 모든 MediaFrameReference 개체를 사용한 후 TryAcquireLatestFrame에 대한 후속 호출로 인해 시스템에서 가장 오래된 버퍼 개체에서 Close (또는 C#의 Dispose )를 호출하여 다시 사용합니다. 개체가 삭제되면 더 이상 프레임 데이터에 액세스하는 데 사용할 수 없습니다. 따라서 실제로 프레임을 처리하는 데 필요한 것보다 더 오래 MediaFrameReference 개체를 저장해서는 안 됩니다. 앱 시나리오에서 데이터에 대한 참조를 더 오래 유지해야 하는 경우 제공된 API 중 하나를 사용하여 기본 데이터를 가져와야 합니다. 이러한 방법은 다음과 같습니다.
- BufferMediaFrame.Buffer
- VideoMediaFrame.SoftwareBitmap
- VideoMediaFrame.GetVideoFrame
- VideoMediaFrame.CameraIntrinsics 더 이상 사용되지 않을 때 이러한 API에서 반환된 개체에 대해 Close (또는 Dispose)를 호출하는 것은 앱의 책임입니다.
중요
MediaFrameReference의 VideoMediaFrame 속성에서 제공하는 SoftwareBitmap 또는 Direct3DSurface 개체에 액세스하는 경우 시스템은 이러한 개체에 대한 강력한 참조를 만듭니다. 즉, 포함된 MediaFrameReference에서 Dispose를 호출할 때 삭제되지 않습니다. 개체를 즉시 삭제하려면 SoftwareBitmap 또는 Direct3DSurface의 Dispose 메서드를 직접 명시적으로 호출해야 합니다. 그러지 않으면 가비지 수집기에서 결국 이러한 개체의 메모리를 해제하지만 언제 수행될지 알 수 없으며, 할당된 비트맵 또는 화면 수가 시스템에서 허용된 최대 크기를 초과할 경우 새 프레임의 흐름이 중단됩니다.
MediaFrameSource를 사용하여 프레임을 캡처하는 방법에 대한 방법 지침은 MediaFrameReader를 사용하여 미디어 프레임 처리를 참조하세요.
메서드
Close() |
개체 및 연결된 리소스를 삭제합니다. |
Dispose() |
관리되지 않는 리소스의 확보, 해제 또는 다시 설정과 관련된 애플리케이션 정의 작업을 수행합니다. |
TryGetFrameReferenceBySourceId(String) |
지정된 미디어 프레임 원본에 대한 시간 상관 관계가 있는 MediaFrameReference 를 얻으려고 시도합니다. |