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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Devices.Perception.idl";
import "Windows.Foundation.Numerics.idl";
import "Windows.Graphics.Imaging.idl";
import "Windows.Media.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(__windows2Edevices2Eperception_h__)")
cpp_quote("#include <Windows.Devices.Perception.h>")
cpp_quote("#endif // !defined(__windows2Edevices2Eperception_h__)")
cpp_quote("#if !defined(__windows2Efoundation2Enumerics_h__)")
cpp_quote("#include <Windows.Foundation.Numerics.h>")
cpp_quote("#endif // !defined(__windows2Efoundation2Enumerics_h__)")
cpp_quote("#if !defined(__windows2Egraphics2Eimaging_h__)")
cpp_quote("#include <Windows.Graphics.Imaging.h>")
cpp_quote("#endif // !defined(__windows2Egraphics2Eimaging_h__)")
cpp_quote("#if !defined(__windows2Emedia_h__)")
cpp_quote("#include <Windows.Media.h>")
cpp_quote("#endif // !defined(__windows2Emedia_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Devices
    {
        namespace Perception
        {
            typedef enum PerceptionFrameSourcePropertyChangeStatus PerceptionFrameSourcePropertyChangeStatus;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        namespace Collections
        {
            interface IPropertySet;

            runtimeclass ValueSet;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        runtimeclass Deferral;

        interface IClosable;

        interface IMemoryBuffer;
    }
}
namespace Windows
{
    namespace Foundation
    {
        namespace Numerics
        {
            typedef struct Quaternion Quaternion;

            typedef struct Vector3 Vector3;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        typedef struct Size Size;

        typedef struct TimeSpan TimeSpan;
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace Imaging
        {
            typedef enum BitmapAlphaMode BitmapAlphaMode;

            typedef enum BitmapPixelFormat BitmapPixelFormat;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        runtimeclass VideoFrame;
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Perception
        {
            namespace Provider
            {
                delegate PerceptionStartFaceAuthenticationHandler;

                delegate PerceptionStopFaceAuthenticationHandler;

                interface IKnownPerceptionFrameKindStatics;

                interface IPerceptionControlGroup;

                interface IPerceptionControlGroupFactory;

                interface IPerceptionCorrelation;

                interface IPerceptionCorrelationFactory;

                interface IPerceptionCorrelationGroup;

                interface IPerceptionCorrelationGroupFactory;

                interface IPerceptionFaceAuthenticationGroup;

                interface IPerceptionFaceAuthenticationGroupFactory;

                interface IPerceptionFrame;

                interface IPerceptionFrameProvider;

                interface IPerceptionFrameProviderInfo;

                interface IPerceptionFrameProviderManager;

                interface IPerceptionFrameProviderManagerServiceStatics;

                interface IPerceptionPropertyChangeRequest;

                interface IPerceptionVideoFrameAllocator;

                interface IPerceptionVideoFrameAllocatorFactory;

                runtimeclass KnownPerceptionFrameKind;

                runtimeclass PerceptionControlGroup;

                runtimeclass PerceptionCorrelation;

                runtimeclass PerceptionCorrelationGroup;

                runtimeclass PerceptionFaceAuthenticationGroup;

                runtimeclass PerceptionFrame;

                runtimeclass PerceptionFrameProviderInfo;

                runtimeclass PerceptionFrameProviderManagerService;

                runtimeclass PerceptionPropertyChangeRequest;

                runtimeclass PerceptionVideoFrameAllocator;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Devices
    {
        namespace Perception
        {
            namespace Provider
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Devices.Perception.Provider.PerceptionCorrelation*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Devices.Perception.Provider.PerceptionCorrelation*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Perception.Provider.PerceptionCorrelation*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Perception
        {
            namespace Provider
            {
                [uuid(74816D2A-2090-4670-8C48-EF39E7FF7C26)]
                [version(0x0A000000)]
                delegate
                    HRESULT PerceptionStartFaceAuthenticationHandler([in] Windows.Devices.Perception.Provider.PerceptionFaceAuthenticationGroup* sender, [out] [retval] boolean* result);

                [uuid(387EE6AA-89CD-481E-AADE-DD92F70B2AD7)]
                [version(0x0A000000)]
                delegate
                    HRESULT PerceptionStopFaceAuthenticationHandler([in] Windows.Devices.Perception.Provider.PerceptionFaceAuthenticationGroup* sender);

                [exclusiveto(Windows.Devices.Perception.Provider.KnownPerceptionFrameKind)]
                [uuid(3AE651D6-9669-4106-9FAE-4835C1B96104)]
                [version(0x0A000000)]
                interface IKnownPerceptionFrameKindStatics : IInspectable
                {
                    [propget] HRESULT Color([out] [retval] HSTRING* value);
                    [propget] HRESULT Depth([out] [retval] HSTRING* value);
                    [propget] HRESULT Infrared([out] [retval] HSTRING* value);
                }

                [exclusiveto(Windows.Devices.Perception.Provider.PerceptionControlGroup)]
                [uuid(172C4882-2FD9-4C4E-BA34-FDF20A73DDE5)]
                [version(0x0A000000)]
                interface IPerceptionControlGroup : IInspectable
                {
                    [propget] HRESULT FrameProviderIds([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                }

                [exclusiveto(Windows.Devices.Perception.Provider.PerceptionControlGroup)]
                [uuid(2F1AF2E0-BAF1-453B-BED4-CD9D4619154C)]
                [version(0x0A000000)]
                interface IPerceptionControlGroupFactory : IInspectable
                {
                    HRESULT Create([in] Windows.Foundation.Collections.IIterable<HSTRING>* ids, [out] [retval] Windows.Devices.Perception.Provider.PerceptionControlGroup** result);
                }

                [exclusiveto(Windows.Devices.Perception.Provider.PerceptionCorrelation)]
                [uuid(B4131A82-DFF5-4047-8A19-3B4D805F7176)]
                [version(0x0A000000)]
                interface IPerceptionCorrelation : IInspectable
                {
                    [propget] HRESULT TargetId([out] [retval] HSTRING* value);
                    [propget] HRESULT Position([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                    [propget] HRESULT Orientation([out] [retval] Windows.Foundation.Numerics.Quaternion* value);
                }

                [exclusiveto(Windows.Devices.Perception.Provider.PerceptionCorrelation)]
                [uuid(D4A6C425-2884-4A8F-8134-2835D7286CBF)]
                [version(0x0A000000)]
                interface IPerceptionCorrelationFactory : IInspectable
                {
                    HRESULT Create([in] HSTRING targetId, [in] Windows.Foundation.Numerics.Vector3 position, [in] Windows.Foundation.Numerics.Quaternion orientation, [out] [retval] Windows.Devices.Perception.Provider.PerceptionCorrelation** result);
                }

                [exclusiveto(Windows.Devices.Perception.Provider.PerceptionCorrelationGroup)]
                [uuid(752A0906-36A7-47BB-9B79-56CC6B746770)]
                [version(0x0A000000)]
                interface IPerceptionCorrelationGroup : IInspectable
                {
                    [propget] HRESULT RelativeLocations([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.Perception.Provider.PerceptionCorrelation*>** value);
                }

                [exclusiveto(Windows.Devices.Perception.Provider.PerceptionCorrelationGroup)]
                [uuid(7DFE2088-63DF-48ED-83B1-4AB829132995)]
                [version(0x0A000000)]
                interface IPerceptionCorrelationGroupFactory : IInspectable
                {
                    HRESULT Create([in] Windows.Foundation.Collections.IIterable<Windows.Devices.Perception.Provider.PerceptionCorrelation*>* relativeLocations, [out] [retval] Windows.Devices.Perception.Provider.PerceptionCorrelationGroup** result);
                }

                [exclusiveto(Windows.Devices.Perception.Provider.PerceptionFaceAuthenticationGroup)]
                [uuid(E8019814-4A91-41B0-83A6-881A1775353E)]
                [version(0x0A000000)]
                interface IPerceptionFaceAuthenticationGroup : IInspectable
                {
                    [propget] HRESULT FrameProviderIds([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                }

                [exclusiveto(Windows.Devices.Perception.Provider.PerceptionFaceAuthenticationGroup)]
                [uuid(E68A05D4-B60C-40F4-BCB9-F24D46467320)]
                [version(0x0A000000)]
                interface IPerceptionFaceAuthenticationGroupFactory : IInspectable
                {
                    HRESULT Create([in] Windows.Foundation.Collections.IIterable<HSTRING>* ids, [in] Windows.Devices.Perception.Provider.PerceptionStartFaceAuthenticationHandler* startHandler, [in] Windows.Devices.Perception.Provider.PerceptionStopFaceAuthenticationHandler* stopHandler, [out] [retval] Windows.Devices.Perception.Provider.PerceptionFaceAuthenticationGroup** result);
                }

                [exclusiveto(Windows.Devices.Perception.Provider.PerceptionFrame)]
                [uuid(7CFE7825-54BB-4D9D-BEC5-8EF66151D2AC)]
                [version(0x0A000000)]
                interface IPerceptionFrame : IInspectable
                {
                    [propget] HRESULT RelativeTime([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propput] HRESULT RelativeTime([in] Windows.Foundation.TimeSpan value);
                    [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.ValueSet** value);
                    [propget] HRESULT FrameData([out] [retval] Windows.Foundation.IMemoryBuffer** value);
                }

                [uuid(794F7AB9-B37D-3B33-A10D-30626419CE65)]
                [version(0x0A000000)]
                interface IPerceptionFrameProvider : IInspectable
                    requires
                        Windows.Foundation.IClosable
                {
                    [propget] HRESULT FrameProviderInfo([out] [retval] Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo** result);
                    [propget] HRESULT Available([out] [retval] boolean* value);
                    [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IPropertySet** value);
                    HRESULT Start();
                    HRESULT Stop();
                    HRESULT SetProperty([in] Windows.Devices.Perception.Provider.PerceptionPropertyChangeRequest* value);
                }

                [exclusiveto(Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo)]
                [uuid(CCA959E8-797E-4E83-9B87-036A74142FC4)]
                [version(0x0A000000)]
                interface IPerceptionFrameProviderInfo : IInspectable
                {
                    [propget] HRESULT Id([out] [retval] HSTRING* value);
                    [propput] HRESULT Id([in] HSTRING value);
                    [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
                    [propput] HRESULT DisplayName([in] HSTRING value);
                    [propget] HRESULT DeviceKind([out] [retval] HSTRING* value);
                    [propput] HRESULT DeviceKind([in] HSTRING value);
                    [propget] HRESULT FrameKind([out] [retval] HSTRING* value);
                    [propput] HRESULT FrameKind([in] HSTRING value);
                    [propget] HRESULT Hidden([out] [retval] boolean* value);
                    [propput] HRESULT Hidden([in] boolean value);
                }

                [uuid(A959CE07-EAD3-33DF-8EC1-B924ABE019C4)]
                [version(0x0A000000)]
                interface IPerceptionFrameProviderManager : IInspectable
                    requires
                        Windows.Foundation.IClosable
                {
                    HRESULT GetFrameProvider([in] Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo* frameProviderInfo, [out] [retval] Windows.Devices.Perception.Provider.IPerceptionFrameProvider** result);
                }

                [exclusiveto(Windows.Devices.Perception.Provider.PerceptionFrameProviderManagerService)]
                [uuid(AE8386E6-CAD9-4359-8F96-8EAE51810526)]
                [version(0x0A000000)]
                interface IPerceptionFrameProviderManagerServiceStatics : IInspectable
                {
                    HRESULT RegisterFrameProviderInfo([in] Windows.Devices.Perception.Provider.IPerceptionFrameProviderManager* manager, [in] Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo* frameProviderInfo);
                    HRESULT UnregisterFrameProviderInfo([in] Windows.Devices.Perception.Provider.IPerceptionFrameProviderManager* manager, [in] Windows.Devices.Perception.Provider.PerceptionFrameProviderInfo* frameProviderInfo);
                    HRESULT RegisterFaceAuthenticationGroup([in] Windows.Devices.Perception.Provider.IPerceptionFrameProviderManager* manager, [in] Windows.Devices.Perception.Provider.PerceptionFaceAuthenticationGroup* faceAuthenticationGroup);
                    HRESULT UnregisterFaceAuthenticationGroup([in] Windows.Devices.Perception.Provider.IPerceptionFrameProviderManager* manager, [in] Windows.Devices.Perception.Provider.PerceptionFaceAuthenticationGroup* faceAuthenticationGroup);
                    HRESULT RegisterControlGroup([in] Windows.Devices.Perception.Provider.IPerceptionFrameProviderManager* manager, [in] Windows.Devices.Perception.Provider.PerceptionControlGroup* controlGroup);
                    HRESULT UnregisterControlGroup([in] Windows.Devices.Perception.Provider.IPerceptionFrameProviderManager* manager, [in] Windows.Devices.Perception.Provider.PerceptionControlGroup* controlGroup);
                    HRESULT RegisterCorrelationGroup([in] Windows.Devices.Perception.Provider.IPerceptionFrameProviderManager* manager, [in] Windows.Devices.Perception.Provider.PerceptionCorrelationGroup* correlationGroup);
                    HRESULT UnregisterCorrelationGroup([in] Windows.Devices.Perception.Provider.IPerceptionFrameProviderManager* manager, [in] Windows.Devices.Perception.Provider.PerceptionCorrelationGroup* correlationGroup);
                    HRESULT UpdateAvailabilityForProvider([in] Windows.Devices.Perception.Provider.IPerceptionFrameProvider* provider, [in] boolean available);
                    HRESULT PublishFrameForProvider([in] Windows.Devices.Perception.Provider.IPerceptionFrameProvider* provider, [in] Windows.Devices.Perception.Provider.PerceptionFrame* frame);
                }

                [exclusiveto(Windows.Devices.Perception.Provider.PerceptionPropertyChangeRequest)]
                [uuid(3C5AEB51-350B-4DF8-9414-59E09815510B)]
                [version(0x0A000000)]
                interface IPerceptionPropertyChangeRequest : IInspectable
                {
                    [propget] HRESULT Name([out] [retval] HSTRING* value);
                    [propget] HRESULT Value([out] [retval] IInspectable** value);
                    [propget] HRESULT Status([out] [retval] Windows.Devices.Perception.PerceptionFrameSourcePropertyChangeStatus* value);
                    [propput] HRESULT Status([in] Windows.Devices.Perception.PerceptionFrameSourcePropertyChangeStatus value);
                    HRESULT GetDeferral([out] [retval] Windows.Foundation.Deferral** result);
                }

                [exclusiveto(Windows.Devices.Perception.Provider.PerceptionVideoFrameAllocator)]
                [uuid(4C38A7DA-FDD8-4ED4-A039-2A6F9B235038)]
                [version(0x0A000000)]
                interface IPerceptionVideoFrameAllocator : IInspectable
                    requires
                        Windows.Foundation.IClosable
                {
                    HRESULT AllocateFrame([out] [retval] Windows.Devices.Perception.Provider.PerceptionFrame** value);
                    HRESULT CopyFromVideoFrame([in] Windows.Media.VideoFrame* frame, [out] [retval] Windows.Devices.Perception.Provider.PerceptionFrame** value);
                }

                [exclusiveto(Windows.Devices.Perception.Provider.PerceptionVideoFrameAllocator)]
                [uuid(1A58B0E1-E91A-481E-B876-A89E2BBC6B33)]
                [version(0x0A000000)]
                interface IPerceptionVideoFrameAllocatorFactory : IInspectable
                {
                    HRESULT Create([in] UINT32 maxOutstandingFrameCountForWrite, [in] Windows.Graphics.Imaging.BitmapPixelFormat format, [in] Windows.Foundation.Size resolution, [in] Windows.Graphics.Imaging.BitmapAlphaMode alpha, [out] [retval] Windows.Devices.Perception.Provider.PerceptionVideoFrameAllocator** result);
                }

                [marshaling_behavior(agile)]
                [static(Windows.Devices.Perception.Provider.IKnownPerceptionFrameKindStatics, 0x0A000000)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass KnownPerceptionFrameKind
                {
                }

                [activatable(Windows.Devices.Perception.Provider.IPerceptionControlGroupFactory, 0x0A000000)]
                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass PerceptionControlGroup
                {
                    [default] interface Windows.Devices.Perception.Provider.IPerceptionControlGroup;
                }

                [activatable(Windows.Devices.Perception.Provider.IPerceptionCorrelationFactory, 0x0A000000)]
                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass PerceptionCorrelation
                {
                    [default] interface Windows.Devices.Perception.Provider.IPerceptionCorrelation;
                }

                [activatable(Windows.Devices.Perception.Provider.IPerceptionCorrelationGroupFactory, 0x0A000000)]
                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass PerceptionCorrelationGroup
                {
                    [default] interface Windows.Devices.Perception.Provider.IPerceptionCorrelationGroup;
                }

                [activatable(Windows.Devices.Perception.Provider.IPerceptionFaceAuthenticationGroupFactory, 0x0A000000)]
                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass PerceptionFaceAuthenticationGroup
                {
                    [default] interface Windows.Devices.Perception.Provider.IPerceptionFaceAuthenticationGroup;
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass PerceptionFrame
                {
                    [default] interface Windows.Devices.Perception.Provider.IPerceptionFrame;
                }

                [activatable(0x0A000000)]
                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass PerceptionFrameProviderInfo
                {
                    [default] interface Windows.Devices.Perception.Provider.IPerceptionFrameProviderInfo;
                }

                [marshaling_behavior(agile)]
                [static(Windows.Devices.Perception.Provider.IPerceptionFrameProviderManagerServiceStatics, 0x0A000000)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass PerceptionFrameProviderManagerService
                {
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass PerceptionPropertyChangeRequest
                {
                    [default] interface Windows.Devices.Perception.Provider.IPerceptionPropertyChangeRequest;
                }

                [activatable(Windows.Devices.Perception.Provider.IPerceptionVideoFrameAllocatorFactory, 0x0A000000)]
                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass PerceptionVideoFrameAllocator
                {
                    [default] interface Windows.Devices.Perception.Provider.IPerceptionVideoFrameAllocator;
                    interface Windows.Foundation.IClosable;
                }
            }
        }
    }
}
