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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Media.Core.idl";
import "Windows.Storage.Streams.idl";
import "Windows.Web.Http.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(__windows2Emedia2Ecore_h__)")
cpp_quote("#include <Windows.Media.Core.h>")
cpp_quote("#endif // !defined(__windows2Emedia2Ecore_h__)")
cpp_quote("#if !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#include <Windows.Storage.Streams.h>")
cpp_quote("#endif // !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#if !defined(__windows2Eweb2Ehttp_h__)")
cpp_quote("#include <Windows.Web.Http.h>")
cpp_quote("#endif // !defined(__windows2Eweb2Ehttp_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        typedef struct TimeSpan TimeSpan;

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Core
        {
            interface IMediaSource;
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;

            interface IInputStream;
        }
    }
}
namespace Windows
{
    namespace Web
    {
        namespace Http
        {
            runtimeclass HttpClient;

            runtimeclass HttpResponseMessage;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Streaming
        {
            namespace Adaptive
            {
                typedef enum AdaptiveMediaSourceCreationStatus AdaptiveMediaSourceCreationStatus;

                typedef enum AdaptiveMediaSourceResourceType AdaptiveMediaSourceResourceType;

                interface IAdaptiveMediaSourceCreationResult;

                interface IAdaptiveMediaSourceStatics;

                interface IAdaptiveMediaSource;

                interface IAdaptiveMediaSource2;

                interface IAdaptiveMediaSourceAdvancedSettings;

                interface IAdaptiveMediaSourceDownloadBitrateChangedEventArgs;

                interface IAdaptiveMediaSourcePlaybackBitrateChangedEventArgs;

                interface IAdaptiveMediaSourceDownloadRequestedEventArgs;

                interface IAdaptiveMediaSourceDownloadResult;

                interface IAdaptiveMediaSourceDownloadRequestedDeferral;

                interface IAdaptiveMediaSourceDownloadCompletedEventArgs;

                interface IAdaptiveMediaSourceDownloadFailedEventArgs;

                runtimeclass AdaptiveMediaSource;

                runtimeclass AdaptiveMediaSourceCreationResult;

                runtimeclass AdaptiveMediaSourceDownloadBitrateChangedEventArgs;

                runtimeclass AdaptiveMediaSourcePlaybackBitrateChangedEventArgs;

                runtimeclass AdaptiveMediaSourceDownloadRequestedEventArgs;

                runtimeclass AdaptiveMediaSourceDownloadCompletedEventArgs;

                runtimeclass AdaptiveMediaSourceDownloadFailedEventArgs;

                runtimeclass AdaptiveMediaSourceAdvancedSettings;

                runtimeclass AdaptiveMediaSourceDownloadResult;

                runtimeclass AdaptiveMediaSourceDownloadRequestedDeferral;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Media
    {
        namespace Streaming
        {
            namespace Adaptive
            {
                declare
                {
                    interface Windows.Foundation.IAsyncOperation<Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceCreationResult*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Media.Streaming.Adaptive.AdaptiveMediaSource*, Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceDownloadBitrateChangedEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Media.Streaming.Adaptive.AdaptiveMediaSource*, Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceDownloadCompletedEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Media.Streaming.Adaptive.AdaptiveMediaSource*, Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceDownloadFailedEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Media.Streaming.Adaptive.AdaptiveMediaSource*, Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceDownloadRequestedEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Media.Streaming.Adaptive.AdaptiveMediaSource*, Windows.Media.Streaming.Adaptive.AdaptiveMediaSourcePlaybackBitrateChangedEventArgs*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace Streaming
        {
            namespace Adaptive
            {
                [version(0x0A000000)]
                enum AdaptiveMediaSourceCreationStatus
                {
                    Success                        = 0,
                    ManifestDownloadFailure        = 1,
                    ManifestParseFailure           = 2,
                    UnsupportedManifestContentType = 3,
                    UnsupportedManifestVersion     = 4,
                    UnsupportedManifestProfile     = 5,
                    UnknownFailure                 = 6
                };

                [version(0x0A000000)]
                enum AdaptiveMediaSourceResourceType
                {
                    Manifest              = 0,
                    InitializationSegment = 1,
                    MediaSegment          = 2,
                    Key                   = 3,
                    InitializationVector  = 4
                };

                [exclusiveto(Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceCreationResult)]
                [uuid(4686B6B2-800F-4E31-9093-76D4782013E7)]
                [version(0x0A000000)]
                interface IAdaptiveMediaSourceCreationResult : IInspectable
                {
                    [propget] HRESULT Status([out] [retval] Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceCreationStatus* value);
                    [propget] HRESULT MediaSource([out] [retval] Windows.Media.Streaming.Adaptive.AdaptiveMediaSource** value);
                    [propget] HRESULT HttpResponseMessage([out] [retval] Windows.Web.Http.HttpResponseMessage** value);
                }

                [exclusiveto(Windows.Media.Streaming.Adaptive.AdaptiveMediaSource)]
                [uuid(50A6BD5D-66EF-4CD3-9579-9E660507DC3F)]
                [version(0x0A000000)]
                interface IAdaptiveMediaSourceStatics : IInspectable
                {
                    HRESULT IsContentTypeSupported([in] HSTRING contentType, [out] [retval] boolean* result);
                    [overload("CreateFromUriAsync")] HRESULT CreateFromUriAsync([in] Windows.Foundation.Uri* uri, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceCreationResult*>** result);
                    [overload("CreateFromUriAsync")] HRESULT CreateFromUriWithDownloaderAsync([in] Windows.Foundation.Uri* uri, [in] Windows.Web.Http.HttpClient* httpClient, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceCreationResult*>** result);
                    [overload("CreateFromStreamAsync")] HRESULT CreateFromStreamAsync([in] Windows.Storage.Streams.IInputStream* stream, [in] Windows.Foundation.Uri* uri, [in] HSTRING contentType, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceCreationResult*>** result);
                    [overload("CreateFromStreamAsync")] HRESULT CreateFromStreamWithDownloaderAsync([in] Windows.Storage.Streams.IInputStream* stream, [in] Windows.Foundation.Uri* uri, [in] HSTRING contentType, [in] Windows.Web.Http.HttpClient* httpClient, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceCreationResult*>** result);
                }

                [exclusiveto(Windows.Media.Streaming.Adaptive.AdaptiveMediaSource)]
                [uuid(4C7332EF-D39F-4396-B4D9-043957A7C964)]
                [version(0x0A000000)]
                interface IAdaptiveMediaSource : IInspectable
                    requires
                        Windows.Media.Core.IMediaSource
                {
                    [propget] HRESULT IsLive([out] [retval] boolean* value);
                    [propget] HRESULT DesiredLiveOffset([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propput] HRESULT DesiredLiveOffset([in] Windows.Foundation.TimeSpan value);
                    [propget] HRESULT InitialBitrate([out] [retval] UINT32* value);
                    [propput] HRESULT InitialBitrate([in] UINT32 value);
                    [propget] HRESULT CurrentDownloadBitrate([out] [retval] UINT32* value);
                    [propget] HRESULT CurrentPlaybackBitrate([out] [retval] UINT32* value);
                    [propget] HRESULT AvailableBitrates([out] [retval] Windows.Foundation.Collections.IVectorView<UINT32>** value);
                    [propget] HRESULT DesiredMinBitrate([out] [retval] Windows.Foundation.IReference<UINT32>** value);
                    [propput] HRESULT DesiredMinBitrate([in] Windows.Foundation.IReference<UINT32>* value);
                    [propget] HRESULT DesiredMaxBitrate([out] [retval] Windows.Foundation.IReference<UINT32>** value);
                    [propput] HRESULT DesiredMaxBitrate([in] Windows.Foundation.IReference<UINT32>* value);
                    [propget] HRESULT AudioOnlyPlayback([out] [retval] boolean* value);
                    [propget] HRESULT InboundBitsPerSecond([out] [retval] UINT64* value);
                    [propget] HRESULT InboundBitsPerSecondWindow([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propput] HRESULT InboundBitsPerSecondWindow([in] Windows.Foundation.TimeSpan value);
                    [eventadd] HRESULT DownloadBitrateChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Streaming.Adaptive.AdaptiveMediaSource*, Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceDownloadBitrateChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT DownloadBitrateChanged([in] EventRegistrationToken token);
                    [eventadd] HRESULT PlaybackBitrateChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Streaming.Adaptive.AdaptiveMediaSource*, Windows.Media.Streaming.Adaptive.AdaptiveMediaSourcePlaybackBitrateChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT PlaybackBitrateChanged([in] EventRegistrationToken token);
                    [eventadd] HRESULT DownloadRequested([in] Windows.Foundation.TypedEventHandler<Windows.Media.Streaming.Adaptive.AdaptiveMediaSource*, Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceDownloadRequestedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT DownloadRequested([in] EventRegistrationToken token);
                    [eventadd] HRESULT DownloadCompleted([in] Windows.Foundation.TypedEventHandler<Windows.Media.Streaming.Adaptive.AdaptiveMediaSource*, Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceDownloadCompletedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT DownloadCompleted([in] EventRegistrationToken token);
                    [eventadd] HRESULT DownloadFailed([in] Windows.Foundation.TypedEventHandler<Windows.Media.Streaming.Adaptive.AdaptiveMediaSource*, Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceDownloadFailedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT DownloadFailed([in] EventRegistrationToken token);
                }

                [exclusiveto(Windows.Media.Streaming.Adaptive.AdaptiveMediaSource)]
                [uuid(17890342-6760-4BB9-A58A-F7AA98B08C0E)]
                [version(0x0A000000)]
                interface IAdaptiveMediaSource2 : IInspectable
                {
                    [propget] HRESULT AdvancedSettings([out] [retval] Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceAdvancedSettings** value);
                }

                [exclusiveto(Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceAdvancedSettings)]
                [uuid(55DB1680-1AEB-47DC-AA08-9A11610BA45A)]
                [version(0x0A000000)]
                interface IAdaptiveMediaSourceAdvancedSettings : IInspectable
                {
                    [propget] HRESULT AllSegmentsIndependent([out] [retval] boolean* value);
                    [propput] HRESULT AllSegmentsIndependent([in] boolean value);
                    [propget] HRESULT DesiredBitrateHeadroomRatio([out] [retval] Windows.Foundation.IReference<DOUBLE>** value);
                    [propput] HRESULT DesiredBitrateHeadroomRatio([in] Windows.Foundation.IReference<DOUBLE>* value);
                    [propget] HRESULT BitrateDowngradeTriggerRatio([out] [retval] Windows.Foundation.IReference<DOUBLE>** value);
                    [propput] HRESULT BitrateDowngradeTriggerRatio([in] Windows.Foundation.IReference<DOUBLE>* value);
                }

                [exclusiveto(Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceDownloadBitrateChangedEventArgs)]
                [uuid(670C0A44-E04E-4EFF-816A-17399F78F4BA)]
                [version(0x0A000000)]
                interface IAdaptiveMediaSourceDownloadBitrateChangedEventArgs : IInspectable
                {
                    [propget] HRESULT OldValue([out] [retval] UINT32* value);
                    [propget] HRESULT NewValue([out] [retval] UINT32* value);
                }

                [exclusiveto(Windows.Media.Streaming.Adaptive.AdaptiveMediaSourcePlaybackBitrateChangedEventArgs)]
                [uuid(23A29F6D-7DDA-4A51-87A9-6FA8C5B292BE)]
                [version(0x0A000000)]
                interface IAdaptiveMediaSourcePlaybackBitrateChangedEventArgs : IInspectable
                {
                    [propget] HRESULT OldValue([out] [retval] UINT32* value);
                    [propget] HRESULT NewValue([out] [retval] UINT32* value);
                    [propget] HRESULT AudioOnly([out] [retval] boolean* value);
                }

                [exclusiveto(Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceDownloadRequestedEventArgs)]
                [uuid(C83FDFFD-44A9-47A2-BF96-03398B4BFAAF)]
                [version(0x0A000000)]
                interface IAdaptiveMediaSourceDownloadRequestedEventArgs : IInspectable
                {
                    [propget] HRESULT ResourceType([out] [retval] Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceResourceType* value);
                    [propget] HRESULT ResourceUri([out] [retval] Windows.Foundation.Uri** value);
                    [propget] HRESULT ResourceByteRangeOffset([out] [retval] Windows.Foundation.IReference<UINT64>** value);
                    [propget] HRESULT ResourceByteRangeLength([out] [retval] Windows.Foundation.IReference<UINT64>** value);
                    [propget] HRESULT Result([out] [retval] Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceDownloadResult** value);
                    HRESULT GetDeferral([out] [retval] Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceDownloadRequestedDeferral** deferral);
                }

                [exclusiveto(Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceDownloadResult)]
                [uuid(F4AFDC73-BCEE-4A6A-9F0A-FEC41E2339B0)]
                [version(0x0A000000)]
                interface IAdaptiveMediaSourceDownloadResult : IInspectable
                {
                    [propget] HRESULT ResourceUri([out] [retval] Windows.Foundation.Uri** value);
                    [propput] HRESULT ResourceUri([in] Windows.Foundation.Uri* value);
                    [propget] HRESULT InputStream([out] [retval] Windows.Storage.Streams.IInputStream** value);
                    [propput] HRESULT InputStream([in] Windows.Storage.Streams.IInputStream* value);
                    [propget] HRESULT Buffer([out] [retval] Windows.Storage.Streams.IBuffer** value);
                    [propput] HRESULT Buffer([in] Windows.Storage.Streams.IBuffer* value);
                    [propget] HRESULT ContentType([out] [retval] HSTRING* value);
                    [propput] HRESULT ContentType([in] HSTRING value);
                    [propget] HRESULT ExtendedStatus([out] [retval] UINT32* value);
                    [propput] HRESULT ExtendedStatus([in] UINT32 value);
                }

                [exclusiveto(Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceDownloadRequestedDeferral)]
                [uuid(05C68F64-FA20-4DBD-9821-4BF4C9BF77AB)]
                [version(0x0A000000)]
                interface IAdaptiveMediaSourceDownloadRequestedDeferral : IInspectable
                {
                    HRESULT Complete();
                }

                [exclusiveto(Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceDownloadCompletedEventArgs)]
                [uuid(19240DC3-5B37-4A1A-8970-D621CB6CA83B)]
                [version(0x0A000000)]
                interface IAdaptiveMediaSourceDownloadCompletedEventArgs : IInspectable
                {
                    [propget] HRESULT ResourceType([out] [retval] Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceResourceType* value);
                    [propget] HRESULT ResourceUri([out] [retval] Windows.Foundation.Uri** value);
                    [propget] HRESULT ResourceByteRangeOffset([out] [retval] Windows.Foundation.IReference<UINT64>** value);
                    [propget] HRESULT ResourceByteRangeLength([out] [retval] Windows.Foundation.IReference<UINT64>** value);
                    [propget] HRESULT HttpResponseMessage([out] [retval] Windows.Web.Http.HttpResponseMessage** value);
                }

                [exclusiveto(Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceDownloadFailedEventArgs)]
                [uuid(37739048-F4AB-40A4-B135-C6DFD8BD7FF1)]
                [version(0x0A000000)]
                interface IAdaptiveMediaSourceDownloadFailedEventArgs : IInspectable
                {
                    [propget] HRESULT ResourceType([out] [retval] Windows.Media.Streaming.Adaptive.AdaptiveMediaSourceResourceType* value);
                    [propget] HRESULT ResourceUri([out] [retval] Windows.Foundation.Uri** value);
                    [propget] HRESULT ResourceByteRangeOffset([out] [retval] Windows.Foundation.IReference<UINT64>** value);
                    [propget] HRESULT ResourceByteRangeLength([out] [retval] Windows.Foundation.IReference<UINT64>** value);
                    [propget] HRESULT HttpResponseMessage([out] [retval] Windows.Web.Http.HttpResponseMessage** value);
                }

                [marshaling_behavior(agile)]
                [static(Windows.Media.Streaming.Adaptive.IAdaptiveMediaSourceStatics, 0x0A000000)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass AdaptiveMediaSource
                {
                    [default] interface Windows.Media.Streaming.Adaptive.IAdaptiveMediaSource;
                    interface Windows.Media.Core.IMediaSource;
                    [version(0x0A000000)] interface Windows.Media.Streaming.Adaptive.IAdaptiveMediaSource2;
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass AdaptiveMediaSourceCreationResult
                {
                    [default] interface Windows.Media.Streaming.Adaptive.IAdaptiveMediaSourceCreationResult;
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass AdaptiveMediaSourceDownloadBitrateChangedEventArgs
                {
                    [default] interface Windows.Media.Streaming.Adaptive.IAdaptiveMediaSourceDownloadBitrateChangedEventArgs;
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass AdaptiveMediaSourcePlaybackBitrateChangedEventArgs
                {
                    [default] interface Windows.Media.Streaming.Adaptive.IAdaptiveMediaSourcePlaybackBitrateChangedEventArgs;
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass AdaptiveMediaSourceDownloadRequestedEventArgs
                {
                    [default] interface Windows.Media.Streaming.Adaptive.IAdaptiveMediaSourceDownloadRequestedEventArgs;
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass AdaptiveMediaSourceDownloadCompletedEventArgs
                {
                    [default] interface Windows.Media.Streaming.Adaptive.IAdaptiveMediaSourceDownloadCompletedEventArgs;
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass AdaptiveMediaSourceDownloadFailedEventArgs
                {
                    [default] interface Windows.Media.Streaming.Adaptive.IAdaptiveMediaSourceDownloadFailedEventArgs;
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass AdaptiveMediaSourceAdvancedSettings
                {
                    [default] interface Windows.Media.Streaming.Adaptive.IAdaptiveMediaSourceAdvancedSettings;
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass AdaptiveMediaSourceDownloadResult
                {
                    [default] interface Windows.Media.Streaming.Adaptive.IAdaptiveMediaSourceDownloadResult;
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x0A000000)]
                runtimeclass AdaptiveMediaSourceDownloadRequestedDeferral
                {
                    [default] interface Windows.Media.Streaming.Adaptive.IAdaptiveMediaSourceDownloadRequestedDeferral;
                }
            }
        }
    }
}
