//
// 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.Graphics.DirectX.Direct3D11.idl";
import "Windows.Graphics.Imaging.idl";
import "Windows.Media.Core.idl";
import "Windows.Media.Effects.idl";
import "Windows.Media.MediaProperties.idl";
import "Windows.Media.Transcoding.idl";
import "Windows.Storage.idl";
import "Windows.UI.idl";

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

        typedef struct Rect Rect;

        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace DirectX
        {
            namespace Direct3D11
            {
                interface IDirect3DSurface;
            }
        }
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace Imaging
        {
            runtimeclass ImageStream;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Core
        {
            runtimeclass MediaStreamSource;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Effects
        {
            interface IAudioEffectDefinition;

            interface IVideoCompositorDefinition;

            interface IVideoEffectDefinition;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace MediaProperties
        {
            runtimeclass AudioEncodingProperties;

            runtimeclass MediaEncodingProfile;

            runtimeclass VideoEncodingProperties;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Transcoding
        {
            typedef enum TranscodeFailureReason TranscodeFailureReason;
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        interface IStorageFile;

        runtimeclass StorageFile;
    }
}
namespace Windows
{
    namespace UI
    {
        typedef struct Color Color;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Editing
        {
            typedef enum MediaTrimmingPreference MediaTrimmingPreference;

            typedef enum VideoFramePrecision VideoFramePrecision;

            interface IBackgroundAudioTrack;

            interface IBackgroundAudioTrackStatics;

            interface IEmbeddedAudioTrack;

            interface IMediaClip;

            interface IMediaClipStatics;

            interface IMediaClipStatics2;

            interface IMediaComposition;

            interface IMediaComposition2;

            interface IMediaCompositionStatics;

            interface IMediaOverlay;

            interface IMediaOverlayFactory;

            interface IMediaOverlayLayer;

            interface IMediaOverlayLayerFactory;

            runtimeclass BackgroundAudioTrack;

            runtimeclass EmbeddedAudioTrack;

            runtimeclass MediaClip;

            runtimeclass MediaComposition;

            runtimeclass MediaOverlay;

            runtimeclass MediaOverlayLayer;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Media
    {
        namespace Editing
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Media.Editing.BackgroundAudioTrack*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Editing.EmbeddedAudioTrack*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Editing.MediaClip*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Editing.MediaOverlay*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Editing.MediaOverlayLayer*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Editing.BackgroundAudioTrack*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Editing.EmbeddedAudioTrack*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Editing.MediaClip*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Editing.MediaOverlay*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Editing.MediaOverlayLayer*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Editing.BackgroundAudioTrack*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Editing.EmbeddedAudioTrack*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Editing.MediaClip*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Editing.MediaOverlay*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Editing.MediaOverlayLayer*>;

                interface Windows.Foundation.Collections.IVector<Windows.Media.Editing.BackgroundAudioTrack*>;

                interface Windows.Foundation.Collections.IVector<Windows.Media.Editing.MediaClip*>;

                interface Windows.Foundation.Collections.IVector<Windows.Media.Editing.MediaOverlay*>;

                interface Windows.Foundation.Collections.IVector<Windows.Media.Editing.MediaOverlayLayer*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Editing.BackgroundAudioTrack*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Editing.MediaClip*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Editing.MediaComposition*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace Editing
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum MediaTrimmingPreference
            {
                Fast    = 0,
                Precise = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum VideoFramePrecision
            {
                NearestFrame    = 0,
                NearestKeyFrame = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Editing.BackgroundAudioTrack)]
            [uuid(4B91B3BD-9E21-4266-A9C2-67DD011A2357)]
            interface IBackgroundAudioTrack : IInspectable
            {
                [propget] HRESULT TrimTimeFromStart([out] [retval] Windows.Foundation.TimeSpan* value);
                [propput] HRESULT TrimTimeFromStart([in] Windows.Foundation.TimeSpan value);
                [propget] HRESULT TrimTimeFromEnd([out] [retval] Windows.Foundation.TimeSpan* value);
                [propput] HRESULT TrimTimeFromEnd([in] Windows.Foundation.TimeSpan value);
                [propget] HRESULT OriginalDuration([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT TrimmedDuration([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT UserData([out] [retval] Windows.Foundation.Collections.IMap<HSTRING, HSTRING>** value);
                [propput] HRESULT Delay([in] Windows.Foundation.TimeSpan value);
                [propget] HRESULT Delay([out] [retval] Windows.Foundation.TimeSpan* value);
                [propput] HRESULT Volume([in] DOUBLE value);
                [propget] HRESULT Volume([out] [retval] DOUBLE* value);
                HRESULT Clone([out] [retval] Windows.Media.Editing.BackgroundAudioTrack** value);
                HRESULT GetAudioEncodingProperties([out] [retval] Windows.Media.MediaProperties.AudioEncodingProperties** value);
                [propget] HRESULT AudioEffectDefinitions([out] [retval] Windows.Foundation.Collections.IVector<Windows.Media.Effects.IAudioEffectDefinition*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Editing.BackgroundAudioTrack)]
            [uuid(D9B1C0D7-D018-42A8-A559-CB4D9E97E664)]
            interface IBackgroundAudioTrackStatics : IInspectable
            {
                HRESULT CreateFromEmbeddedAudioTrack([in] Windows.Media.Editing.EmbeddedAudioTrack* embeddedAudioTrack, [out] [retval] Windows.Media.Editing.BackgroundAudioTrack** value);
                HRESULT CreateFromFileAsync([in] Windows.Storage.IStorageFile* file, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Editing.BackgroundAudioTrack*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Editing.EmbeddedAudioTrack)]
            [uuid(55EE5A7A-2D30-3FBA-A190-4F1A6454F88F)]
            interface IEmbeddedAudioTrack : IInspectable
            {
                HRESULT GetAudioEncodingProperties([out] [retval] Windows.Media.MediaProperties.AudioEncodingProperties** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Editing.MediaClip)]
            [uuid(53F25366-5FBA-3EA4-8693-24761811140A)]
            interface IMediaClip : IInspectable
            {
                [propget] HRESULT TrimTimeFromStart([out] [retval] Windows.Foundation.TimeSpan* value);
                [propput] HRESULT TrimTimeFromStart([in] Windows.Foundation.TimeSpan value);
                [propget] HRESULT TrimTimeFromEnd([out] [retval] Windows.Foundation.TimeSpan* value);
                [propput] HRESULT TrimTimeFromEnd([in] Windows.Foundation.TimeSpan value);
                [propget] HRESULT OriginalDuration([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT TrimmedDuration([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT UserData([out] [retval] Windows.Foundation.Collections.IMap<HSTRING, HSTRING>** value);
                HRESULT Clone([out] [retval] Windows.Media.Editing.MediaClip** result);
                [propget] HRESULT StartTimeInComposition([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT EndTimeInComposition([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT EmbeddedAudioTracks([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Editing.EmbeddedAudioTrack*>** value);
                [propget] HRESULT SelectedEmbeddedAudioTrackIndex([out] [retval] UINT32* value);
                [propput] HRESULT SelectedEmbeddedAudioTrackIndex([in] UINT32 value);
                [propput] HRESULT Volume([in] DOUBLE value);
                [propget] HRESULT Volume([out] [retval] DOUBLE* value);
                HRESULT GetVideoEncodingProperties([out] [retval] Windows.Media.MediaProperties.VideoEncodingProperties** value);
                [propget] HRESULT AudioEffectDefinitions([out] [retval] Windows.Foundation.Collections.IVector<Windows.Media.Effects.IAudioEffectDefinition*>** value);
                [propget] HRESULT VideoEffectDefinitions([out] [retval] Windows.Foundation.Collections.IVector<Windows.Media.Effects.IVideoEffectDefinition*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Editing.MediaClip)]
            [uuid(FA402B68-928F-43C4-BC6E-783A1A359656)]
            interface IMediaClipStatics : IInspectable
            {
                HRESULT CreateFromColor([in] Windows.UI.Color color, [in] Windows.Foundation.TimeSpan originalDuration, [out] [retval] Windows.Media.Editing.MediaClip** value);
                HRESULT CreateFromFileAsync([in] Windows.Storage.IStorageFile* file, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Editing.MediaClip*>** operation);
                HRESULT CreateFromImageFileAsync([in] Windows.Storage.IStorageFile* file, [in] Windows.Foundation.TimeSpan originalDuration, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Editing.MediaClip*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Editing.MediaClip)]
            [uuid(5B1DD7B3-854E-4D9B-877D-4774A556CD12)]
            interface IMediaClipStatics2 : IInspectable
            {
                HRESULT CreateFromSurface([in] Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface* surface, [in] Windows.Foundation.TimeSpan originalDuration, [out] [retval] Windows.Media.Editing.MediaClip** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Editing.MediaComposition)]
            [uuid(2E06E605-DC71-41D6-B837-2D2BC14A2947)]
            interface IMediaComposition : IInspectable
            {
                [propget] HRESULT Duration([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT Clips([out] [retval] Windows.Foundation.Collections.IVector<Windows.Media.Editing.MediaClip*>** value);
                [propget] HRESULT BackgroundAudioTracks([out] [retval] Windows.Foundation.Collections.IVector<Windows.Media.Editing.BackgroundAudioTrack*>** value);
                [propget] HRESULT UserData([out] [retval] Windows.Foundation.Collections.IMap<HSTRING, HSTRING>** value);
                HRESULT Clone([out] [retval] Windows.Media.Editing.MediaComposition** result);
                HRESULT SaveAsync([in] Windows.Storage.IStorageFile* file, [out] [retval] Windows.Foundation.IAsyncAction** operation);
                HRESULT GetThumbnailAsync([in] Windows.Foundation.TimeSpan timeFromStart, [in] INT32 scaledWidth, [in] INT32 scaledHeight, [in] Windows.Media.Editing.VideoFramePrecision framePrecision, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Graphics.Imaging.ImageStream*>** operation);
                HRESULT GetThumbnailsAsync([in] Windows.Foundation.Collections.IIterable<Windows.Foundation.TimeSpan>* timesFromStart, [in] INT32 scaledWidth, [in] INT32 scaledHeight, [in] Windows.Media.Editing.VideoFramePrecision framePrecision, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Graphics.Imaging.ImageStream*>*>** operation);
                [overload("RenderToFileAsync")] HRESULT RenderToFileAsync([in] Windows.Storage.IStorageFile* destination, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Media.Transcoding.TranscodeFailureReason, DOUBLE>** operation);
                [overload("RenderToFileAsync")] HRESULT RenderToFileWithTrimmingPreferenceAsync([in] Windows.Storage.IStorageFile* destination, [in] Windows.Media.Editing.MediaTrimmingPreference trimmingPreference, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Media.Transcoding.TranscodeFailureReason, DOUBLE>** operation);
                [overload("RenderToFileAsync")] HRESULT RenderToFileWithProfileAsync([in] Windows.Storage.IStorageFile* destination, [in] Windows.Media.Editing.MediaTrimmingPreference trimmingPreference, [in] Windows.Media.MediaProperties.MediaEncodingProfile* encodingProfile, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Media.Transcoding.TranscodeFailureReason, DOUBLE>** operation);
                HRESULT CreateDefaultEncodingProfile([out] [retval] Windows.Media.MediaProperties.MediaEncodingProfile** value);
                [overload("GenerateMediaStreamSource")] HRESULT GenerateMediaStreamSource([out] [retval] Windows.Media.Core.MediaStreamSource** value);
                [overload("GenerateMediaStreamSource")] HRESULT GenerateMediaStreamSourceWithProfile([in] Windows.Media.MediaProperties.MediaEncodingProfile* encodingProfile, [out] [retval] Windows.Media.Core.MediaStreamSource** value);
                HRESULT GeneratePreviewMediaStreamSource([in] INT32 scaledWidth, [in] INT32 scaledHeight, [out] [retval] Windows.Media.Core.MediaStreamSource** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Editing.MediaComposition)]
            [uuid(A59E5372-2366-492C-BEC8-E6DFBA6D0281)]
            interface IMediaComposition2 : IInspectable
            {
                [propget] HRESULT OverlayLayers([out] [retval] Windows.Foundation.Collections.IVector<Windows.Media.Editing.MediaOverlayLayer*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Editing.MediaComposition)]
            [uuid(87A08F04-E32A-45CE-8F66-A30DF0766224)]
            interface IMediaCompositionStatics : IInspectable
            {
                HRESULT LoadAsync([in] Windows.Storage.StorageFile* file, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Editing.MediaComposition*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Editing.MediaOverlay)]
            [uuid(A902AE5D-7869-4830-8AB1-94DC01C05FA4)]
            interface IMediaOverlay : IInspectable
            {
                [propget] HRESULT Position([out] [retval] Windows.Foundation.Rect* value);
                [propput] HRESULT Position([in] Windows.Foundation.Rect value);
                [propput] HRESULT Delay([in] Windows.Foundation.TimeSpan value);
                [propget] HRESULT Delay([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT Opacity([out] [retval] DOUBLE* value);
                [propput] HRESULT Opacity([in] DOUBLE value);
                HRESULT Clone([out] [retval] Windows.Media.Editing.MediaOverlay** result);
                [propget] HRESULT Clip([out] [retval] Windows.Media.Editing.MediaClip** value);
                [propget] HRESULT AudioEnabled([out] [retval] boolean* value);
                [propput] HRESULT AudioEnabled([in] boolean value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Editing.MediaOverlay)]
            [uuid(B584828A-6188-4F8F-A2E0-AA552D598E18)]
            interface IMediaOverlayFactory : IInspectable
            {
                HRESULT Create([in] Windows.Media.Editing.MediaClip* clip, [out] [retval] Windows.Media.Editing.MediaOverlay** mediaOverlay);
                HRESULT CreateWithPositionAndOpacity([in] Windows.Media.Editing.MediaClip* clip, [in] Windows.Foundation.Rect position, [in] DOUBLE opacity, [out] [retval] Windows.Media.Editing.MediaOverlay** mediaOverlay);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Editing.MediaOverlayLayer)]
            [uuid(A6D9BA57-EEDA-46C6-BBE5-E398C84168AC)]
            interface IMediaOverlayLayer : IInspectable
            {
                HRESULT Clone([out] [retval] Windows.Media.Editing.MediaOverlayLayer** result);
                [propget] HRESULT Overlays([out] [retval] Windows.Foundation.Collections.IVector<Windows.Media.Editing.MediaOverlay*>** value);
                [propget] HRESULT CustomCompositorDefinition([out] [retval] Windows.Media.Effects.IVideoCompositorDefinition** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Editing.MediaOverlayLayer)]
            [uuid(947CB473-A39E-4362-ABBF-9F8B5070A062)]
            interface IMediaOverlayLayerFactory : IInspectable
            {
                HRESULT CreateWithCompositorDefinition([in] Windows.Media.Effects.IVideoCompositorDefinition* compositorDefinition, [out] [retval] Windows.Media.Editing.MediaOverlayLayer** mediaOverlayLayer);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Media.Editing.IBackgroundAudioTrackStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass BackgroundAudioTrack
            {
                [default] interface Windows.Media.Editing.IBackgroundAudioTrack;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass EmbeddedAudioTrack
            {
                [default] interface Windows.Media.Editing.IEmbeddedAudioTrack;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Media.Editing.IMediaClipStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Media.Editing.IMediaClipStatics2, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass MediaClip
            {
                [default] interface Windows.Media.Editing.IMediaClip;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Media.Editing.IMediaCompositionStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass MediaComposition
            {
                [default] interface Windows.Media.Editing.IMediaComposition;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Media.Editing.IMediaComposition2;
            }

            [activatable(Windows.Media.Editing.IMediaOverlayFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MediaOverlay
            {
                [default] interface Windows.Media.Editing.IMediaOverlay;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [activatable(Windows.Media.Editing.IMediaOverlayLayerFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MediaOverlayLayer
            {
                [default] interface Windows.Media.Editing.IMediaOverlayLayer;
            }
        }
    }
}
