//
// 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.Capture.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(__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 MediaProperties
        {
            interface IMediaEncodingProperties;

            runtimeclass MediaRatio;

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

            typedef enum AudioDeviceRole AudioDeviceRole;

            typedef enum CaptureSceneMode CaptureSceneMode;

            typedef enum IsoSpeedPreset IsoSpeedPreset;

            typedef enum ColorTemperaturePreset ColorTemperaturePreset;

            typedef enum FocusPreset FocusPreset;

            typedef enum CaptureUse CaptureUse;

            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 IExposureCompensationControl;

            interface IIsoSpeedControl;

            interface IWhiteBalanceControl;

            interface IExposureControl;

            interface IFocusControl;

            interface IRegionOfInterest;

            interface IRegionsOfInterestControl;

            interface IMediaDeviceController;

            interface IAudioDeviceController;

            interface IVideoDeviceController;

            interface IAdvancedVideoCaptureDeviceController2;

            interface IMediaDeviceControl;

            interface IMediaDeviceControlCapabilities;

            interface IAdvancedVideoCaptureDeviceController;

            interface ILowLagPhotoSequenceControl;

            interface ILowLagPhotoControl;

            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 FocusControl;

            runtimeclass RegionOfInterest;

            runtimeclass RegionsOfInterestControl;

            runtimeclass MediaDeviceControl;

            runtimeclass LowLagPhotoSequenceControl;

            runtimeclass LowLagPhotoControl;

            runtimeclass MediaDeviceControlCapabilities;
        }
    }
}

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

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

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

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

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

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

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

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

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

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

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

                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 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(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 ColorTemperaturePreset
            {
                Auto        = 0,
                Manual      = 1,
                Cloudy      = 2,
                Daylight    = 3,
                Flash       = 4,
                Fluorescent = 5,
                Tungsten    = 6,
                Candlelight = 7
            };

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

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

            [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.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.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.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.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.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);
            }

            [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.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);
            }

            [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;
            }

            [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;
            }

            [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;
            }

            [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;
            }

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

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

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

            [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(0x06020000)]
            runtimeclass MediaDeviceControlCapabilities
            {
                [default] interface Windows.Media.Devices.IMediaDeviceControlCapabilities;
            }
        }
    }
}
