//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Devices.Enumeration.idl";
import "Windows.Graphics.DirectX.Direct3D11.idl";
import "Windows.Graphics.Imaging.idl";
import "Windows.Media.idl";
import "Windows.Media.Capture.idl";
import "Windows.Media.Devices.idl";
import "Windows.Media.Devices.Core.idl";
import "Windows.Media.MediaProperties.idl";
import "Windows.Perception.Spatial.idl";
import "Windows.Storage.Streams.idl";
import "Windows.UI.WindowManagement.idl";

// Forward Declare
namespace Windows
{
    namespace Devices
    {
        namespace Enumeration
        {
            runtimeclass DeviceInformation;

            typedef enum Panel Panel;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;

        interface IClosable;

        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace DirectX
        {
            namespace Direct3D11
            {
                interface IDirect3DSurface;
            }
        }
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace Imaging
        {
            runtimeclass SoftwareBitmap;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        runtimeclass AudioFrame;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Capture
        {
            runtimeclass MediaCaptureVideoProfileMediaDescription;

            typedef enum MediaStreamType MediaStreamType;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Devices
        {
            runtimeclass AudioDeviceController;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Devices
        {
            namespace Core
            {
                runtimeclass CameraIntrinsics;

                runtimeclass DepthCorrelatedCoordinateMapper;
            }
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Devices
        {
            runtimeclass VideoDeviceController;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace MediaProperties
        {
            runtimeclass AudioEncodingProperties;

            runtimeclass MediaRatio;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        runtimeclass VideoFrame;
    }
}
namespace Windows
{
    namespace Perception
    {
        namespace Spatial
        {
            runtimeclass SpatialCoordinateSystem;
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace WindowManagement
        {
            runtimeclass DisplayRegion;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Capture
        {
            namespace Frames
            {
                typedef enum MediaFrameReaderAcquisitionMode MediaFrameReaderAcquisitionMode;

                typedef enum MediaFrameReaderStartStatus MediaFrameReaderStartStatus;

                typedef enum MediaFrameSourceGetPropertyStatus MediaFrameSourceGetPropertyStatus;

                typedef enum MediaFrameSourceKind MediaFrameSourceKind;

                typedef enum MediaFrameSourceSetPropertyStatus MediaFrameSourceSetPropertyStatus;

                typedef enum MultiSourceMediaFrameReaderStartStatus MultiSourceMediaFrameReaderStartStatus;

                interface IAudioMediaFrame;

                interface IBufferMediaFrame;

                interface IDepthMediaFrame;

                interface IDepthMediaFrame2;

                interface IDepthMediaFrameFormat;

                interface IInfraredMediaFrame;

                interface IMediaFrameArrivedEventArgs;

                interface IMediaFrameFormat;

                interface IMediaFrameFormat2;

                interface IMediaFrameReader;

                interface IMediaFrameReader2;

                interface IMediaFrameReference;

                interface IMediaFrameReference2;

                interface IMediaFrameSource;

                interface IMediaFrameSourceController;

                interface IMediaFrameSourceController2;

                interface IMediaFrameSourceController3;

                interface IMediaFrameSourceGetPropertyResult;

                interface IMediaFrameSourceGroup;

                interface IMediaFrameSourceGroupStatics;

                interface IMediaFrameSourceInfo;

                interface IMediaFrameSourceInfo2;

                interface IMediaFrameSourceInfo3;

                interface IMediaFrameSourceInfo4;

                interface IMultiSourceMediaFrameArrivedEventArgs;

                interface IMultiSourceMediaFrameReader;

                interface IMultiSourceMediaFrameReader2;

                interface IMultiSourceMediaFrameReference;

                interface IVideoMediaFrame;

                interface IVideoMediaFrameFormat;

                runtimeclass AudioMediaFrame;

                runtimeclass BufferMediaFrame;

                runtimeclass DepthMediaFrame;

                runtimeclass DepthMediaFrameFormat;

                runtimeclass InfraredMediaFrame;

                runtimeclass MediaFrameArrivedEventArgs;

                runtimeclass MediaFrameFormat;

                runtimeclass MediaFrameReader;

                runtimeclass MediaFrameReference;

                runtimeclass MediaFrameSource;

                runtimeclass MediaFrameSourceController;

                runtimeclass MediaFrameSourceGetPropertyResult;

                runtimeclass MediaFrameSourceGroup;

                runtimeclass MediaFrameSourceInfo;

                runtimeclass MultiSourceMediaFrameArrivedEventArgs;

                runtimeclass MultiSourceMediaFrameReader;

                runtimeclass MultiSourceMediaFrameReference;

                runtimeclass VideoMediaFrame;

                runtimeclass VideoMediaFrameFormat;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Media
    {
        namespace Capture
        {
            namespace Frames
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Media.Capture.Frames.MediaFrameSource*>*>;

                    interface Windows.Foundation.Collections.IIterable<Windows.Media.Capture.Frames.MediaFrameFormat*>;

                    interface Windows.Foundation.Collections.IIterable<Windows.Media.Capture.Frames.MediaFrameSource*>;

                    interface Windows.Foundation.Collections.IIterable<Windows.Media.Capture.Frames.MediaFrameSourceGroup*>;

                    interface Windows.Foundation.Collections.IIterable<Windows.Media.Capture.Frames.MediaFrameSourceInfo*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Media.Capture.Frames.MediaFrameSource*>*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Media.Capture.Frames.MediaFrameFormat*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Media.Capture.Frames.MediaFrameSource*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Media.Capture.Frames.MediaFrameSourceGroup*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Media.Capture.Frames.MediaFrameSourceInfo*>;

                    interface Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Media.Capture.Frames.MediaFrameSource*>;

                    interface Windows.Foundation.Collections.IMapView<HSTRING, Windows.Media.Capture.Frames.MediaFrameSource*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Media.Capture.Frames.MediaFrameFormat*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Media.Capture.Frames.MediaFrameSourceGroup*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Media.Capture.Frames.MediaFrameSourceInfo*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Media.Capture.Frames.MediaFrameSourceGroup*>*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Media.Capture.Frames.MediaFrameReader*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Media.Capture.Frames.MediaFrameReaderStartStatus>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Media.Capture.Frames.MediaFrameSourceGetPropertyResult*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Media.Capture.Frames.MediaFrameSourceGroup*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Media.Capture.Frames.MediaFrameSourceSetPropertyStatus>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Media.Capture.Frames.MultiSourceMediaFrameReader*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Media.Capture.Frames.MultiSourceMediaFrameReaderStartStatus>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Media.Capture.Frames.MediaFrameReader*, Windows.Media.Capture.Frames.MediaFrameArrivedEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Media.Capture.Frames.MediaFrameSource*, IInspectable*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Media.Capture.Frames.MultiSourceMediaFrameReader*, Windows.Media.Capture.Frames.MultiSourceMediaFrameArrivedEventArgs*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace Capture
        {
            namespace Frames
            {
                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                enum MediaFrameReaderAcquisitionMode
                {
                    Realtime = 0,
                    Buffered = 1
                };

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                enum MediaFrameReaderStartStatus
                {
                    Success                      = 0,
                    UnknownFailure               = 1,
                    DeviceNotAvailable           = 2,
                    OutputFormatNotSupported     = 3,
                    [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                    ExclusiveControlNotAvailable = 4
                };

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                enum MediaFrameSourceGetPropertyStatus
                {
                    Success                      = 0,
                    UnknownFailure               = 1,
                    NotSupported                 = 2,
                    DeviceNotAvailable           = 3,
                    [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                    MaxPropertyValueSizeTooSmall = 4,
                    [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                    MaxPropertyValueSizeRequired = 5
                };

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                enum MediaFrameSourceKind
                {
                    Custom   = 0,
                    Color    = 1,
                    Infrared = 2,
                    Depth    = 3,
                    [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                    Audio    = 4,
                    [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                    Image    = 5,
                    [contract(Windows.Foundation.UniversalApiContract, 12.0)]
                    Metadata = 6
                };

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                enum MediaFrameSourceSetPropertyStatus
                {
                    Success            = 0,
                    UnknownFailure     = 1,
                    NotSupported       = 2,
                    InvalidValue       = 3,
                    DeviceNotAvailable = 4,
                    NotInControl       = 5
                };

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                enum MultiSourceMediaFrameReaderStartStatus
                {
                    Success               = 0,
                    NotSupported          = 1,
                    InsufficientResources = 2,
                    DeviceNotAvailable    = 3,
                    UnknownFailure        = 4
                };

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Media.Capture.Frames.AudioMediaFrame)]
                [uuid(A3A9FEFF-8021-441B-9A46-E7F0137B7981)]
                interface IAudioMediaFrame : IInspectable
                {
                    [propget] HRESULT FrameReference([out] [retval] Windows.Media.Capture.Frames.MediaFrameReference** value);
                    [propget] HRESULT AudioEncodingProperties([out] [retval] Windows.Media.MediaProperties.AudioEncodingProperties** value);
                    HRESULT GetAudioFrame([out] [retval] Windows.Media.AudioFrame** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Media.Capture.Frames.BufferMediaFrame)]
                [uuid(B5B153C7-9B84-4062-B79C-A365B2596854)]
                interface IBufferMediaFrame : IInspectable
                {
                    [propget] HRESULT FrameReference([out] [retval] Windows.Media.Capture.Frames.MediaFrameReference** value);
                    [propget] HRESULT Buffer([out] [retval] Windows.Storage.Streams.IBuffer** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Media.Capture.Frames.DepthMediaFrame)]
                [uuid(47135E4F-8549-45C0-925B-80D35EFDB10A)]
                interface IDepthMediaFrame : IInspectable
                {
                    [propget] HRESULT FrameReference([out] [retval] Windows.Media.Capture.Frames.MediaFrameReference** value);
                    [propget] HRESULT VideoMediaFrame([out] [retval] Windows.Media.Capture.Frames.VideoMediaFrame** value);
                    [propget] HRESULT DepthFormat([out] [retval] Windows.Media.Capture.Frames.DepthMediaFrameFormat** value);
                    HRESULT TryCreateCoordinateMapper([in] Windows.Media.Devices.Core.CameraIntrinsics* cameraIntrinsics, [in] Windows.Perception.Spatial.SpatialCoordinateSystem* coordinateSystem, [out] [retval] Windows.Media.Devices.Core.DepthCorrelatedCoordinateMapper** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.Media.Capture.Frames.DepthMediaFrame)]
                [uuid(6CCA473D-C4A4-4176-B0CD-33EAE3B35AA3)]
                interface IDepthMediaFrame2 : IInspectable
                {
                    [propget] HRESULT MaxReliableDepth([out] [retval] UINT32* value);
                    [propget] HRESULT MinReliableDepth([out] [retval] UINT32* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Media.Capture.Frames.DepthMediaFrameFormat)]
                [uuid(C312CF40-D729-453E-8780-2E04F140D28E)]
                interface IDepthMediaFrameFormat : IInspectable
                {
                    [propget] HRESULT VideoFormat([out] [retval] Windows.Media.Capture.Frames.VideoMediaFrameFormat** value);
                    [propget] HRESULT DepthScaleInMeters([out] [retval] DOUBLE* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Media.Capture.Frames.InfraredMediaFrame)]
                [uuid(3FD13503-004B-4F0E-91AC-465299B41658)]
                interface IInfraredMediaFrame : IInspectable
                {
                    [propget] HRESULT FrameReference([out] [retval] Windows.Media.Capture.Frames.MediaFrameReference** value);
                    [propget] HRESULT VideoMediaFrame([out] [retval] Windows.Media.Capture.Frames.VideoMediaFrame** value);
                    [propget] HRESULT IsIlluminated([out] [retval] boolean* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MediaFrameArrivedEventArgs)]
                [uuid(0B430ADD-A490-4435-ADA1-9AFFD55239F7)]
                interface IMediaFrameArrivedEventArgs : IInspectable
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MediaFrameFormat)]
                [uuid(71902B4E-B279-4A97-A9DB-BD5A2FB78F39)]
                interface IMediaFrameFormat : IInspectable
                {
                    [propget] HRESULT MajorType([out] [retval] HSTRING* value);
                    [propget] HRESULT Subtype([out] [retval] HSTRING* value);
                    [propget] HRESULT FrameRate([out] [retval] Windows.Media.MediaProperties.MediaRatio** value);
                    [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IMapView<GUID, IInspectable*>** value);
                    [propget] HRESULT VideoFormat([out] [retval] Windows.Media.Capture.Frames.VideoMediaFrameFormat** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MediaFrameFormat)]
                [uuid(63856340-5E87-4C10-86D1-6DF097A6C6A8)]
                interface IMediaFrameFormat2 : IInspectable
                {
                    [propget] HRESULT AudioEncodingProperties([out] [retval] Windows.Media.MediaProperties.AudioEncodingProperties** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MediaFrameReader)]
                [uuid(E4C94395-2028-48ED-90B0-D1C1B162E24C)]
                interface IMediaFrameReader : IInspectable
                    requires
                        Windows.Foundation.IClosable
                {
                    [eventadd] HRESULT FrameArrived([in] Windows.Foundation.TypedEventHandler<Windows.Media.Capture.Frames.MediaFrameReader*, Windows.Media.Capture.Frames.MediaFrameArrivedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT FrameArrived([in] EventRegistrationToken token);
                    HRESULT TryAcquireLatestFrame([out] [retval] Windows.Media.Capture.Frames.MediaFrameReference** value);
                    HRESULT StartAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Capture.Frames.MediaFrameReaderStartStatus>** operation);
                    HRESULT StopAsync([out] [retval] Windows.Foundation.IAsyncAction** action);
                }

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MediaFrameReader)]
                [uuid(871127B3-8531-4050-87CC-A13733CF3E9B)]
                interface IMediaFrameReader2 : IInspectable
                {
                    [propput] HRESULT AcquisitionMode([in] Windows.Media.Capture.Frames.MediaFrameReaderAcquisitionMode value);
                    [propget] HRESULT AcquisitionMode([out] [retval] Windows.Media.Capture.Frames.MediaFrameReaderAcquisitionMode* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MediaFrameReference)]
                [uuid(F6B88641-F0DC-4044-8DC9-961CEDD05BAD)]
                interface IMediaFrameReference : IInspectable
                    requires
                        Windows.Foundation.IClosable
                {
                    [propget] HRESULT SourceKind([out] [retval] Windows.Media.Capture.Frames.MediaFrameSourceKind* value);
                    [propget] HRESULT Format([out] [retval] Windows.Media.Capture.Frames.MediaFrameFormat** value);
                    [propget] HRESULT SystemRelativeTime([out] [retval] Windows.Foundation.IReference<Windows.Foundation.TimeSpan>** value);
                    [propget] HRESULT Duration([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IMapView<GUID, IInspectable*>** value);
                    [propget] HRESULT BufferMediaFrame([out] [retval] Windows.Media.Capture.Frames.BufferMediaFrame** value);
                    [propget] HRESULT VideoMediaFrame([out] [retval] Windows.Media.Capture.Frames.VideoMediaFrame** value);
                    [propget] HRESULT CoordinateSystem([out] [retval] Windows.Perception.Spatial.SpatialCoordinateSystem** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MediaFrameReference)]
                [uuid(DDBC3ECC-D5B2-49EF-836A-947D989B80C1)]
                interface IMediaFrameReference2 : IInspectable
                {
                    [propget] HRESULT AudioMediaFrame([out] [retval] Windows.Media.Capture.Frames.AudioMediaFrame** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MediaFrameSource)]
                [uuid(D6782953-90DB-46A8-8ADD-2AA884A8D253)]
                interface IMediaFrameSource : IInspectable
                {
                    [propget] HRESULT Info([out] [retval] Windows.Media.Capture.Frames.MediaFrameSourceInfo** value);
                    [propget] HRESULT Controller([out] [retval] Windows.Media.Capture.Frames.MediaFrameSourceController** value);
                    [propget] HRESULT SupportedFormats([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Capture.Frames.MediaFrameFormat*>** value);
                    [propget] HRESULT CurrentFormat([out] [retval] Windows.Media.Capture.Frames.MediaFrameFormat** value);
                    HRESULT SetFormatAsync([in] Windows.Media.Capture.Frames.MediaFrameFormat* format, [out] [retval] Windows.Foundation.IAsyncAction** value);
                    [eventadd] HRESULT FormatChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Capture.Frames.MediaFrameSource*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT FormatChanged([in] EventRegistrationToken token);
                    HRESULT TryGetCameraIntrinsics([in] Windows.Media.Capture.Frames.MediaFrameFormat* format, [out] [retval] Windows.Media.Devices.Core.CameraIntrinsics** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MediaFrameSourceController)]
                [uuid(6D076635-316D-4B8F-B7B6-EEB04A8C6525)]
                interface IMediaFrameSourceController : IInspectable
                {
                    HRESULT GetPropertyAsync([in] HSTRING propertyId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Capture.Frames.MediaFrameSourceGetPropertyResult*>** value);
                    HRESULT SetPropertyAsync([in] HSTRING propertyId, [in] IInspectable* propertyValue, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Capture.Frames.MediaFrameSourceSetPropertyStatus>** value);
                    [propget] HRESULT VideoDeviceController([out] [retval] Windows.Media.Devices.VideoDeviceController** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MediaFrameSourceController)]
                [uuid(EFC49FD4-FCF2-4A03-B4E4-AC9628739BEE)]
                interface IMediaFrameSourceController2 : IInspectable
                {
                    HRESULT GetPropertyByExtendedIdAsync([in] UINT32 __extendedPropertyIdSize, [in] [size_is(__extendedPropertyIdSize)] BYTE* extendedPropertyId, [in] Windows.Foundation.IReference<UINT32>* maxPropertyValueSize, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Capture.Frames.MediaFrameSourceGetPropertyResult*>** operation);
                    HRESULT SetPropertyByExtendedIdAsync([in] UINT32 __extendedPropertyIdSize, [in] [size_is(__extendedPropertyIdSize)] BYTE* extendedPropertyId, [in] UINT32 __propertyValueSize, [in] [size_is(__propertyValueSize)] BYTE* propertyValue, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Capture.Frames.MediaFrameSourceSetPropertyStatus>** operation);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MediaFrameSourceController)]
                [uuid(1F0CF815-2464-4651-B1E8-4A82DBDB54DE)]
                interface IMediaFrameSourceController3 : IInspectable
                {
                    [propget] HRESULT AudioDeviceController([out] [retval] Windows.Media.Devices.AudioDeviceController** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MediaFrameSourceGetPropertyResult)]
                [uuid(088616C2-3A64-4BD5-BD2B-E7C898D2F37A)]
                interface IMediaFrameSourceGetPropertyResult : IInspectable
                {
                    [propget] HRESULT Status([out] [retval] Windows.Media.Capture.Frames.MediaFrameSourceGetPropertyStatus* value);
                    [propget] HRESULT Value([out] [retval] IInspectable** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MediaFrameSourceGroup)]
                [uuid(7F605B87-4832-4B5F-AE3D-412FAAB37D34)]
                interface IMediaFrameSourceGroup : IInspectable
                {
                    [propget] HRESULT Id([out] [retval] HSTRING* value);
                    [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
                    [propget] HRESULT SourceInfos([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Capture.Frames.MediaFrameSourceInfo*>** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MediaFrameSourceGroup)]
                [uuid(1C48BFC5-436F-4508-94CF-D5D8B7326445)]
                interface IMediaFrameSourceGroupStatics : IInspectable
                {
                    HRESULT FindAllAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Media.Capture.Frames.MediaFrameSourceGroup*>*>** value);
                    HRESULT FromIdAsync([in] HSTRING id, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Capture.Frames.MediaFrameSourceGroup*>** value);
                    HRESULT GetDeviceSelector([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MediaFrameSourceInfo)]
                [uuid(87BDC9CD-4601-408F-91CF-038318CD0AF3)]
                interface IMediaFrameSourceInfo : IInspectable
                {
                    [propget] HRESULT Id([out] [retval] HSTRING* value);
                    [propget] HRESULT MediaStreamType([out] [retval] Windows.Media.Capture.MediaStreamType* value);
                    [propget] HRESULT SourceKind([out] [retval] Windows.Media.Capture.Frames.MediaFrameSourceKind* value);
                    [propget] HRESULT SourceGroup([out] [retval] Windows.Media.Capture.Frames.MediaFrameSourceGroup** value);
                    [propget] HRESULT DeviceInformation([out] [retval] Windows.Devices.Enumeration.DeviceInformation** value);
                    [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IMapView<GUID, IInspectable*>** value);
                    [propget] HRESULT CoordinateSystem([out] [retval] Windows.Perception.Spatial.SpatialCoordinateSystem** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MediaFrameSourceInfo)]
                [uuid(195A7855-6457-42C6-A769-19B65BD32E6E)]
                interface IMediaFrameSourceInfo2 : IInspectable
                {
                    [propget] HRESULT ProfileId([out] [retval] HSTRING* value);
                    [propget] HRESULT VideoProfileMediaDescription([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Capture.MediaCaptureVideoProfileMediaDescription*>** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 10.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MediaFrameSourceInfo)]
                [uuid(CA824AB6-66EA-5885-A2B6-26C0EEEC3C7B)]
                interface IMediaFrameSourceInfo3 : IInspectable
                {
                    HRESULT GetRelativePanel([in] Windows.UI.WindowManagement.DisplayRegion* displayRegion, [out] [retval] Windows.Devices.Enumeration.Panel* result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 15.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MediaFrameSourceInfo)]
                [uuid(4817D721-85EB-470C-8F37-43CA5498E41D)]
                interface IMediaFrameSourceInfo4 : IInspectable
                {
                    [propget] HRESULT IsShareable([out] [retval] boolean* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MultiSourceMediaFrameArrivedEventArgs)]
                [uuid(63115E01-CF51-48FD-AAB0-6D693EB48127)]
                interface IMultiSourceMediaFrameArrivedEventArgs : IInspectable
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MultiSourceMediaFrameReader)]
                [uuid(8D144402-F763-488D-98F2-B437BCF075E7)]
                interface IMultiSourceMediaFrameReader : IInspectable
                    requires
                        Windows.Foundation.IClosable
                {
                    [eventadd] HRESULT FrameArrived([in] Windows.Foundation.TypedEventHandler<Windows.Media.Capture.Frames.MultiSourceMediaFrameReader*, Windows.Media.Capture.Frames.MultiSourceMediaFrameArrivedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT FrameArrived([in] EventRegistrationToken token);
                    HRESULT TryAcquireLatestFrame([out] [retval] Windows.Media.Capture.Frames.MultiSourceMediaFrameReference** value);
                    HRESULT StartAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Capture.Frames.MultiSourceMediaFrameReaderStartStatus>** operation);
                    HRESULT StopAsync([out] [retval] Windows.Foundation.IAsyncAction** action);
                }

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MultiSourceMediaFrameReader)]
                [uuid(EF5C8ABD-FC5C-4C6B-9D81-3CB9CC637C26)]
                interface IMultiSourceMediaFrameReader2 : IInspectable
                {
                    [propput] HRESULT AcquisitionMode([in] Windows.Media.Capture.Frames.MediaFrameReaderAcquisitionMode value);
                    [propget] HRESULT AcquisitionMode([out] [retval] Windows.Media.Capture.Frames.MediaFrameReaderAcquisitionMode* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.Media.Capture.Frames.MultiSourceMediaFrameReference)]
                [uuid(21964B1A-7FE2-44D6-92E5-298E6D2810E9)]
                interface IMultiSourceMediaFrameReference : IInspectable
                    requires
                        Windows.Foundation.IClosable
                {
                    HRESULT TryGetFrameReferenceBySourceId([in] HSTRING sourceId, [out] [retval] Windows.Media.Capture.Frames.MediaFrameReference** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Media.Capture.Frames.VideoMediaFrame)]
                [uuid(00DD4CCB-32BD-4FE1-A013-7CC13CF5DBCF)]
                interface IVideoMediaFrame : IInspectable
                {
                    [propget] HRESULT FrameReference([out] [retval] Windows.Media.Capture.Frames.MediaFrameReference** value);
                    [propget] HRESULT VideoFormat([out] [retval] Windows.Media.Capture.Frames.VideoMediaFrameFormat** value);
                    [propget] HRESULT SoftwareBitmap([out] [retval] Windows.Graphics.Imaging.SoftwareBitmap** value);
                    [propget] HRESULT Direct3DSurface([out] [retval] Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface** value);
                    [propget] HRESULT CameraIntrinsics([out] [retval] Windows.Media.Devices.Core.CameraIntrinsics** value);
                    [propget] HRESULT InfraredMediaFrame([out] [retval] Windows.Media.Capture.Frames.InfraredMediaFrame** value);
                    [propget] HRESULT DepthMediaFrame([out] [retval] Windows.Media.Capture.Frames.DepthMediaFrame** value);
                    HRESULT GetVideoFrame([out] [retval] Windows.Media.VideoFrame** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.Media.Capture.Frames.VideoMediaFrameFormat)]
                [uuid(46027FC0-D71B-45C7-8F14-6D9A0AE604E4)]
                interface IVideoMediaFrameFormat : IInspectable
                {
                    [propget] HRESULT MediaFrameFormat([out] [retval] Windows.Media.Capture.Frames.MediaFrameFormat** value);
                    [propget] HRESULT DepthFormat([out] [retval] Windows.Media.Capture.Frames.DepthMediaFrameFormat** value);
                    [propget] HRESULT Width([out] [retval] UINT32* value);
                    [propget] HRESULT Height([out] [retval] UINT32* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass AudioMediaFrame
                {
                    [default] interface Windows.Media.Capture.Frames.IAudioMediaFrame;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass BufferMediaFrame
                {
                    [default] interface Windows.Media.Capture.Frames.IBufferMediaFrame;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass DepthMediaFrame
                {
                    [default] interface Windows.Media.Capture.Frames.IDepthMediaFrame;
                    [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Media.Capture.Frames.IDepthMediaFrame2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass DepthMediaFrameFormat
                {
                    [default] interface Windows.Media.Capture.Frames.IDepthMediaFrameFormat;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass InfraredMediaFrame
                {
                    [default] interface Windows.Media.Capture.Frames.IInfraredMediaFrame;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass MediaFrameArrivedEventArgs
                {
                    [default] interface Windows.Media.Capture.Frames.IMediaFrameArrivedEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass MediaFrameFormat
                {
                    [default] interface Windows.Media.Capture.Frames.IMediaFrameFormat;
                    [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.Media.Capture.Frames.IMediaFrameFormat2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass MediaFrameReader
                {
                    [default] interface Windows.Media.Capture.Frames.IMediaFrameReader;
                    interface Windows.Foundation.IClosable;
                    [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.Media.Capture.Frames.IMediaFrameReader2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass MediaFrameReference
                {
                    [default] interface Windows.Media.Capture.Frames.IMediaFrameReference;
                    interface Windows.Foundation.IClosable;
                    [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.Media.Capture.Frames.IMediaFrameReference2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass MediaFrameSource
                {
                    [default] interface Windows.Media.Capture.Frames.IMediaFrameSource;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass MediaFrameSourceController
                {
                    [default] interface Windows.Media.Capture.Frames.IMediaFrameSourceController;
                    [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Media.Capture.Frames.IMediaFrameSourceController2;
                    [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.Media.Capture.Frames.IMediaFrameSourceController3;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass MediaFrameSourceGetPropertyResult
                {
                    [default] interface Windows.Media.Capture.Frames.IMediaFrameSourceGetPropertyResult;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Media.Capture.Frames.IMediaFrameSourceGroupStatics, Windows.Foundation.UniversalApiContract, 3.0)]
                [threading(both)]
                runtimeclass MediaFrameSourceGroup
                {
                    [default] interface Windows.Media.Capture.Frames.IMediaFrameSourceGroup;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass MediaFrameSourceInfo
                {
                    [default] interface Windows.Media.Capture.Frames.IMediaFrameSourceInfo;
                    [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.Media.Capture.Frames.IMediaFrameSourceInfo2;
                    [contract(Windows.Foundation.UniversalApiContract, 10.0)] interface Windows.Media.Capture.Frames.IMediaFrameSourceInfo3;
                    [contract(Windows.Foundation.UniversalApiContract, 15.0)] interface Windows.Media.Capture.Frames.IMediaFrameSourceInfo4;
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass MultiSourceMediaFrameArrivedEventArgs
                {
                    [default] interface Windows.Media.Capture.Frames.IMultiSourceMediaFrameArrivedEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass MultiSourceMediaFrameReader
                {
                    [default] interface Windows.Media.Capture.Frames.IMultiSourceMediaFrameReader;
                    interface Windows.Foundation.IClosable;
                    [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.Media.Capture.Frames.IMultiSourceMediaFrameReader2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass MultiSourceMediaFrameReference
                {
                    [default] interface Windows.Media.Capture.Frames.IMultiSourceMediaFrameReference;
                    interface Windows.Foundation.IClosable;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass VideoMediaFrame
                {
                    [default] interface Windows.Media.Capture.Frames.IVideoMediaFrame;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass VideoMediaFrameFormat
                {
                    [default] interface Windows.Media.Capture.Frames.IVideoMediaFrameFormat;
                }
            }
        }
    }
}
