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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Media.Capture.idl";
import "Windows.Media.Devices.Core.idl";
import "Windows.Media.MediaProperties.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(__windows2Emedia2Ecapture_h__)")
cpp_quote("#include <Windows.Media.Capture.h>")
cpp_quote("#endif // !defined(__windows2Emedia2Ecapture_h__)")
cpp_quote("#if !defined(__windows2Emedia2Edevices2Ecore_h__)")
cpp_quote("#include <Windows.Media.Devices.Core.h>")
cpp_quote("#endif // !defined(__windows2Emedia2Edevices2Ecore_h__)")
cpp_quote("#if !defined(__windows2Emedia2Emediaproperties_h__)")
cpp_quote("#include <Windows.Media.MediaProperties.h>")
cpp_quote("#endif // !defined(__windows2Emedia2Emediaproperties_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;

        typedef struct Rect Rect;

        typedef struct TimeSpan TimeSpan;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Capture
        {
            typedef enum MediaStreamType MediaStreamType;

            typedef enum PowerlineFrequency PowerlineFrequency;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Devices
        {
            namespace Core
            {
                runtimeclass VariablePhotoSequenceController;
            }
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace MediaProperties
        {
            interface IMediaEncodingProperties;

            typedef enum MediaPixelFormat MediaPixelFormat;

            runtimeclass MediaRatio;

            typedef enum MediaThumbnailFormat MediaThumbnailFormat;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Devices
        {
            typedef enum TelephonyKey TelephonyKey;

            typedef enum AudioDeviceRole AudioDeviceRole;

            typedef enum IsoSpeedPreset IsoSpeedPreset;

            typedef enum CaptureSceneMode CaptureSceneMode;

            typedef enum MediaCaptureFocusState MediaCaptureFocusState;

            typedef enum CameraStreamState CameraStreamState;

            typedef enum MediaCapturePauseBehavior MediaCapturePauseBehavior;

            typedef enum AdvancedPhotoMode AdvancedPhotoMode;

            typedef enum ColorTemperaturePreset ColorTemperaturePreset;

            typedef enum ZoomTransitionMode ZoomTransitionMode;

            typedef enum FocusPreset FocusPreset;

            typedef enum FocusMode FocusMode;

            typedef enum ManualFocusDistance ManualFocusDistance;

            typedef enum AutoFocusRange AutoFocusRange;

            typedef enum RegionOfInterestType RegionOfInterestType;

            typedef enum HdrVideoMode HdrVideoMode;

            typedef enum OpticalImageStabilizationMode OpticalImageStabilizationMode;

            typedef enum CaptureUse CaptureUse;

            typedef enum MediaCaptureOptimization MediaCaptureOptimization;

            delegate CallControlEventHandler;

            delegate DialRequestedEventHandler;

            delegate RedialRequestedEventHandler;

            delegate KeypadPressedEventHandler;

            interface IDialRequestedEventArgs;

            interface IRedialRequestedEventArgs;

            interface IKeypadPressedEventArgs;

            interface ICallControl;

            interface ICallControlStatics;

            interface IDefaultAudioDeviceChangedEventArgs;

            interface IMediaDeviceStatics;

            interface ISceneModeControl;

            interface ITorchControl;

            interface IFlashControl;

            interface IFlashControl2;

            interface IExposureCompensationControl;

            interface IIsoSpeedControl;

            interface IIsoSpeedControl2;

            interface IWhiteBalanceControl;

            interface IExposureControl;

            interface IZoomSettings;

            interface IZoomControl;

            interface IZoomControl2;

            interface IFocusSettings;

            interface IFocusControl;

            interface IFocusControl2;

            interface IRegionOfInterest;

            interface IRegionOfInterest2;

            interface IRegionsOfInterestControl;

            interface IExposurePriorityVideoControl;

            interface IHdrVideoControl;

            interface IAdvancedPhotoCaptureSettings;

            interface IAdvancedPhotoControl;

            interface IOpticalImageStabilizationControl;

            interface IMediaDeviceController;

            interface IAudioDeviceController;

            interface IVideoDeviceController;

            interface IAdvancedVideoCaptureDeviceController2;

            interface IAdvancedVideoCaptureDeviceController3;

            interface IAdvancedVideoCaptureDeviceController4;

            interface IMediaDeviceControl;

            interface IMediaDeviceControlCapabilities;

            interface IAdvancedVideoCaptureDeviceController;

            interface ILowLagPhotoSequenceControl;

            interface ILowLagPhotoControl;

            interface IPhotoConfirmationControl;

            runtimeclass DialRequestedEventArgs;

            runtimeclass RedialRequestedEventArgs;

            runtimeclass KeypadPressedEventArgs;

            runtimeclass CallControl;

            runtimeclass DefaultAudioCaptureDeviceChangedEventArgs;

            runtimeclass DefaultAudioRenderDeviceChangedEventArgs;

            runtimeclass MediaDevice;

            runtimeclass AudioDeviceController;

            runtimeclass VideoDeviceController;

            runtimeclass SceneModeControl;

            runtimeclass TorchControl;

            runtimeclass FlashControl;

            runtimeclass ExposureCompensationControl;

            runtimeclass IsoSpeedControl;

            runtimeclass WhiteBalanceControl;

            runtimeclass ExposureControl;

            runtimeclass ZoomSettings;

            runtimeclass ZoomControl;

            runtimeclass FocusSettings;

            runtimeclass FocusControl;

            runtimeclass RegionOfInterest;

            runtimeclass RegionsOfInterestControl;

            runtimeclass ExposurePriorityVideoControl;

            runtimeclass HdrVideoControl;

            runtimeclass AdvancedPhotoCaptureSettings;

            runtimeclass AdvancedPhotoControl;

            runtimeclass OpticalImageStabilizationControl;

            runtimeclass MediaDeviceControl;

            runtimeclass LowLagPhotoSequenceControl;

            runtimeclass LowLagPhotoControl;

            runtimeclass PhotoConfirmationControl;

            runtimeclass MediaDeviceControlCapabilities;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Media
    {
        namespace Devices
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Media.Devices.AdvancedPhotoMode>;

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Devices.AutoFocusRange>;

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Devices.CaptureSceneMode>;

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Devices.FocusMode>;

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Devices.FocusPreset>;

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Devices.HdrVideoMode>;

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Devices.IsoSpeedPreset>;

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Devices.ManualFocusDistance>;

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Devices.OpticalImageStabilizationMode>;

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Devices.RegionOfInterest*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Devices.ZoomTransitionMode>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Devices.AdvancedPhotoMode>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Devices.AutoFocusRange>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Devices.CaptureSceneMode>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Devices.FocusMode>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Devices.FocusPreset>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Devices.HdrVideoMode>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Devices.IsoSpeedPreset>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Devices.ManualFocusDistance>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Devices.OpticalImageStabilizationMode>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Devices.RegionOfInterest*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Devices.ZoomTransitionMode>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.AdvancedPhotoMode>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.AutoFocusRange>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.CaptureSceneMode>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.FocusMode>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.FocusPreset>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.HdrVideoMode>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.IsoSpeedPreset>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.ManualFocusDistance>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.OpticalImageStabilizationMode>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.ZoomTransitionMode>;

                interface Windows.Foundation.IReference<Windows.Media.Devices.CaptureSceneMode>;

                interface Windows.Foundation.IReference<Windows.Media.Devices.ManualFocusDistance>;

                interface Windows.Foundation.IReference<Windows.Media.Devices.MediaCaptureFocusState>;

                interface Windows.Foundation.TypedEventHandler<IInspectable*, Windows.Media.Devices.DefaultAudioCaptureDeviceChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<IInspectable*, Windows.Media.Devices.DefaultAudioRenderDeviceChangedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace Devices
        {
            [version(0x06020000)]
            enum TelephonyKey
            {
                D0    = 0,
                D1    = 1,
                D2    = 2,
                D3    = 3,
                D4    = 4,
                D5    = 5,
                D6    = 6,
                D7    = 7,
                D8    = 8,
                D9    = 9,
                Star  = 10,
                Pound = 11,
                A     = 12,
                B     = 13,
                C     = 14,
                D     = 15
            };

            [version(0x06020000)]
            enum AudioDeviceRole
            {
                Default        = 0,
                Communications = 1
            };

            [version(0x06030000)]
            enum IsoSpeedPreset
            {
                Auto     = 0,
                Iso50    = 1,
                Iso80    = 2,
                Iso100   = 3,
                Iso200   = 4,
                Iso400   = 5,
                Iso800   = 6,
                Iso1600  = 7,
                Iso3200  = 8,
                Iso6400  = 9,
                Iso12800 = 10,
                Iso25600 = 11
            };

            [version(0x06030000)]
            enum CaptureSceneMode
            {
                Auto          = 0,
                Manual        = 1,
                Macro         = 2,
                Portrait      = 3,
                Sport         = 4,
                Snow          = 5,
                Night         = 6,
                Beach         = 7,
                Sunset        = 8,
                Candlelight   = 9,
                Landscape     = 10,
                NightPortrait = 11,
                Backlit       = 12
            };

            [version(0x0A000000)]
            enum MediaCaptureFocusState
            {
                Uninitialized = 0,
                Lost          = 1,
                Searching     = 2,
                Focused       = 3,
                Failed        = 4
            };

            [version(0x0A000000)]
            enum CameraStreamState
            {
                NotStreaming      = 0,
                Streaming         = 1,
                BlockedForPrivacy = 2,
                Shutdown          = 3
            };

            [version(0x0A000000)]
            enum MediaCapturePauseBehavior
            {
                RetainHardwareResources  = 0,
                ReleaseHardwareResources = 1
            };

            [version(0x0A000000)]
            enum AdvancedPhotoMode
            {
                Auto     = 0,
                Standard = 1,
                Hdr      = 2
            };

            [version(0x06030000)]
            enum ColorTemperaturePreset
            {
                Auto        = 0,
                Manual      = 1,
                Cloudy      = 2,
                Daylight    = 3,
                Flash       = 4,
                Fluorescent = 5,
                Tungsten    = 6,
                Candlelight = 7
            };

            [version(0x0A000000)]
            enum ZoomTransitionMode
            {
                Auto   = 0,
                Direct = 1,
                Smooth = 2
            };

            [version(0x06030000)]
            enum FocusPreset
            {
                Auto           = 0,
                Manual         = 1,
                AutoMacro      = 2,
                AutoNormal     = 3,
                AutoInfinity   = 4,
                AutoHyperfocal = 5
            };

            [version(0x0A000000)]
            enum FocusMode
            {
                Auto       = 0,
                Single     = 1,
                Continuous = 2,
                Manual     = 3
            };

            [version(0x0A000000)]
            enum ManualFocusDistance
            {
                Infinity   = 0,
                Hyperfocal = 1,
                Nearest    = 2
            };

            [version(0x0A000000)]
            enum AutoFocusRange
            {
                FullRange = 0,
                Macro     = 1,
                Normal    = 2
            };

            [version(0x0A000000)]
            enum RegionOfInterestType
            {
                Unknown = 0,
                Face    = 1
            };

            [version(0x0A000000)]
            enum HdrVideoMode
            {
                Off  = 0,
                On   = 1,
                Auto = 2
            };

            [version(0x0A000000)]
            enum OpticalImageStabilizationMode
            {
                Off  = 0,
                On   = 1,
                Auto = 2
            };

            [version(0x06030000)]
            enum CaptureUse
            {
                None  = 0,
                Photo = 1,
                Video = 2
            };

            [version(0x0A000000)]
            enum MediaCaptureOptimization
            {
                Default            = 0,
                Quality            = 1,
                Latency            = 2,
                Power              = 3,
                LatencyThenQuality = 4,
                LatencyThenPower   = 5,
                PowerAndQuality    = 6
            };

            [uuid(596F759F-50DF-4454-BC63-4D3D01B61958)]
            [version(0x06020000)]
            delegate
                HRESULT CallControlEventHandler([in] Windows.Media.Devices.CallControl* sender);

            [uuid(5ABBFFDB-C21F-4BC4-891B-257E28C1B1A4)]
            [version(0x06020000)]
            delegate
                HRESULT DialRequestedEventHandler([in] Windows.Media.Devices.CallControl* sender, [in] Windows.Media.Devices.DialRequestedEventArgs* e);

            [uuid(BAF257D1-4EBD-4B84-9F47-6EC43D75D8B1)]
            [version(0x06020000)]
            delegate
                HRESULT RedialRequestedEventHandler([in] Windows.Media.Devices.CallControl* sender, [in] Windows.Media.Devices.RedialRequestedEventArgs* e);

            [uuid(E637A454-C527-422C-8926-C9AF83B559A0)]
            [version(0x06020000)]
            delegate
                HRESULT KeypadPressedEventHandler([in] Windows.Media.Devices.CallControl* sender, [in] Windows.Media.Devices.KeypadPressedEventArgs* e);

            [exclusiveto(Windows.Media.Devices.DialRequestedEventArgs)]
            [uuid(037B929E-953C-4286-8866-4F0F376C855A)]
            [version(0x06020000)]
            interface IDialRequestedEventArgs : IInspectable
            {
                HRESULT Handled();
                [propget] HRESULT Contact([out] [retval] IInspectable** value);
            }

            [exclusiveto(Windows.Media.Devices.RedialRequestedEventArgs)]
            [uuid(7EB55209-76AB-4C31-B40E-4B58379D580C)]
            [version(0x06020000)]
            interface IRedialRequestedEventArgs : IInspectable
            {
                HRESULT Handled();
            }

            [exclusiveto(Windows.Media.Devices.KeypadPressedEventArgs)]
            [uuid(D3A43900-B4FA-49CD-9442-89AF6568F601)]
            [version(0x06020000)]
            interface IKeypadPressedEventArgs : IInspectable
            {
                [propget] HRESULT TelephonyKey([out] [retval] Windows.Media.Devices.TelephonyKey* telephonyKey);
            }

            [exclusiveto(Windows.Media.Devices.CallControl)]
            [uuid(A520D0D6-AE8D-45DB-8011-CA49D3B3E578)]
            [version(0x06020000)]
            interface ICallControl : IInspectable
            {
                HRESULT IndicateNewIncomingCall([in] boolean enableRinger, [in] HSTRING callerId, [out] [retval] UINT64* callToken);
                HRESULT IndicateNewOutgoingCall([out] [retval] UINT64* callToken);
                HRESULT IndicateActiveCall([in] UINT64 callToken);
                HRESULT EndCall([in] UINT64 callToken);
                [propget] HRESULT HasRinger([out] [retval] boolean* value);
                [eventadd] HRESULT AnswerRequested([in] Windows.Media.Devices.CallControlEventHandler* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT AnswerRequested([in] EventRegistrationToken token);
                [eventadd] HRESULT HangUpRequested([in] Windows.Media.Devices.CallControlEventHandler* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT HangUpRequested([in] EventRegistrationToken token);
                [eventadd] HRESULT DialRequested([in] Windows.Media.Devices.DialRequestedEventHandler* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT DialRequested([in] EventRegistrationToken token);
                [eventadd] HRESULT RedialRequested([in] Windows.Media.Devices.RedialRequestedEventHandler* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT RedialRequested([in] EventRegistrationToken token);
                [eventadd] HRESULT KeypadPressed([in] Windows.Media.Devices.KeypadPressedEventHandler* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT KeypadPressed([in] EventRegistrationToken token);
                [eventadd] HRESULT AudioTransferRequested([in] Windows.Media.Devices.CallControlEventHandler* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT AudioTransferRequested([in] EventRegistrationToken token);
            }

            [exclusiveto(Windows.Media.Devices.CallControl)]
            [uuid(03945AD5-85AB-40E1-AF19-56C94303B019)]
            [version(0x06020000)]
            interface ICallControlStatics : IInspectable
            {
                HRESULT GetDefault([out] [retval] Windows.Media.Devices.CallControl** callControl);
                HRESULT FromId([in] HSTRING deviceId, [out] [retval] Windows.Media.Devices.CallControl** callControl);
            }

            [uuid(110F882F-1C05-4657-A18E-47C9B69F07AB)]
            [version(0x06020000)]
            interface IDefaultAudioDeviceChangedEventArgs : IInspectable
            {
                [propget] HRESULT Id([out] [retval] HSTRING* value);
                [propget] HRESULT Role([out] [retval] Windows.Media.Devices.AudioDeviceRole* value);
            }

            [exclusiveto(Windows.Media.Devices.MediaDevice)]
            [uuid(AA2D9A40-909F-4BBA-BF8B-0C0D296F14F0)]
            [version(0x06020000)]
            interface IMediaDeviceStatics : IInspectable
            {
                HRESULT GetAudioCaptureSelector([out] [retval] HSTRING* selector);
                HRESULT GetAudioRenderSelector([out] [retval] HSTRING* selector);
                HRESULT GetVideoCaptureSelector([out] [retval] HSTRING* selector);
                HRESULT GetDefaultAudioCaptureId([in] Windows.Media.Devices.AudioDeviceRole role, [out] [retval] HSTRING* deviceId);
                HRESULT GetDefaultAudioRenderId([in] Windows.Media.Devices.AudioDeviceRole role, [out] [retval] HSTRING* deviceId);
                [eventadd] HRESULT DefaultAudioCaptureDeviceChanged([in] Windows.Foundation.TypedEventHandler<IInspectable*, Windows.Media.Devices.DefaultAudioCaptureDeviceChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* cookie);
                [eventremove] HRESULT DefaultAudioCaptureDeviceChanged([in] EventRegistrationToken cookie);
                [eventadd] HRESULT DefaultAudioRenderDeviceChanged([in] Windows.Foundation.TypedEventHandler<IInspectable*, Windows.Media.Devices.DefaultAudioRenderDeviceChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* cookie);
                [eventremove] HRESULT DefaultAudioRenderDeviceChanged([in] EventRegistrationToken cookie);
            }

            [exclusiveto(Windows.Media.Devices.SceneModeControl)]
            [uuid(D48E5AF7-8D59-4854-8C62-12C70BA89B7C)]
            [version(0x06030000)]
            interface ISceneModeControl : IInspectable
            {
                [propget] HRESULT SupportedModes([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.CaptureSceneMode>** value);
                [propget] HRESULT Value([out] [retval] Windows.Media.Devices.CaptureSceneMode* value);
                HRESULT SetValueAsync([in] Windows.Media.Devices.CaptureSceneMode sceneMode, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
            }

            [exclusiveto(Windows.Media.Devices.TorchControl)]
            [uuid(A6053665-8250-416C-919A-724296AFA306)]
            [version(0x06030000)]
            interface ITorchControl : IInspectable
            {
                [propget] HRESULT Supported([out] [retval] boolean* value);
                [propget] HRESULT PowerSupported([out] [retval] boolean* value);
                [propget] HRESULT Enabled([out] [retval] boolean* value);
                [propput] HRESULT Enabled([in] boolean value);
                [propget] HRESULT PowerPercent([out] [retval] FLOAT* value);
                [propput] HRESULT PowerPercent([in] FLOAT value);
            }

            [exclusiveto(Windows.Media.Devices.FlashControl)]
            [uuid(DEF41DBE-7D68-45E3-8C0F-BE7BB32837D0)]
            [version(0x06030000)]
            interface IFlashControl : IInspectable
            {
                [propget] HRESULT Supported([out] [retval] boolean* value);
                [propget] HRESULT PowerSupported([out] [retval] boolean* value);
                [propget] HRESULT RedEyeReductionSupported([out] [retval] boolean* value);
                [propget] HRESULT Enabled([out] [retval] boolean* value);
                [propput] HRESULT Enabled([in] boolean value);
                [propget] HRESULT Auto([out] [retval] boolean* value);
                [propput] HRESULT Auto([in] boolean value);
                [propget] HRESULT RedEyeReduction([out] [retval] boolean* value);
                [propput] HRESULT RedEyeReduction([in] boolean value);
                [propget] HRESULT PowerPercent([out] [retval] FLOAT* value);
                [propput] HRESULT PowerPercent([in] FLOAT value);
            }

            [exclusiveto(Windows.Media.Devices.FlashControl)]
            [uuid(7D29CC9E-75E1-4AF7-BD7D-4E38E1C06CD6)]
            [version(0x0A000000)]
            interface IFlashControl2 : IInspectable
            {
                [propget] HRESULT AssistantLightSupported([out] [retval] boolean* value);
                [propget] HRESULT AssistantLightEnabled([out] [retval] boolean* value);
                [propput] HRESULT AssistantLightEnabled([in] boolean value);
            }

            [exclusiveto(Windows.Media.Devices.ExposureCompensationControl)]
            [uuid(81C8E834-DCEC-4011-A610-1F3847E64ACA)]
            [version(0x06030000)]
            interface IExposureCompensationControl : IInspectable
            {
                [propget] HRESULT Supported([out] [retval] boolean* value);
                [propget] HRESULT Min([out] [retval] FLOAT* value);
                [propget] HRESULT Max([out] [retval] FLOAT* value);
                [propget] HRESULT Step([out] [retval] FLOAT* value);
                [propget] HRESULT Value([out] [retval] FLOAT* value);
                HRESULT SetValueAsync([in] FLOAT value, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
            }

            [exclusiveto(Windows.Media.Devices.IsoSpeedControl)]
            [uuid(27B6C322-25AD-4F1B-AAAB-524AB376CA33)]
            [version(0x06030000)]
            interface IIsoSpeedControl : IInspectable
            {
                [propget] HRESULT Supported([out] [retval] boolean* value);
                [propget] HRESULT SupportedPresets([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.IsoSpeedPreset>** value);
                [propget] HRESULT Preset([out] [retval] Windows.Media.Devices.IsoSpeedPreset* value);
                HRESULT SetPresetAsync([in] Windows.Media.Devices.IsoSpeedPreset preset, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
            }

            [exclusiveto(Windows.Media.Devices.IsoSpeedControl)]
            [uuid(6F1578F2-6D77-4F8A-8C2F-6130B6395053)]
            [version(0x0A000000)]
            interface IIsoSpeedControl2 : IInspectable
            {
                [propget] HRESULT Min([out] [retval] UINT32* value);
                [propget] HRESULT Max([out] [retval] UINT32* value);
                [propget] HRESULT Step([out] [retval] UINT32* value);
                [propget] HRESULT Value([out] [retval] UINT32* value);
                HRESULT SetValueAsync([in] UINT32 isoSpeed, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                [propget] HRESULT Auto([out] [retval] boolean* value);
                HRESULT SetAutoAsync([out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
            }

            [exclusiveto(Windows.Media.Devices.WhiteBalanceControl)]
            [uuid(781F047E-7162-49C8-A8F9-9481C565363E)]
            [version(0x06030000)]
            interface IWhiteBalanceControl : IInspectable
            {
                [propget] HRESULT Supported([out] [retval] boolean* value);
                [propget] HRESULT Preset([out] [retval] Windows.Media.Devices.ColorTemperaturePreset* value);
                HRESULT SetPresetAsync([in] Windows.Media.Devices.ColorTemperaturePreset preset, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                [propget] HRESULT Min([out] [retval] UINT32* value);
                [propget] HRESULT Max([out] [retval] UINT32* value);
                [propget] HRESULT Step([out] [retval] UINT32* value);
                [propget] HRESULT Value([out] [retval] UINT32* value);
                HRESULT SetValueAsync([in] UINT32 temperature, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
            }

            [exclusiveto(Windows.Media.Devices.ExposureControl)]
            [uuid(09E8CBE2-AD96-4F28-A0E0-96ED7E1B5FD2)]
            [version(0x06030000)]
            interface IExposureControl : IInspectable
            {
                [propget] HRESULT Supported([out] [retval] boolean* value);
                [propget] HRESULT Auto([out] [retval] boolean* value);
                HRESULT SetAutoAsync([in] boolean value, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                [propget] HRESULT Min([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT Max([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT Step([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT Value([out] [retval] Windows.Foundation.TimeSpan* value);
                HRESULT SetValueAsync([in] Windows.Foundation.TimeSpan shutterDuration, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
            }

            [exclusiveto(Windows.Media.Devices.ZoomSettings)]
            [uuid(6AD66B24-14B4-4BFD-B18F-88FE24463B52)]
            [version(0x0A000000)]
            interface IZoomSettings : IInspectable
            {
                [propget] HRESULT Mode([out] [retval] Windows.Media.Devices.ZoomTransitionMode* value);
                [propput] HRESULT Mode([in] Windows.Media.Devices.ZoomTransitionMode value);
                [propget] HRESULT Value([out] [retval] FLOAT* value);
                [propput] HRESULT Value([in] FLOAT value);
            }

            [exclusiveto(Windows.Media.Devices.ZoomControl)]
            [uuid(3A1E0B12-32DA-4C17-BFD7-8D0C73C8F5A5)]
            [version(0x0A000000)]
            interface IZoomControl : IInspectable
            {
                [propget] HRESULT Supported([out] [retval] boolean* value);
                [propget] HRESULT Min([out] [retval] FLOAT* value);
                [propget] HRESULT Max([out] [retval] FLOAT* value);
                [propget] HRESULT Step([out] [retval] FLOAT* value);
                [propget] HRESULT Value([out] [retval] FLOAT* value);
                [propput] HRESULT Value([in] FLOAT value);
            }

            [exclusiveto(Windows.Media.Devices.ZoomControl)]
            [uuid(69843DB0-2E99-4641-8529-184F319D1671)]
            [version(0x0A000000)]
            interface IZoomControl2 : IInspectable
            {
                [propget] HRESULT SupportedModes([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.ZoomTransitionMode>** value);
                [propget] HRESULT Mode([out] [retval] Windows.Media.Devices.ZoomTransitionMode* value);
                HRESULT Configure([in] Windows.Media.Devices.ZoomSettings* settings);
            }

            [exclusiveto(Windows.Media.Devices.FocusSettings)]
            [uuid(79958F6B-3263-4275-85D6-AEAE891C96EE)]
            [version(0x0A000000)]
            interface IFocusSettings : IInspectable
            {
                [propget] HRESULT Mode([out] [retval] Windows.Media.Devices.FocusMode* value);
                [propput] HRESULT Mode([in] Windows.Media.Devices.FocusMode value);
                [propget] HRESULT AutoFocusRange([out] [retval] Windows.Media.Devices.AutoFocusRange* value);
                [propput] HRESULT AutoFocusRange([in] Windows.Media.Devices.AutoFocusRange value);
                [propget] HRESULT Value([out] [retval] Windows.Foundation.IReference<UINT32>** value);
                [propput] HRESULT Value([in] Windows.Foundation.IReference<UINT32>* value);
                [propget] HRESULT Distance([out] [retval] Windows.Foundation.IReference<Windows.Media.Devices.ManualFocusDistance>** value);
                [propput] HRESULT Distance([in] Windows.Foundation.IReference<Windows.Media.Devices.ManualFocusDistance>* value);
                [propget] HRESULT WaitForFocus([out] [retval] boolean* value);
                [propput] HRESULT WaitForFocus([in] boolean value);
                [propget] HRESULT DisableDriverFallback([out] [retval] boolean* value);
                [propput] HRESULT DisableDriverFallback([in] boolean value);
            }

            [exclusiveto(Windows.Media.Devices.FocusControl)]
            [uuid(C0D889F6-5228-4453-B153-85606592B238)]
            [version(0x06030000)]
            interface IFocusControl : IInspectable
            {
                [propget] HRESULT Supported([out] [retval] boolean* value);
                [propget] HRESULT SupportedPresets([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.FocusPreset>** value);
                [propget] HRESULT Preset([out] [retval] Windows.Media.Devices.FocusPreset* value);
                [overload("SetPresetAsync")] HRESULT SetPresetAsync([in] Windows.Media.Devices.FocusPreset preset, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                [overload("SetPresetAsync")] HRESULT SetPresetWithCompletionOptionAsync([in] Windows.Media.Devices.FocusPreset preset, [in] boolean completeBeforeFocus, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                [propget] HRESULT Min([out] [retval] UINT32* value);
                [propget] HRESULT Max([out] [retval] UINT32* value);
                [propget] HRESULT Step([out] [retval] UINT32* value);
                [propget] HRESULT Value([out] [retval] UINT32* value);
                HRESULT SetValueAsync([in] UINT32 focus, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                HRESULT FocusAsync([out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
            }

            [exclusiveto(Windows.Media.Devices.FocusControl)]
            [uuid(3F7CFF48-C534-4E9E-94C3-52EF2AFD5D07)]
            [version(0x0A000000)]
            interface IFocusControl2 : IInspectable
            {
                [propget] HRESULT FocusChangedSupported([out] [retval] boolean* value);
                [propget] HRESULT WaitForFocusSupported([out] [retval] boolean* value);
                [propget] HRESULT SupportedFocusModes([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.FocusMode>** value);
                [propget] HRESULT SupportedFocusDistances([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.ManualFocusDistance>** value);
                [propget] HRESULT SupportedFocusRanges([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.AutoFocusRange>** value);
                [propget] HRESULT Mode([out] [retval] Windows.Media.Devices.FocusMode* value);
                [propget] HRESULT FocusState([out] [retval] Windows.Media.Devices.MediaCaptureFocusState* value);
                HRESULT UnlockAsync([out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                HRESULT LockAsync([out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                HRESULT Configure([in] Windows.Media.Devices.FocusSettings* settings);
            }

            [exclusiveto(Windows.Media.Devices.RegionOfInterest)]
            [uuid(E5ECC834-CE66-4E05-A78F-CF391A5EC2D1)]
            [version(0x06030000)]
            interface IRegionOfInterest : IInspectable
            {
                [propget] HRESULT AutoFocusEnabled([out] [retval] boolean* value);
                [propput] HRESULT AutoFocusEnabled([in] boolean value);
                [propget] HRESULT AutoWhiteBalanceEnabled([out] [retval] boolean* value);
                [propput] HRESULT AutoWhiteBalanceEnabled([in] boolean value);
                [propget] HRESULT AutoExposureEnabled([out] [retval] boolean* value);
                [propput] HRESULT AutoExposureEnabled([in] boolean value);
                [propget] HRESULT Bounds([out] [retval] Windows.Foundation.Rect* value);
                [propput] HRESULT Bounds([in] Windows.Foundation.Rect value);
            }

            [exclusiveto(Windows.Media.Devices.RegionOfInterest)]
            [uuid(19FE2A91-73AA-4D51-8A9D-56CCF7DB7F54)]
            [version(0x0A000000)]
            interface IRegionOfInterest2 : IInspectable
            {
                [propget] HRESULT Type([out] [retval] Windows.Media.Devices.RegionOfInterestType* value);
                [propput] HRESULT Type([in] Windows.Media.Devices.RegionOfInterestType value);
                [propget] HRESULT BoundsNormalized([out] [retval] boolean* value);
                [propput] HRESULT BoundsNormalized([in] boolean value);
                [propget] HRESULT Weight([out] [retval] UINT32* value);
                [propput] HRESULT Weight([in] UINT32 value);
            }

            [exclusiveto(Windows.Media.Devices.RegionsOfInterestControl)]
            [uuid(C323F527-AB0B-4558-8B5B-DF5693DB0378)]
            [version(0x06030000)]
            interface IRegionsOfInterestControl : IInspectable
            {
                [propget] HRESULT MaxRegions([out] [retval] UINT32* value);
                [overload("SetRegionsAsync")] HRESULT SetRegionsAsync([in] Windows.Foundation.Collections.IIterable<Windows.Media.Devices.RegionOfInterest*>* regions, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                [overload("SetRegionsAsync")] HRESULT SetRegionsWithLockAsync([in] Windows.Foundation.Collections.IIterable<Windows.Media.Devices.RegionOfInterest*>* regions, [in] boolean lockValues, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                HRESULT ClearRegionsAsync([out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                [propget] HRESULT AutoFocusSupported([out] [retval] boolean* value);
                [propget] HRESULT AutoWhiteBalanceSupported([out] [retval] boolean* value);
                [propget] HRESULT AutoExposureSupported([out] [retval] boolean* value);
            }

            [exclusiveto(Windows.Media.Devices.ExposurePriorityVideoControl)]
            [uuid(2CB240A3-5168-4271-9EA5-47621A98A352)]
            [version(0x0A000000)]
            interface IExposurePriorityVideoControl : IInspectable
            {
                [propget] HRESULT Supported([out] [retval] boolean* value);
                [propget] HRESULT Enabled([out] [retval] boolean* value);
                [propput] HRESULT Enabled([in] boolean value);
            }

            [exclusiveto(Windows.Media.Devices.HdrVideoControl)]
            [uuid(55D8E2D0-30C0-43BF-9B9A-9799D70CED94)]
            [version(0x0A000000)]
            interface IHdrVideoControl : IInspectable
            {
                [propget] HRESULT Supported([out] [retval] boolean* value);
                [propget] HRESULT SupportedModes([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.HdrVideoMode>** value);
                [propget] HRESULT Mode([out] [retval] Windows.Media.Devices.HdrVideoMode* value);
                [propput] HRESULT Mode([in] Windows.Media.Devices.HdrVideoMode value);
            }

            [exclusiveto(Windows.Media.Devices.AdvancedPhotoCaptureSettings)]
            [uuid(08F3863A-0018-445B-93D2-646D1C5ED05C)]
            [version(0x0A000000)]
            interface IAdvancedPhotoCaptureSettings : IInspectable
            {
                [propget] HRESULT Mode([out] [retval] Windows.Media.Devices.AdvancedPhotoMode* value);
                [propput] HRESULT Mode([in] Windows.Media.Devices.AdvancedPhotoMode value);
            }

            [exclusiveto(Windows.Media.Devices.AdvancedPhotoControl)]
            [uuid(C5B15486-9001-4682-9309-68EAE0080EEC)]
            [version(0x0A000000)]
            interface IAdvancedPhotoControl : IInspectable
            {
                [propget] HRESULT Supported([out] [retval] boolean* value);
                [propget] HRESULT SupportedModes([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.AdvancedPhotoMode>** value);
                [propget] HRESULT Mode([out] [retval] Windows.Media.Devices.AdvancedPhotoMode* value);
                HRESULT Configure([in] Windows.Media.Devices.AdvancedPhotoCaptureSettings* settings);
            }

            [exclusiveto(Windows.Media.Devices.OpticalImageStabilizationControl)]
            [uuid(BFAD9C1D-00BC-423B-8EB2-A0178CA94247)]
            [version(0x0A000000)]
            interface IOpticalImageStabilizationControl : IInspectable
            {
                [propget] HRESULT Supported([out] [retval] boolean* value);
                [propget] HRESULT SupportedModes([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Devices.OpticalImageStabilizationMode>** value);
                [propget] HRESULT Mode([out] [retval] Windows.Media.Devices.OpticalImageStabilizationMode* value);
                [propput] HRESULT Mode([in] Windows.Media.Devices.OpticalImageStabilizationMode value);
            }

            [uuid(F6F8F5CE-209A-48FB-86FC-D44578F317E6)]
            [version(0x06020000)]
            interface IMediaDeviceController : IInspectable
            {
                HRESULT GetAvailableMediaStreamProperties([in] Windows.Media.Capture.MediaStreamType mediaStreamType, [out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.MediaProperties.IMediaEncodingProperties*>** value);
                HRESULT GetMediaStreamProperties([in] Windows.Media.Capture.MediaStreamType mediaStreamType, [out] [retval] Windows.Media.MediaProperties.IMediaEncodingProperties** value);
                HRESULT SetMediaStreamPropertiesAsync([in] Windows.Media.Capture.MediaStreamType mediaStreamType, [in] Windows.Media.MediaProperties.IMediaEncodingProperties* mediaEncodingProperties, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
            }

            [exclusiveto(Windows.Media.Devices.AudioDeviceController)]
            [uuid(EDD4A388-79C7-4F7C-90E8-EF934B21580A)]
            [version(0x06020000)]
            interface IAudioDeviceController : IInspectable
                requires
                    Windows.Media.Devices.IMediaDeviceController
            {
                [propput] HRESULT Muted([in] boolean value);
                [propget] HRESULT Muted([out] [retval] boolean* value);
                [propput] HRESULT VolumePercent([in] FLOAT value);
                [propget] HRESULT VolumePercent([out] [retval] FLOAT* value);
            }

            [exclusiveto(Windows.Media.Devices.VideoDeviceController)]
            [uuid(99555575-2E2E-40B8-B6C7-F82D10013210)]
            [version(0x06020000)]
            interface IVideoDeviceController : IInspectable
                requires
                    Windows.Media.Devices.IMediaDeviceController
            {
                [propget] HRESULT Brightness([out] [retval] Windows.Media.Devices.MediaDeviceControl** value);
                [propget] HRESULT Contrast([out] [retval] Windows.Media.Devices.MediaDeviceControl** value);
                [propget] HRESULT Hue([out] [retval] Windows.Media.Devices.MediaDeviceControl** value);
                [propget] HRESULT WhiteBalance([out] [retval] Windows.Media.Devices.MediaDeviceControl** value);
                [propget] HRESULT BacklightCompensation([out] [retval] Windows.Media.Devices.MediaDeviceControl** value);
                [propget] HRESULT Pan([out] [retval] Windows.Media.Devices.MediaDeviceControl** value);
                [propget] HRESULT Tilt([out] [retval] Windows.Media.Devices.MediaDeviceControl** value);
                [propget] HRESULT Zoom([out] [retval] Windows.Media.Devices.MediaDeviceControl** value);
                [propget] HRESULT Roll([out] [retval] Windows.Media.Devices.MediaDeviceControl** value);
                [propget] HRESULT Exposure([out] [retval] Windows.Media.Devices.MediaDeviceControl** value);
                [propget] HRESULT Focus([out] [retval] Windows.Media.Devices.MediaDeviceControl** value);
                HRESULT TrySetPowerlineFrequency([in] Windows.Media.Capture.PowerlineFrequency value, [out] [retval] boolean* succeeded);
                HRESULT TryGetPowerlineFrequency([out] Windows.Media.Capture.PowerlineFrequency* value, [out] [retval] boolean* succeeded);
            }

            [exclusiveto(Windows.Media.Devices.VideoDeviceController)]
            [uuid(8BB94F8F-F11A-43DB-B402-11930B80AE56)]
            [version(0x06030000)]
            interface IAdvancedVideoCaptureDeviceController2 : IInspectable
            {
                [propget] HRESULT LowLagPhotoSequence([out] [retval] Windows.Media.Devices.LowLagPhotoSequenceControl** value);
                [propget] HRESULT LowLagPhoto([out] [retval] Windows.Media.Devices.LowLagPhotoControl** value);
                [propget] HRESULT SceneModeControl([out] [retval] Windows.Media.Devices.SceneModeControl** value);
                [propget] HRESULT TorchControl([out] [retval] Windows.Media.Devices.TorchControl** value);
                [propget] HRESULT FlashControl([out] [retval] Windows.Media.Devices.FlashControl** value);
                [propget] HRESULT WhiteBalanceControl([out] [retval] Windows.Media.Devices.WhiteBalanceControl** value);
                [propget] HRESULT ExposureControl([out] [retval] Windows.Media.Devices.ExposureControl** value);
                [propget] HRESULT FocusControl([out] [retval] Windows.Media.Devices.FocusControl** value);
                [propget] HRESULT ExposureCompensationControl([out] [retval] Windows.Media.Devices.ExposureCompensationControl** value);
                [propget] HRESULT IsoSpeedControl([out] [retval] Windows.Media.Devices.IsoSpeedControl** value);
                [propget] HRESULT RegionsOfInterestControl([out] [retval] Windows.Media.Devices.RegionsOfInterestControl** value);
                [propget] HRESULT PrimaryUse([out] [retval] Windows.Media.Devices.CaptureUse* value);
                [propput] HRESULT PrimaryUse([in] Windows.Media.Devices.CaptureUse value);
            }

            [exclusiveto(Windows.Media.Devices.VideoDeviceController)]
            [uuid(A98B8F34-EE0D-470C-B9F0-4229C4BBD089)]
            [version(0x0A000000)]
            interface IAdvancedVideoCaptureDeviceController3 : IInspectable
            {
                [propget] HRESULT VariablePhotoSequenceController([out] [retval] Windows.Media.Devices.Core.VariablePhotoSequenceController** value);
                [propget] HRESULT PhotoConfirmationControl([out] [retval] Windows.Media.Devices.PhotoConfirmationControl** value);
                [propget] HRESULT ZoomControl([out] [retval] Windows.Media.Devices.ZoomControl** value);
            }

            [exclusiveto(Windows.Media.Devices.VideoDeviceController)]
            [uuid(EA9FBFAF-D371-41C3-9A17-824A87EBDFD2)]
            [version(0x0A000000)]
            interface IAdvancedVideoCaptureDeviceController4 : IInspectable
            {
                [propget] HRESULT ExposurePriorityVideoControl([out] [retval] Windows.Media.Devices.ExposurePriorityVideoControl** value);
                [propget] HRESULT DesiredOptimization([out] [retval] Windows.Media.Devices.MediaCaptureOptimization* value);
                [propput] HRESULT DesiredOptimization([in] Windows.Media.Devices.MediaCaptureOptimization value);
                [propget] HRESULT HdrVideoControl([out] [retval] Windows.Media.Devices.HdrVideoControl** value);
                [propget] HRESULT OpticalImageStabilizationControl([out] [retval] Windows.Media.Devices.OpticalImageStabilizationControl** value);
                [propget] HRESULT AdvancedPhotoControl([out] [retval] Windows.Media.Devices.AdvancedPhotoControl** value);
            }

            [exclusiveto(Windows.Media.Devices.MediaDeviceControl)]
            [uuid(EFA8DFA9-6F75-4863-BA0B-583F3036B4DE)]
            [version(0x06020000)]
            interface IMediaDeviceControl : IInspectable
            {
                [propget] HRESULT Capabilities([out] [retval] Windows.Media.Devices.MediaDeviceControlCapabilities** value);
                HRESULT TryGetValue([out] DOUBLE* value, [out] [retval] boolean* succeeded);
                HRESULT TrySetValue([in] DOUBLE value, [out] [retval] boolean* succeeded);
                HRESULT TryGetAuto([out] boolean* value, [out] [retval] boolean* succeeded);
                HRESULT TrySetAuto([in] boolean value, [out] [retval] boolean* succeeded);
            }

            [exclusiveto(Windows.Media.Devices.MediaDeviceControlCapabilities)]
            [uuid(23005816-EB85-43E2-B92B-8240D5EE70EC)]
            [version(0x06020000)]
            interface IMediaDeviceControlCapabilities : IInspectable
            {
                [propget] HRESULT Supported([out] [retval] boolean* value);
                [propget] HRESULT Min([out] [retval] DOUBLE* value);
                [propget] HRESULT Max([out] [retval] DOUBLE* value);
                [propget] HRESULT Step([out] [retval] DOUBLE* value);
                [propget] HRESULT Default([out] [retval] DOUBLE* value);
                [propget] HRESULT AutoModeSupported([out] [retval] boolean* value);
            }

            [exclusiveto(Windows.Media.Devices.VideoDeviceController)]
            [uuid(DE6FF4D3-2B96-4583-80AB-B5B01DC6A8D7)]
            [version(0x06020000)]
            interface IAdvancedVideoCaptureDeviceController : IInspectable
            {
                HRESULT SetDeviceProperty([in] HSTRING propertyId, [in] IInspectable* propertyValue);
                HRESULT GetDeviceProperty([in] HSTRING propertyId, [out] [retval] IInspectable** propertyValue);
            }

            [exclusiveto(Windows.Media.Devices.LowLagPhotoSequenceControl)]
            [uuid(3DCF909D-6D16-409C-BAFE-B9A594C6FDE6)]
            [version(0x06030000)]
            interface ILowLagPhotoSequenceControl : IInspectable
            {
                [propget] HRESULT Supported([out] [retval] boolean* value);
                [propget] HRESULT MaxPastPhotos([out] [retval] UINT32* value);
                [propget] HRESULT MaxPhotosPerSecond([out] [retval] FLOAT* value);
                [propget] HRESULT PastPhotoLimit([out] [retval] UINT32* value);
                [propput] HRESULT PastPhotoLimit([in] UINT32 value);
                [propget] HRESULT PhotosPerSecondLimit([out] [retval] FLOAT* value);
                [propput] HRESULT PhotosPerSecondLimit([in] FLOAT value);
                HRESULT GetHighestConcurrentFrameRate([in] Windows.Media.MediaProperties.IMediaEncodingProperties* captureProperties, [out] [retval] Windows.Media.MediaProperties.MediaRatio** value);
                HRESULT GetCurrentFrameRate([out] [retval] Windows.Media.MediaProperties.MediaRatio** value);
                [propget] HRESULT ThumbnailEnabled([out] [retval] boolean* value);
                [propput] HRESULT ThumbnailEnabled([in] boolean value);
                [propget] HRESULT ThumbnailFormat([out] [retval] Windows.Media.MediaProperties.MediaThumbnailFormat* value);
                [propput] HRESULT ThumbnailFormat([in] Windows.Media.MediaProperties.MediaThumbnailFormat value);
                [propget] HRESULT DesiredThumbnailSize([out] [retval] UINT32* value);
                [propput] HRESULT DesiredThumbnailSize([in] UINT32 value);
                [propget] HRESULT HardwareAcceleratedThumbnailSupported([out] [retval] UINT32* value);
            }

            [exclusiveto(Windows.Media.Devices.LowLagPhotoControl)]
            [uuid(6D5C4DD0-FADF-415D-AEE6-3BAA529300C9)]
            [version(0x06030000)]
            interface ILowLagPhotoControl : IInspectable
            {
                HRESULT GetHighestConcurrentFrameRate([in] Windows.Media.MediaProperties.IMediaEncodingProperties* captureProperties, [out] [retval] Windows.Media.MediaProperties.MediaRatio** value);
                HRESULT GetCurrentFrameRate([out] [retval] Windows.Media.MediaProperties.MediaRatio** value);
                [propget] HRESULT ThumbnailEnabled([out] [retval] boolean* value);
                [propput] HRESULT ThumbnailEnabled([in] boolean value);
                [propget] HRESULT ThumbnailFormat([out] [retval] Windows.Media.MediaProperties.MediaThumbnailFormat* value);
                [propput] HRESULT ThumbnailFormat([in] Windows.Media.MediaProperties.MediaThumbnailFormat value);
                [propget] HRESULT DesiredThumbnailSize([out] [retval] UINT32* value);
                [propput] HRESULT DesiredThumbnailSize([in] UINT32 value);
                [propget] HRESULT HardwareAcceleratedThumbnailSupported([out] [retval] UINT32* value);
            }

            [exclusiveto(Windows.Media.Devices.PhotoConfirmationControl)]
            [uuid(C8F3F363-FF5E-4582-A9A8-0550F85A4A76)]
            [version(0x0A000000)]
            interface IPhotoConfirmationControl : IInspectable
            {
                [propget] HRESULT Supported([out] [retval] boolean* pbSupported);
                [propget] HRESULT Enabled([out] [retval] boolean* value);
                [propput] HRESULT Enabled([in] boolean value);
                [propget] HRESULT PixelFormat([out] [retval] Windows.Media.MediaProperties.MediaPixelFormat* format);
                [propput] HRESULT PixelFormat([in] Windows.Media.MediaProperties.MediaPixelFormat format);
            }

            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass DialRequestedEventArgs
            {
                [default] interface Windows.Media.Devices.IDialRequestedEventArgs;
            }

            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass RedialRequestedEventArgs
            {
                [default] interface Windows.Media.Devices.IRedialRequestedEventArgs;
            }

            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass KeypadPressedEventArgs
            {
                [default] interface Windows.Media.Devices.IKeypadPressedEventArgs;
            }

            [marshaling_behavior(agile)]
            [static(Windows.Media.Devices.ICallControlStatics, 0x06020000)]
            [threading(both)]
            [version(0x06020000)]
            runtimeclass CallControl
            {
                [default] interface Windows.Media.Devices.ICallControl;
            }

            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass DefaultAudioCaptureDeviceChangedEventArgs
            {
                [default] interface Windows.Media.Devices.IDefaultAudioDeviceChangedEventArgs;
            }

            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass DefaultAudioRenderDeviceChangedEventArgs
            {
                [default] interface Windows.Media.Devices.IDefaultAudioDeviceChangedEventArgs;
            }

            [marshaling_behavior(agile)]
            [static(Windows.Media.Devices.IMediaDeviceStatics, 0x06020000)]
            [threading(mta)]
            [version(0x06020000)]
            runtimeclass MediaDevice
            {
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06020000)]
            runtimeclass AudioDeviceController
            {
                [default] interface Windows.Media.Devices.IAudioDeviceController;
                interface Windows.Media.Devices.IMediaDeviceController;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06020000)]
            runtimeclass VideoDeviceController
            {
                [default] interface Windows.Media.Devices.IVideoDeviceController;
                interface Windows.Media.Devices.IMediaDeviceController;
                interface Windows.Media.Devices.IAdvancedVideoCaptureDeviceController;
                [version(0x06030000)] interface Windows.Media.Devices.IAdvancedVideoCaptureDeviceController2;
                [version(0x0A000000)] interface Windows.Media.Devices.IAdvancedVideoCaptureDeviceController3;
                [version(0x0A000000)] interface Windows.Media.Devices.IAdvancedVideoCaptureDeviceController4;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06030000)]
            runtimeclass SceneModeControl
            {
                [default] interface Windows.Media.Devices.ISceneModeControl;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06030000)]
            runtimeclass TorchControl
            {
                [default] interface Windows.Media.Devices.ITorchControl;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06030000)]
            runtimeclass FlashControl
            {
                [default] interface Windows.Media.Devices.IFlashControl;
                [version(0x0A000000)] interface Windows.Media.Devices.IFlashControl2;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06030000)]
            runtimeclass ExposureCompensationControl
            {
                [default] interface Windows.Media.Devices.IExposureCompensationControl;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06030000)]
            runtimeclass IsoSpeedControl
            {
                [default] interface Windows.Media.Devices.IIsoSpeedControl;
                [version(0x0A000000)] interface Windows.Media.Devices.IIsoSpeedControl2;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06030000)]
            runtimeclass WhiteBalanceControl
            {
                [default] interface Windows.Media.Devices.IWhiteBalanceControl;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06030000)]
            runtimeclass ExposureControl
            {
                [default] interface Windows.Media.Devices.IExposureControl;
            }

            [activatable(0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass ZoomSettings
            {
                [default] interface Windows.Media.Devices.IZoomSettings;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x0A000000)]
            runtimeclass ZoomControl
            {
                [default] interface Windows.Media.Devices.IZoomControl;
                [version(0x0A000000)] interface Windows.Media.Devices.IZoomControl2;
            }

            [activatable(0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass FocusSettings
            {
                [default] interface Windows.Media.Devices.IFocusSettings;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06030000)]
            runtimeclass FocusControl
            {
                [default] interface Windows.Media.Devices.IFocusControl;
                [version(0x0A000000)] interface Windows.Media.Devices.IFocusControl2;
            }

            [activatable(0x06030000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass RegionOfInterest
            {
                [default] interface Windows.Media.Devices.IRegionOfInterest;
                [version(0x0A000000)] interface Windows.Media.Devices.IRegionOfInterest2;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06030000)]
            runtimeclass RegionsOfInterestControl
            {
                [default] interface Windows.Media.Devices.IRegionsOfInterestControl;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass ExposurePriorityVideoControl
            {
                [default] interface Windows.Media.Devices.IExposurePriorityVideoControl;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass HdrVideoControl
            {
                [default] interface Windows.Media.Devices.IHdrVideoControl;
            }

            [activatable(0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AdvancedPhotoCaptureSettings
            {
                [default] interface Windows.Media.Devices.IAdvancedPhotoCaptureSettings;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AdvancedPhotoControl
            {
                [default] interface Windows.Media.Devices.IAdvancedPhotoControl;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass OpticalImageStabilizationControl
            {
                [default] interface Windows.Media.Devices.IOpticalImageStabilizationControl;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06020000)]
            runtimeclass MediaDeviceControl
            {
                [default] interface Windows.Media.Devices.IMediaDeviceControl;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06030000)]
            runtimeclass LowLagPhotoSequenceControl
            {
                [default] interface Windows.Media.Devices.ILowLagPhotoSequenceControl;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06030000)]
            runtimeclass LowLagPhotoControl
            {
                [default] interface Windows.Media.Devices.ILowLagPhotoControl;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x0A000000)]
            runtimeclass PhotoConfirmationControl
            {
                [default] interface Windows.Media.Devices.IPhotoConfirmationControl;
            }

            [marshaling_behavior(standard)]
            [threading(mta)]
            [version(0x06020000)]
            runtimeclass MediaDeviceControlCapabilities
            {
                [default] interface Windows.Media.Devices.IMediaDeviceControlCapabilities;
            }
        }
    }
}
