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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Media.Capture.idl";

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

        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Capture
        {
            runtimeclass CapturedFrame;

            runtimeclass CapturedFrameControlValues;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Capture
        {
            namespace Core
            {
                interface IVariablePhotoCapturedEventArgs;

                interface IVariablePhotoSequenceCapture;

                interface IVariablePhotoSequenceCapture2;

                runtimeclass VariablePhotoCapturedEventArgs;

                runtimeclass VariablePhotoSequenceCapture;
            }
        }
    }
}

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

                    interface Windows.Foundation.TypedEventHandler<Windows.Media.Capture.Core.VariablePhotoSequenceCapture*, IInspectable*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Media.Capture.Core.VariablePhotoSequenceCapture*, Windows.Media.Capture.Core.VariablePhotoCapturedEventArgs*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace Capture
        {
            namespace Core
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Media.Capture.Core.VariablePhotoCapturedEventArgs)]
                [uuid(D1EB4C5C-1B53-4E4A-8B5C-DB7887AC949B)]
                interface IVariablePhotoCapturedEventArgs : IInspectable
                {
                    [propget] HRESULT Frame([out] [retval] Windows.Media.Capture.CapturedFrame** value);
                    [propget] HRESULT CaptureTimeOffset([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propget] HRESULT UsedFrameControllerIndex([out] [retval] Windows.Foundation.IReference<UINT32>** value);
                    [propget] HRESULT CapturedFrameControlValues([out] [retval] Windows.Media.Capture.CapturedFrameControlValues** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Media.Capture.Core.VariablePhotoSequenceCapture)]
                [uuid(D0112D1D-031E-4041-A6D6-BD742476A8EE)]
                interface IVariablePhotoSequenceCapture : IInspectable
                {
                    HRESULT StartAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
                    HRESULT StopAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
                    HRESULT FinishAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
                    [eventadd] HRESULT PhotoCaptured([in] Windows.Foundation.TypedEventHandler<Windows.Media.Capture.Core.VariablePhotoSequenceCapture*, Windows.Media.Capture.Core.VariablePhotoCapturedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT PhotoCaptured([in] EventRegistrationToken token);
                    [eventadd] HRESULT Stopped([in] Windows.Foundation.TypedEventHandler<Windows.Media.Capture.Core.VariablePhotoSequenceCapture*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT Stopped([in] EventRegistrationToken token);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Media.Capture.Core.VariablePhotoSequenceCapture)]
                [uuid(FE2C62BC-50B0-43E3-917C-E3B92798942F)]
                interface IVariablePhotoSequenceCapture2 : IInspectable
                {
                    HRESULT UpdateSettingsAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass VariablePhotoCapturedEventArgs
                {
                    [default] interface Windows.Media.Capture.Core.IVariablePhotoCapturedEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(standard)]
                [threading(mta)]
                runtimeclass VariablePhotoSequenceCapture
                {
                    [default] interface Windows.Media.Capture.Core.IVariablePhotoSequenceCapture;
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Media.Capture.Core.IVariablePhotoSequenceCapture2;
                }
            }
        }
    }
}
