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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Media.idl";
import "Windows.Media.Devices.idl";
import "Windows.Media.MediaProperties.idl";
import "Windows.Storage.idl";
import "Windows.Storage.Streams.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if !defined(__windows2Emedia_h__)")
cpp_quote("#include <Windows.Media.h>")
cpp_quote("#endif // !defined(__windows2Emedia_h__)")
cpp_quote("#if !defined(__windows2Emedia2Edevices_h__)")
cpp_quote("#include <Windows.Media.Devices.h>")
cpp_quote("#endif // !defined(__windows2Emedia2Edevices_h__)")
cpp_quote("#if !defined(__windows2Emedia2Emediaproperties_h__)")
cpp_quote("#include <Windows.Media.MediaProperties.h>")
cpp_quote("#endif // !defined(__windows2Emedia2Emediaproperties_h__)")
cpp_quote("#if !defined(__windows2Estorage_h__)")
cpp_quote("#include <Windows.Storage.h>")
cpp_quote("#endif // !defined(__windows2Estorage_h__)")
cpp_quote("#if !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#include <Windows.Storage.Streams.h>")
cpp_quote("#endif // !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        namespace Collections
        {
            interface IPropertySet;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;

        interface IClosable;

        typedef struct Size Size;

        typedef struct TimeSpan TimeSpan;
    }
}
namespace Windows
{
    namespace Media
    {
        typedef enum AudioProcessing AudioProcessing;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Devices
        {
            runtimeclass AudioDeviceController;

            runtimeclass VideoDeviceController;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        interface IMediaExtension;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace MediaProperties
        {
            interface IMediaEncodingProperties;

            runtimeclass ImageEncodingProperties;

            runtimeclass MediaEncodingProfile;

            runtimeclass MediaPropertySet;
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        interface IStorageFile;

        runtimeclass StorageFile;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IContentTypeProvider;

            interface IInputStream;

            interface IOutputStream;

            interface IRandomAccessStream;

            interface IRandomAccessStreamWithContentType;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Capture
        {
            typedef enum CameraCaptureUIMode CameraCaptureUIMode;

            typedef enum CameraCaptureUIPhotoFormat CameraCaptureUIPhotoFormat;

            typedef enum CameraCaptureUIVideoFormat CameraCaptureUIVideoFormat;

            typedef enum CameraCaptureUIMaxVideoResolution CameraCaptureUIMaxVideoResolution;

            typedef enum CameraCaptureUIMaxPhotoResolution CameraCaptureUIMaxPhotoResolution;

            typedef enum MediaCategory MediaCategory;

            typedef enum MediaStreamType MediaStreamType;

            typedef enum StreamingCaptureMode StreamingCaptureMode;

            typedef enum VideoRotation VideoRotation;

            typedef enum PhotoCaptureSource PhotoCaptureSource;

            typedef enum VideoDeviceCharacteristic VideoDeviceCharacteristic;

            typedef enum PowerlineFrequency PowerlineFrequency;

            delegate MediaCaptureFailedEventHandler;

            delegate RecordLimitationExceededEventHandler;

            interface ICameraCaptureUIPhotoCaptureSettings;

            interface ICameraCaptureUIVideoCaptureSettings;

            interface ICameraCaptureUI;

            interface ICameraOptionsUIStatics;

            interface IMediaCaptureFailedEventArgs;

            interface IMediaCaptureInitializationSettings;

            interface IMediaCaptureInitializationSettings2;

            interface IMediaCapture;

            interface IMediaCapture2;

            interface ILowLagPhotoCapture;

            interface ILowLagMediaRecording;

            interface ILowLagPhotoSequenceCapture;

            interface IPhotoCapturedEventArgs;

            interface ICapturedPhoto;

            interface ICapturedFrame;

            interface IMediaCaptureVideoPreview;

            interface IMediaCaptureSettings;

            interface IMediaCaptureSettings2;

            runtimeclass CameraCaptureUIPhotoCaptureSettings;

            runtimeclass CameraCaptureUIVideoCaptureSettings;

            runtimeclass CameraCaptureUI;

            runtimeclass CameraOptionsUI;

            runtimeclass MediaCaptureFailedEventArgs;

            runtimeclass MediaCapture;

            runtimeclass MediaCaptureInitializationSettings;

            runtimeclass MediaCaptureSettings;

            runtimeclass LowLagMediaRecording;

            runtimeclass LowLagPhotoCapture;

            runtimeclass LowLagPhotoSequenceCapture;

            runtimeclass CapturedPhoto;

            runtimeclass PhotoCapturedEventArgs;

            runtimeclass CapturedFrame;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Media
    {
        namespace Capture
        {
            declare
            {
                interface Windows.Foundation.IAsyncOperation<Windows.Media.Capture.CapturedPhoto*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Capture.LowLagMediaRecording*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Capture.LowLagPhotoCapture*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Capture.LowLagPhotoSequenceCapture*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Capture.LowLagPhotoSequenceCapture*, Windows.Media.Capture.PhotoCapturedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace Capture
        {
            [version(0x06020000)]
            enum CameraCaptureUIMode
            {
                PhotoOrVideo = 0,
                Photo        = 1,
                Video        = 2
            };

            [version(0x06020000)]
            enum CameraCaptureUIPhotoFormat
            {
                Jpeg   = 0,
                Png    = 1,
                JpegXR = 2
            };

            [version(0x06020000)]
            enum CameraCaptureUIVideoFormat
            {
                Mp4 = 0,
                Wmv = 1
            };

            [version(0x06020000)]
            enum CameraCaptureUIMaxVideoResolution
            {
                HighestAvailable   = 0,
                LowDefinition      = 1,
                StandardDefinition = 2,
                HighDefinition     = 3
            };

            [version(0x06020000)]
            enum CameraCaptureUIMaxPhotoResolution
            {
                HighestAvailable = 0,
                VerySmallQvga    = 1,
                SmallVga         = 2,
                MediumXga        = 3,
                Large3M          = 4,
                VeryLarge5M      = 5
            };

            [version(0x06030000)]
            enum MediaCategory
            {
                Other          = 0,
                Communications = 1
            };

            [version(0x06020000)]
            enum MediaStreamType
            {
                VideoPreview = 0,
                VideoRecord  = 1,
                Audio        = 2,
                Photo        = 3
            };

            [version(0x06020000)]
            enum StreamingCaptureMode
            {
                AudioAndVideo = 0,
                Audio         = 1,
                Video         = 2
            };

            [version(0x06020000)]
            enum VideoRotation
            {
                None                = 0,
                Clockwise90Degrees  = 1,
                Clockwise180Degrees = 2,
                Clockwise270Degrees = 3
            };

            [version(0x06020000)]
            enum PhotoCaptureSource
            {
                Auto         = 0,
                VideoPreview = 1,
                Photo        = 2
            };

            [version(0x06020000)]
            enum VideoDeviceCharacteristic
            {
                AllStreamsIndependent         = 0,
                PreviewRecordStreamsIdentical = 1,
                PreviewPhotoStreamsIdentical  = 2,
                RecordPhotoStreamsIdentical   = 3,
                AllStreamsIdentical           = 4
            };

            [version(0x06020000)]
            enum PowerlineFrequency
            {
                Disabled   = 0,
                FiftyHertz = 1,
                SixtyHertz = 2
            };

            [uuid(2014EFFB-5CD8-4F08-A314-0D360DA59F14)]
            [version(0x06020000)]
            delegate
                HRESULT MediaCaptureFailedEventHandler([in] Windows.Media.Capture.MediaCapture* sender, [in] Windows.Media.Capture.MediaCaptureFailedEventArgs* errorEventArgs);

            [uuid(3FAE8F2E-4FE1-4FFD-AABA-E1F1337D4E53)]
            [version(0x06020000)]
            delegate
                HRESULT RecordLimitationExceededEventHandler([in] Windows.Media.Capture.MediaCapture* sender);

            [exclusiveto(Windows.Media.Capture.CameraCaptureUIPhotoCaptureSettings)]
            [uuid(B9F5BE97-3472-46A8-8A9E-04CE42CCC97D)]
            [version(0x06020000)]
            interface ICameraCaptureUIPhotoCaptureSettings : IInspectable
            {
                [propget] HRESULT Format([out] [retval] Windows.Media.Capture.CameraCaptureUIPhotoFormat* value);
                [propput] HRESULT Format([in] Windows.Media.Capture.CameraCaptureUIPhotoFormat value);
                [propget] HRESULT MaxResolution([out] [retval] Windows.Media.Capture.CameraCaptureUIMaxPhotoResolution* value);
                [propput] HRESULT MaxResolution([in] Windows.Media.Capture.CameraCaptureUIMaxPhotoResolution value);
                [propget] HRESULT CroppedSizeInPixels([out] [retval] Windows.Foundation.Size* value);
                [propput] HRESULT CroppedSizeInPixels([in] Windows.Foundation.Size value);
                [propget] HRESULT CroppedAspectRatio([out] [retval] Windows.Foundation.Size* value);
                [propput] HRESULT CroppedAspectRatio([in] Windows.Foundation.Size value);
                [propget] HRESULT AllowCropping([out] [retval] boolean* value);
                [propput] HRESULT AllowCropping([in] boolean value);
            }

            [exclusiveto(Windows.Media.Capture.CameraCaptureUIVideoCaptureSettings)]
            [uuid(64E92D1F-A28D-425A-B84F-E568335FF24E)]
            [version(0x06020000)]
            interface ICameraCaptureUIVideoCaptureSettings : IInspectable
            {
                [propget] HRESULT Format([out] [retval] Windows.Media.Capture.CameraCaptureUIVideoFormat* value);
                [propput] HRESULT Format([in] Windows.Media.Capture.CameraCaptureUIVideoFormat value);
                [propget] HRESULT MaxResolution([out] [retval] Windows.Media.Capture.CameraCaptureUIMaxVideoResolution* value);
                [propput] HRESULT MaxResolution([in] Windows.Media.Capture.CameraCaptureUIMaxVideoResolution value);
                [propget] HRESULT MaxDurationInSeconds([out] [retval] FLOAT* value);
                [propput] HRESULT MaxDurationInSeconds([in] FLOAT value);
                [propget] HRESULT AllowTrimming([out] [retval] boolean* value);
                [propput] HRESULT AllowTrimming([in] boolean value);
            }

            [exclusiveto(Windows.Media.Capture.CameraCaptureUI)]
            [uuid(48587540-6F93-4BB4-B8F3-E89E48948C91)]
            [version(0x06020000)]
            interface ICameraCaptureUI : IInspectable
            {
                [propget] HRESULT PhotoSettings([out] [retval] Windows.Media.Capture.CameraCaptureUIPhotoCaptureSettings** value);
                [propget] HRESULT VideoSettings([out] [retval] Windows.Media.Capture.CameraCaptureUIVideoCaptureSettings** value);
                HRESULT CaptureFileAsync([in] Windows.Media.Capture.CameraCaptureUIMode mode, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.StorageFile*>** asyncInfo);
            }

            [exclusiveto(Windows.Media.Capture.CameraOptionsUI)]
            [uuid(3B0D5E34-3906-4B7D-946C-7BDE844499AE)]
            [version(0x06020000)]
            interface ICameraOptionsUIStatics : IInspectable
            {
                HRESULT Show([in] Windows.Media.Capture.MediaCapture* mediaCapture);
            }

            [exclusiveto(Windows.Media.Capture.MediaCaptureFailedEventArgs)]
            [uuid(80FDE3F4-54C4-42C0-8D19-CEA1A87CA18B)]
            [version(0x06020000)]
            interface IMediaCaptureFailedEventArgs : IInspectable
            {
                [propget] HRESULT Message([out] [retval] HSTRING* value);
                [propget] HRESULT Code([out] [retval] UINT32* value);
            }

            [exclusiveto(Windows.Media.Capture.MediaCaptureInitializationSettings)]
            [uuid(9782BA70-EA65-4900-9356-8CA887726884)]
            [version(0x06020000)]
            interface IMediaCaptureInitializationSettings : IInspectable
            {
                [propput] HRESULT AudioDeviceId([in] HSTRING value);
                [propget] HRESULT AudioDeviceId([out] [retval] HSTRING* value);
                [propput] HRESULT VideoDeviceId([in] HSTRING value);
                [propget] HRESULT VideoDeviceId([out] [retval] HSTRING* value);
                [propput] HRESULT StreamingCaptureMode([in] Windows.Media.Capture.StreamingCaptureMode value);
                [propget] HRESULT StreamingCaptureMode([out] [retval] Windows.Media.Capture.StreamingCaptureMode* value);
                [propput] HRESULT PhotoCaptureSource([in] Windows.Media.Capture.PhotoCaptureSource value);
                [propget] HRESULT PhotoCaptureSource([out] [retval] Windows.Media.Capture.PhotoCaptureSource* value);
            }

            [exclusiveto(Windows.Media.Capture.MediaCaptureInitializationSettings)]
            [uuid(404E0626-C9DC-43E9-AEE4-E6BF1B57B44C)]
            [version(0x06030000)]
            interface IMediaCaptureInitializationSettings2 : IInspectable
            {
                [propput] HRESULT MediaCategory([in] Windows.Media.Capture.MediaCategory value);
                [propget] HRESULT MediaCategory([out] [retval] Windows.Media.Capture.MediaCategory* value);
                [propput] HRESULT AudioProcessing([in] Windows.Media.AudioProcessing value);
                [propget] HRESULT AudioProcessing([out] [retval] Windows.Media.AudioProcessing* value);
            }

            [exclusiveto(Windows.Media.Capture.MediaCapture)]
            [uuid(C61AFBB4-FB10-4A34-AC18-CA80D9C8E7EE)]
            [version(0x06020000)]
            interface IMediaCapture : IInspectable
            {
                [overload("InitializeAsync")] HRESULT InitializeAsync([out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                [overload("InitializeAsync")] HRESULT InitializeWithSettingsAsync([in] Windows.Media.Capture.MediaCaptureInitializationSettings* mediaCaptureInitializationSettings, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                HRESULT StartRecordToStorageFileAsync([in] Windows.Media.MediaProperties.MediaEncodingProfile* encodingProfile, [in] Windows.Storage.IStorageFile* file, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                HRESULT StartRecordToStreamAsync([in] Windows.Media.MediaProperties.MediaEncodingProfile* encodingProfile, [in] Windows.Storage.Streams.IRandomAccessStream* stream, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                [overload("StartRecordToCustomSinkAsync")] HRESULT StartRecordToCustomSinkAsync([in] Windows.Media.MediaProperties.MediaEncodingProfile* encodingProfile, [in] Windows.Media.IMediaExtension* customMediaSink, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                [overload("StartRecordToCustomSinkAsync")] HRESULT StartRecordToCustomSinkIdAsync([in] Windows.Media.MediaProperties.MediaEncodingProfile* encodingProfile, [in] HSTRING customSinkActivationId, [in] Windows.Foundation.Collections.IPropertySet* customSinkSettings, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                HRESULT StopRecordAsync([out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                HRESULT CapturePhotoToStorageFileAsync([in] Windows.Media.MediaProperties.ImageEncodingProperties* type, [in] Windows.Storage.IStorageFile* file, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                HRESULT CapturePhotoToStreamAsync([in] Windows.Media.MediaProperties.ImageEncodingProperties* type, [in] Windows.Storage.Streams.IRandomAccessStream* stream, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                HRESULT AddEffectAsync([in] Windows.Media.Capture.MediaStreamType mediaStreamType, [in] HSTRING effectActivationID, [in] Windows.Foundation.Collections.IPropertySet* effectSettings, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                HRESULT ClearEffectsAsync([in] Windows.Media.Capture.MediaStreamType mediaStreamType, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                HRESULT SetEncoderProperty([in] Windows.Media.Capture.MediaStreamType mediaStreamType, [in] GUID propertyId, [in] IInspectable* propertyValue);
                HRESULT GetEncoderProperty([in] Windows.Media.Capture.MediaStreamType mediaStreamType, [in] GUID propertyId, [out] [retval] IInspectable** propertyValue);
                [eventadd] HRESULT Failed([in] Windows.Media.Capture.MediaCaptureFailedEventHandler* errorEventHandler, [out] [retval] EventRegistrationToken* eventCookie);
                [eventremove] HRESULT Failed([in] EventRegistrationToken eventCookie);
                [eventadd] HRESULT RecordLimitationExceeded([in] Windows.Media.Capture.RecordLimitationExceededEventHandler* recordLimitationExceededEventHandler, [out] [retval] EventRegistrationToken* eventCookie);
                [eventremove] HRESULT RecordLimitationExceeded([in] EventRegistrationToken eventCookie);
                [propget] HRESULT MediaCaptureSettings([out] [retval] Windows.Media.Capture.MediaCaptureSettings** value);
                [propget] HRESULT AudioDeviceController([out] [retval] Windows.Media.Devices.AudioDeviceController** value);
                [propget] HRESULT VideoDeviceController([out] [retval] Windows.Media.Devices.VideoDeviceController** value);
                HRESULT SetPreviewMirroring([in] boolean value);
                HRESULT GetPreviewMirroring([out] [retval] boolean* value);
                HRESULT SetPreviewRotation([in] Windows.Media.Capture.VideoRotation value);
                HRESULT GetPreviewRotation([out] [retval] Windows.Media.Capture.VideoRotation* value);
                HRESULT SetRecordRotation([in] Windows.Media.Capture.VideoRotation value);
                HRESULT GetRecordRotation([out] [retval] Windows.Media.Capture.VideoRotation* value);
            }

            [exclusiveto(Windows.Media.Capture.MediaCapture)]
            [uuid(9CC68260-7DA1-4043-B652-21B8878DAFF9)]
            [version(0x06030000)]
            interface IMediaCapture2 : IInspectable
            {
                HRESULT PrepareLowLagRecordToStorageFileAsync([in] Windows.Media.MediaProperties.MediaEncodingProfile* encodingProfile, [in] Windows.Storage.IStorageFile* file, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Capture.LowLagMediaRecording*>** operation);
                HRESULT PrepareLowLagRecordToStreamAsync([in] Windows.Media.MediaProperties.MediaEncodingProfile* encodingProfile, [in] Windows.Storage.Streams.IRandomAccessStream* stream, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Capture.LowLagMediaRecording*>** operation);
                [overload("PrepareLowLagRecordToCustomSinkAsync")] HRESULT PrepareLowLagRecordToCustomSinkAsync([in] Windows.Media.MediaProperties.MediaEncodingProfile* encodingProfile, [in] Windows.Media.IMediaExtension* customMediaSink, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Capture.LowLagMediaRecording*>** operation);
                [overload("PrepareLowLagRecordToCustomSinkAsync")] HRESULT PrepareLowLagRecordToCustomSinkIdAsync([in] Windows.Media.MediaProperties.MediaEncodingProfile* encodingProfile, [in] HSTRING customSinkActivationId, [in] Windows.Foundation.Collections.IPropertySet* customSinkSettings, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Capture.LowLagMediaRecording*>** operation);
                HRESULT PrepareLowLagPhotoCaptureAsync([in] Windows.Media.MediaProperties.ImageEncodingProperties* type, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Capture.LowLagPhotoCapture*>** operation);
                HRESULT PrepareLowLagPhotoSequenceCaptureAsync([in] Windows.Media.MediaProperties.ImageEncodingProperties* type, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Capture.LowLagPhotoSequenceCapture*>** operation);
                HRESULT SetEncodingPropertiesAsync([in] Windows.Media.Capture.MediaStreamType mediaStreamType, [in] Windows.Media.MediaProperties.IMediaEncodingProperties* mediaEncodingProperties, [in] Windows.Media.MediaProperties.MediaPropertySet* encoderProperties, [out] [retval] Windows.Foundation.IAsyncAction** operation);
            }

            [exclusiveto(Windows.Media.Capture.LowLagPhotoCapture)]
            [uuid(A37251B7-6B44-473D-8F24-F703D6C0EC44)]
            [version(0x06030000)]
            interface ILowLagPhotoCapture : IInspectable
            {
                HRESULT CaptureAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Capture.CapturedPhoto*>** operation);
                HRESULT FinishAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
            }

            [exclusiveto(Windows.Media.Capture.LowLagMediaRecording)]
            [uuid(41C8BAF7-FF3F-49F0-A477-F195E3CE5108)]
            [version(0x06030000)]
            interface ILowLagMediaRecording : IInspectable
            {
                HRESULT StartAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
                HRESULT StopAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
                HRESULT FinishAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
            }

            [exclusiveto(Windows.Media.Capture.LowLagPhotoSequenceCapture)]
            [uuid(7CC346BB-B9A9-4C91-8FFA-287E9C668669)]
            [version(0x06030000)]
            interface ILowLagPhotoSequenceCapture : IInspectable
            {
                HRESULT StartAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
                HRESULT StopAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
                HRESULT FinishAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
                [eventadd] HRESULT PhotoCaptured([in] Windows.Foundation.TypedEventHandler<Windows.Media.Capture.LowLagPhotoSequenceCapture*, Windows.Media.Capture.PhotoCapturedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PhotoCaptured([in] EventRegistrationToken token);
            }

            [exclusiveto(Windows.Media.Capture.PhotoCapturedEventArgs)]
            [uuid(373BFBC1-984E-4FF0-BF85-1C00AABC5A45)]
            [version(0x06030000)]
            interface IPhotoCapturedEventArgs : IInspectable
            {
                [propget] HRESULT Frame([out] [retval] Windows.Media.Capture.CapturedFrame** value);
                [propget] HRESULT Thumbnail([out] [retval] Windows.Media.Capture.CapturedFrame** value);
                [propget] HRESULT CaptureTimeOffset([out] [retval] Windows.Foundation.TimeSpan* value);
            }

            [exclusiveto(Windows.Media.Capture.CapturedPhoto)]
            [uuid(B0CE7E5A-CFCC-4D6C-8AD1-0869208ACA16)]
            [version(0x06030000)]
            interface ICapturedPhoto : IInspectable
            {
                [propget] HRESULT Frame([out] [retval] Windows.Media.Capture.CapturedFrame** value);
                [propget] HRESULT Thumbnail([out] [retval] Windows.Media.Capture.CapturedFrame** value);
            }

            [exclusiveto(Windows.Media.Capture.CapturedFrame)]
            [uuid(1DD2DE1F-571B-44D8-8E80-A08A1578766E)]
            [version(0x06030000)]
            interface ICapturedFrame : IInspectable
                requires
                    Windows.Storage.Streams.IRandomAccessStreamWithContentType,
                    Windows.Storage.Streams.IRandomAccessStream,
                    Windows.Foundation.IClosable,
                    Windows.Storage.Streams.IInputStream,
                    Windows.Storage.Streams.IOutputStream,
                    Windows.Storage.Streams.IContentTypeProvider
            {
                [propget] HRESULT Width([out] [retval] UINT32* value);
                [propget] HRESULT Height([out] [retval] UINT32* value);
            }

            [exclusiveto(Windows.Media.Capture.MediaCapture)]
            [uuid(27727073-549E-447F-A20A-4F03C479D8C0)]
            [version(0x06020000)]
            interface IMediaCaptureVideoPreview : IInspectable
            {
                HRESULT StartPreviewAsync([out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                [overload("StartPreviewToCustomSinkAsync")] HRESULT StartPreviewToCustomSinkAsync([in] Windows.Media.MediaProperties.MediaEncodingProfile* encodingProfile, [in] Windows.Media.IMediaExtension* customMediaSink, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                [overload("StartPreviewToCustomSinkAsync")] HRESULT StartPreviewToCustomSinkIdAsync([in] Windows.Media.MediaProperties.MediaEncodingProfile* encodingProfile, [in] HSTRING customSinkActivationId, [in] Windows.Foundation.Collections.IPropertySet* customSinkSettings, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                HRESULT StopPreviewAsync([out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
            }

            [exclusiveto(Windows.Media.Capture.MediaCaptureSettings)]
            [uuid(1D83AAFE-6D45-4477-8DC4-AC5BC01C4091)]
            [version(0x06020000)]
            interface IMediaCaptureSettings : IInspectable
            {
                [propget] HRESULT AudioDeviceId([out] [retval] HSTRING* value);
                [propget] HRESULT VideoDeviceId([out] [retval] HSTRING* value);
                [propget] HRESULT StreamingCaptureMode([out] [retval] Windows.Media.Capture.StreamingCaptureMode* value);
                [propget] HRESULT PhotoCaptureSource([out] [retval] Windows.Media.Capture.PhotoCaptureSource* value);
                [propget] HRESULT VideoDeviceCharacteristic([out] [retval] Windows.Media.Capture.VideoDeviceCharacteristic* value);
            }

            [exclusiveto(Windows.Media.Capture.MediaCaptureSettings)]
            [uuid(6F9E7CFB-FA9F-4B13-9CBE-5AB94F1F3493)]
            [version(0x06030000)]
            interface IMediaCaptureSettings2 : IInspectable
            {
                [propget] HRESULT ConcurrentRecordAndPhotoSupported([out] [retval] boolean* value);
                [propget] HRESULT ConcurrentRecordAndPhotoSequenceSupported([out] [retval] boolean* value);
                [propget] HRESULT CameraSoundRequiredForRegion([out] [retval] boolean* value);
                [propget] HRESULT Horizontal35mmEquivalentFocalLength([out] [retval] Windows.Foundation.IReference<UINT32>** value);
                [propget] HRESULT PitchOffsetDegrees([out] [retval] Windows.Foundation.IReference<INT32>** value);
                [propget] HRESULT Vertical35mmEquivalentFocalLength([out] [retval] Windows.Foundation.IReference<UINT32>** value);
                [propget] HRESULT MediaCategory([out] [retval] Windows.Media.Capture.MediaCategory* value);
                [propget] HRESULT AudioProcessing([out] [retval] Windows.Media.AudioProcessing* value);
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06020000)]
            runtimeclass CameraCaptureUIPhotoCaptureSettings
            {
                [default] interface Windows.Media.Capture.ICameraCaptureUIPhotoCaptureSettings;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06020000)]
            runtimeclass CameraCaptureUIVideoCaptureSettings
            {
                [default] interface Windows.Media.Capture.ICameraCaptureUIVideoCaptureSettings;
            }

            [activatable(0x06020000)]
            [marshaling_behavior(none)]
            [threading(sta)]
            [version(0x06020000)]
            runtimeclass CameraCaptureUI
            {
                [default] interface Windows.Media.Capture.ICameraCaptureUI;
            }

            [static(Windows.Media.Capture.ICameraOptionsUIStatics, 0x06020000)]
            [threading(mta)]
            [version(0x06020000)]
            runtimeclass CameraOptionsUI
            {
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06020000)]
            runtimeclass MediaCaptureFailedEventArgs
            {
                [default] interface Windows.Media.Capture.IMediaCaptureFailedEventArgs;
            }

            [activatable(0x06020000)]
            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06020000)]
            runtimeclass MediaCapture
            {
                [default] interface Windows.Media.Capture.IMediaCapture;
                interface Windows.Media.Capture.IMediaCaptureVideoPreview;
                [version(0x06030000)] interface Windows.Media.Capture.IMediaCapture2;
                [version(0x06030000)] interface Windows.Foundation.IClosable;
            }

            [activatable(0x06020000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06020000)]
            runtimeclass MediaCaptureInitializationSettings
            {
                [default] interface Windows.Media.Capture.IMediaCaptureInitializationSettings;
                [version(0x06030000)] interface Windows.Media.Capture.IMediaCaptureInitializationSettings2;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06020000)]
            runtimeclass MediaCaptureSettings
            {
                [default] interface Windows.Media.Capture.IMediaCaptureSettings;
                [version(0x06030000)] interface Windows.Media.Capture.IMediaCaptureSettings2;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06030000)]
            runtimeclass LowLagMediaRecording
            {
                [default] interface Windows.Media.Capture.ILowLagMediaRecording;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06030000)]
            runtimeclass LowLagPhotoCapture
            {
                [default] interface Windows.Media.Capture.ILowLagPhotoCapture;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06030000)]
            runtimeclass LowLagPhotoSequenceCapture
            {
                [default] interface Windows.Media.Capture.ILowLagPhotoSequenceCapture;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass CapturedPhoto
            {
                [default] interface Windows.Media.Capture.ICapturedPhoto;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass PhotoCapturedEventArgs
            {
                [default] interface Windows.Media.Capture.IPhotoCapturedEventArgs;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass CapturedFrame
            {
                [default] interface Windows.Media.Capture.ICapturedFrame;
                interface Windows.Storage.Streams.IRandomAccessStreamWithContentType;
                interface Windows.Storage.Streams.IContentTypeProvider;
                interface Windows.Storage.Streams.IRandomAccessStream;
                interface Windows.Storage.Streams.IOutputStream;
                interface Windows.Foundation.IClosable;
                interface Windows.Storage.Streams.IInputStream;
            }
        }
    }
}
