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

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

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        namespace Collections
        {
            interface IVectorChangedEventArgs;

            runtimeclass ValueSet;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        typedef struct TimeSpan TimeSpan;

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Core
        {
            runtimeclass AudioTrack;

            interface IMediaSource;

            interface ISingleSelectMediaTrackList;

            runtimeclass MediaSource;

            runtimeclass TimedMetadataTrack;

            runtimeclass VideoTrack;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Protection
        {
            runtimeclass MediaProtectionManager;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        runtimeclass SystemMediaTransportControls;
    }
}
namespace Windows
{
    namespace Storage
    {
        interface IStorageFile;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IRandomAccessStream;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Playback
        {
            typedef enum MediaPlayerState MediaPlayerState;

            typedef enum MediaPlayerError MediaPlayerError;

            typedef enum MediaPlayerAudioCategory MediaPlayerAudioCategory;

            typedef enum MediaPlayerAudioDeviceType MediaPlayerAudioDeviceType;

            typedef enum MediaPlaybackItemErrorCode MediaPlaybackItemErrorCode;

            typedef enum FailedMediaStreamKind FailedMediaStreamKind;

            typedef enum TimedMetadataTrackPresentationMode TimedMetadataTrackPresentationMode;

            interface IPlaybackMediaMarker;

            interface IPlaybackMediaMarkerFactory;

            interface IPlaybackMediaMarkerSequence;

            interface IMediaPlayerFailedEventArgs;

            interface IMediaPlayerRateChangedEventArgs;

            interface IPlaybackMediaMarkerReachedEventArgs;

            interface IMediaPlayerDataReceivedEventArgs;

            interface IMediaPlayer;

            interface IMediaPlayer2;

            interface IMediaPlayerSource;

            interface IMediaPlayerSource2;

            interface IBackgroundMediaPlayerStatics;

            interface IMediaPlaybackSource;

            interface IMediaPlaybackItemFactory;

            interface IMediaPlaybackItem;

            interface IMediaPlaybackItemError;

            interface IMediaEnginePlaybackSource;

            interface IMediaPlaybackItemOpenedEventArgs;

            interface IMediaPlaybackItemFailedEventArgs;

            interface ICurrentMediaPlaybackItemChangedEventArgs;

            interface IMediaPlaybackList;

            interface IMediaPlaybackTimedMetadataTrackList;

            interface ITimedMetadataPresentationModeChangedEventArgs;

            runtimeclass PlaybackMediaMarker;

            runtimeclass PlaybackMediaMarkerSequence;

            runtimeclass MediaPlayerFailedEventArgs;

            runtimeclass MediaPlayerRateChangedEventArgs;

            runtimeclass PlaybackMediaMarkerReachedEventArgs;

            runtimeclass MediaPlayerDataReceivedEventArgs;

            runtimeclass MediaPlayer;

            runtimeclass BackgroundMediaPlayer;

            runtimeclass MediaPlaybackItem;

            runtimeclass MediaPlaybackAudioTrackList;

            runtimeclass MediaPlaybackVideoTrackList;

            runtimeclass MediaPlaybackTimedMetadataTrackList;

            runtimeclass MediaPlaybackItemError;

            runtimeclass MediaPlaybackList;

            runtimeclass MediaPlaybackItemFailedEventArgs;

            runtimeclass CurrentMediaPlaybackItemChangedEventArgs;

            runtimeclass MediaPlaybackItemOpenedEventArgs;

            runtimeclass TimedMetadataPresentationModeChangedEventArgs;
        }
    }
}

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

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Playback.PlaybackMediaMarker*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Playback.MediaPlaybackItem*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Playback.PlaybackMediaMarker*>;

                interface Windows.Foundation.Collections.IObservableVector<Windows.Media.Playback.MediaPlaybackItem*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Playback.MediaPlaybackItem*>;

                interface Windows.Foundation.Collections.IVector<Windows.Media.Playback.MediaPlaybackItem*>;

                interface Windows.Foundation.EventHandler<Windows.Media.Playback.MediaPlayerDataReceivedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlaybackItem*, Windows.Foundation.Collections.IVectorChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlaybackList*, Windows.Media.Playback.CurrentMediaPlaybackItemChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlaybackList*, Windows.Media.Playback.MediaPlaybackItemFailedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlaybackList*, Windows.Media.Playback.MediaPlaybackItemOpenedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlaybackTimedMetadataTrackList*, Windows.Media.Playback.TimedMetadataPresentationModeChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlayer*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlayer*, Windows.Media.Playback.MediaPlayerFailedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlayer*, Windows.Media.Playback.MediaPlayerRateChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlayer*, Windows.Media.Playback.PlaybackMediaMarkerReachedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace Playback
        {
            [version(0x0A000000)]
            enum MediaPlayerState
            {
                Closed    = 0,
                Opening   = 1,
                Buffering = 2,
                Playing   = 3,
                Paused    = 4,
                Stopped   = 5
            };

            [version(0x0A000000)]
            enum MediaPlayerError
            {
                Unknown            = 0,
                Aborted            = 1,
                NetworkError       = 2,
                DecodingError      = 3,
                SourceNotSupported = 4
            };

            [version(0x0A000000)]
            enum MediaPlayerAudioCategory
            {
                Other          = 0,
                Communications = 3,
                Alerts         = 4,
                SoundEffects   = 5,
                GameEffects    = 6,
                GameMedia      = 7,
                GameChat       = 8,
                Speech         = 9,
                Movie          = 10,
                Media          = 11
            };

            [version(0x0A000000)]
            enum MediaPlayerAudioDeviceType
            {
                Console        = 0,
                Multimedia     = 1,
                Communications = 2
            };

            [version(0x0A000000)]
            enum MediaPlaybackItemErrorCode
            {
                None                    = 0,
                Aborted                 = 1,
                NetworkError            = 2,
                DecodeError             = 3,
                SourceNotSupportedError = 4,
                EncryptionError         = 5
            };

            [version(0x0A000000)]
            enum FailedMediaStreamKind
            {
                Unknown = 0,
                Audio   = 1,
                Video   = 2
            };

            [version(0x0A000000)]
            enum TimedMetadataTrackPresentationMode
            {
                Disabled             = 0,
                Hidden               = 1,
                ApplicationPresented = 2,
                PlatformPresented    = 3
            };

            [exclusiveto(Windows.Media.Playback.PlaybackMediaMarker)]
            [uuid(C4D22F5C-3C1C-4444-B6B9-778B0422D41A)]
            [version(0x0A000000)]
            interface IPlaybackMediaMarker : IInspectable
            {
                [propget] HRESULT Time([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT MediaMarkerType([out] [retval] HSTRING* value);
                [propget] HRESULT Text([out] [retval] HSTRING* value);
            }

            [exclusiveto(Windows.Media.Playback.PlaybackMediaMarker)]
            [uuid(8C530A78-E0AE-4E1A-A8C8-E23F982A937B)]
            [version(0x0A000000)]
            interface IPlaybackMediaMarkerFactory : IInspectable
            {
                HRESULT CreateFromTime([in] Windows.Foundation.TimeSpan value, [out] [retval] Windows.Media.Playback.PlaybackMediaMarker** marker);
                HRESULT Create([in] Windows.Foundation.TimeSpan value, [in] HSTRING mediaMarketType, [in] HSTRING text, [out] [retval] Windows.Media.Playback.PlaybackMediaMarker** marker);
            }

            [exclusiveto(Windows.Media.Playback.PlaybackMediaMarkerSequence)]
            [uuid(F2810CEE-638B-46CF-8817-1D111FE9D8C4)]
            [version(0x0A000000)]
            interface IPlaybackMediaMarkerSequence : IInspectable
                requires
                    Windows.Foundation.Collections.IIterable<Windows.Media.Playback.PlaybackMediaMarker*>
            {
                [propget] HRESULT Size([out] [retval] UINT32* value);
                HRESULT Insert([in] Windows.Media.Playback.PlaybackMediaMarker* value);
                HRESULT Clear();
            }

            [exclusiveto(Windows.Media.Playback.MediaPlayerFailedEventArgs)]
            [uuid(2744E9B9-A7E3-4F16-BAC4-7914EBC08301)]
            [version(0x0A000000)]
            interface IMediaPlayerFailedEventArgs : IInspectable
            {
                [propget] HRESULT Error([out] [retval] Windows.Media.Playback.MediaPlayerError* value);
                [propget] HRESULT ExtendedErrorCode([out] [retval] HRESULT* value);
                [propget] HRESULT ErrorMessage([out] [retval] HSTRING* value);
            }

            [exclusiveto(Windows.Media.Playback.MediaPlayerRateChangedEventArgs)]
            [uuid(40600D58-3B61-4BB2-989F-FC65608B6CAB)]
            [version(0x0A000000)]
            interface IMediaPlayerRateChangedEventArgs : IInspectable
            {
                [propget] HRESULT NewRate([out] [retval] DOUBLE* value);
            }

            [exclusiveto(Windows.Media.Playback.PlaybackMediaMarkerReachedEventArgs)]
            [uuid(578CD1B9-90E2-4E60-ABC4-8740B01F6196)]
            [version(0x0A000000)]
            interface IPlaybackMediaMarkerReachedEventArgs : IInspectable
            {
                [propget] HRESULT PlaybackMediaMarker([out] [retval] Windows.Media.Playback.PlaybackMediaMarker** value);
            }

            [exclusiveto(Windows.Media.Playback.MediaPlayerDataReceivedEventArgs)]
            [uuid(C75A9405-C801-412A-835B-83FC0E622A8E)]
            [version(0x0A000000)]
            interface IMediaPlayerDataReceivedEventArgs : IInspectable
            {
                [propget] HRESULT Data([out] [retval] Windows.Foundation.Collections.ValueSet** value);
            }

            [exclusiveto(Windows.Media.Playback.MediaPlayer)]
            [uuid(381A83CB-6FFF-499B-8D64-2885DFC1249E)]
            [version(0x0A000000)]
            interface IMediaPlayer : IInspectable
            {
                [propget] HRESULT AutoPlay([out] [retval] boolean* value);
                [propput] HRESULT AutoPlay([in] boolean value);
                [propget] HRESULT NaturalDuration([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT Position([out] [retval] Windows.Foundation.TimeSpan* value);
                [propput] HRESULT Position([in] Windows.Foundation.TimeSpan value);
                [propget] HRESULT BufferingProgress([out] [retval] DOUBLE* value);
                [propget] HRESULT CurrentState([out] [retval] Windows.Media.Playback.MediaPlayerState* value);
                [propget] HRESULT CanSeek([out] [retval] boolean* value);
                [propget] HRESULT CanPause([out] [retval] boolean* value);
                [propget] HRESULT IsLoopingEnabled([out] [retval] boolean* value);
                [propput] HRESULT IsLoopingEnabled([in] boolean value);
                [propget] HRESULT IsProtected([out] [retval] boolean* value);
                [propget] HRESULT IsMuted([out] [retval] boolean* value);
                [propput] HRESULT IsMuted([in] boolean value);
                [propget] HRESULT PlaybackRate([out] [retval] DOUBLE* value);
                [propput] HRESULT PlaybackRate([in] DOUBLE value);
                [propget] HRESULT Volume([out] [retval] DOUBLE* value);
                [propput] HRESULT Volume([in] DOUBLE value);
                [propget] HRESULT PlaybackMediaMarkers([out] [retval] Windows.Media.Playback.PlaybackMediaMarkerSequence** value);
                [eventadd] HRESULT MediaOpened([in] Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlayer*, IInspectable*>* value, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT MediaOpened([in] EventRegistrationToken token);
                [eventadd] HRESULT MediaEnded([in] Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlayer*, IInspectable*>* value, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT MediaEnded([in] EventRegistrationToken token);
                [eventadd] HRESULT MediaFailed([in] Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlayer*, Windows.Media.Playback.MediaPlayerFailedEventArgs*>* value, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT MediaFailed([in] EventRegistrationToken token);
                [eventadd] HRESULT CurrentStateChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlayer*, IInspectable*>* value, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT CurrentStateChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT PlaybackMediaMarkerReached([in] Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlayer*, Windows.Media.Playback.PlaybackMediaMarkerReachedEventArgs*>* value, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PlaybackMediaMarkerReached([in] EventRegistrationToken token);
                [eventadd] HRESULT MediaPlayerRateChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlayer*, Windows.Media.Playback.MediaPlayerRateChangedEventArgs*>* value, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT MediaPlayerRateChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT VolumeChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlayer*, IInspectable*>* value, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT VolumeChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT SeekCompleted([in] Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlayer*, IInspectable*>* value, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT SeekCompleted([in] EventRegistrationToken token);
                [eventadd] HRESULT BufferingStarted([in] Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlayer*, IInspectable*>* value, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT BufferingStarted([in] EventRegistrationToken token);
                [eventadd] HRESULT BufferingEnded([in] Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlayer*, IInspectable*>* value, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT BufferingEnded([in] EventRegistrationToken token);
                HRESULT Play();
                HRESULT Pause();
                [deprecated("Use Source instead of SetUriSource.  For more info, see MSDN.", deprecate, 0x0A000000)] HRESULT SetUriSource([in] Windows.Foundation.Uri* value);
            }

            [exclusiveto(Windows.Media.Playback.MediaPlayer)]
            [uuid(3C841218-2123-4FC5-9082-2F883F77BDF5)]
            [version(0x0A000000)]
            interface IMediaPlayer2 : IInspectable
            {
                [propget] HRESULT SystemMediaTransportControls([out] [retval] Windows.Media.SystemMediaTransportControls** value);
                [propget] HRESULT AudioCategory([out] [retval] Windows.Media.Playback.MediaPlayerAudioCategory* value);
                [propput] HRESULT AudioCategory([in] Windows.Media.Playback.MediaPlayerAudioCategory value);
                [propget] HRESULT AudioDeviceType([out] [retval] Windows.Media.Playback.MediaPlayerAudioDeviceType* value);
                [propput] HRESULT AudioDeviceType([in] Windows.Media.Playback.MediaPlayerAudioDeviceType value);
            }

            [exclusiveto(Windows.Media.Playback.MediaPlayer)]
            [uuid(BD4F8897-1423-4C3E-82C5-0FB1AF94F715)]
            [version(0x0A000000)]
            interface IMediaPlayerSource : IInspectable
            {
                [propget] HRESULT ProtectionManager([out] [retval] Windows.Media.Protection.MediaProtectionManager** value);
                [propput] HRESULT ProtectionManager([in] Windows.Media.Protection.MediaProtectionManager* value);
                [deprecated("Use Source instead of SetFileSource.  For more info, see MSDN.", deprecate, 0x0A000000)] HRESULT SetFileSource([in] Windows.Storage.IStorageFile* file);
                [deprecated("Use Source instead of SetStreamSource.  For more info, see MSDN.", deprecate, 0x0A000000)] HRESULT SetStreamSource([in] Windows.Storage.Streams.IRandomAccessStream* stream);
                [deprecated("Use Source instead of SetMediaSource.  For more info, see MSDN.", deprecate, 0x0A000000)] HRESULT SetMediaSource([in] Windows.Media.Core.IMediaSource* source);
            }

            [exclusiveto(Windows.Media.Playback.MediaPlayer)]
            [uuid(82449B9F-7322-4C0B-B03B-3E69A48260C5)]
            [version(0x0A000000)]
            interface IMediaPlayerSource2 : IInspectable
            {
                [propget] HRESULT Source([out] [retval] Windows.Media.Playback.IMediaPlaybackSource** value);
                [propput] HRESULT Source([in] Windows.Media.Playback.IMediaPlaybackSource* value);
            }

            [exclusiveto(Windows.Media.Playback.BackgroundMediaPlayer)]
            [uuid(856DDBC1-55F7-471F-A0F2-68AC4C904592)]
            [version(0x0A000000)]
            interface IBackgroundMediaPlayerStatics : IInspectable
            {
                [propget] HRESULT Current([out] [retval] Windows.Media.Playback.MediaPlayer** player);
                [eventadd] HRESULT MessageReceivedFromBackground([in] Windows.Foundation.EventHandler<Windows.Media.Playback.MediaPlayerDataReceivedEventArgs*>* value, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT MessageReceivedFromBackground([in] EventRegistrationToken token);
                [eventadd] HRESULT MessageReceivedFromForeground([in] Windows.Foundation.EventHandler<Windows.Media.Playback.MediaPlayerDataReceivedEventArgs*>* value, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT MessageReceivedFromForeground([in] EventRegistrationToken token);
                HRESULT SendMessageToBackground([in] Windows.Foundation.Collections.ValueSet* value);
                HRESULT SendMessageToForeground([in] Windows.Foundation.Collections.ValueSet* value);
                HRESULT IsMediaPlaying([out] [retval] boolean* isMediaPlaying);
                HRESULT Shutdown();
            }

            [uuid(EF9DC2BC-9317-4696-B051-2BAD643177B5)]
            [version(0x0A000000)]
            interface IMediaPlaybackSource : IInspectable
            {
            }

            [exclusiveto(Windows.Media.Playback.MediaPlaybackItem)]
            [uuid(7133FCE1-1769-4FF9-A7C1-38D2C4D42360)]
            [version(0x0A000000)]
            interface IMediaPlaybackItemFactory : IInspectable
            {
                HRESULT Create([in] Windows.Media.Core.MediaSource* source, [out] [retval] Windows.Media.Playback.MediaPlaybackItem** value);
            }

            [exclusiveto(Windows.Media.Playback.MediaPlaybackItem)]
            [uuid(047097D2-E4AF-48AB-B283-6929E674ECE2)]
            [version(0x0A000000)]
            interface IMediaPlaybackItem : IInspectable
                requires
                    Windows.Media.Playback.IMediaPlaybackSource
            {
                [eventadd] HRESULT AudioTracksChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlaybackItem*, Windows.Foundation.Collections.IVectorChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT AudioTracksChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT VideoTracksChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlaybackItem*, Windows.Foundation.Collections.IVectorChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT VideoTracksChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT TimedMetadataTracksChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlaybackItem*, Windows.Foundation.Collections.IVectorChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT TimedMetadataTracksChanged([in] EventRegistrationToken token);
                [propget] HRESULT Source([out] [retval] Windows.Media.Core.MediaSource** value);
                [propget] HRESULT AudioTracks([out] [retval] Windows.Media.Playback.MediaPlaybackAudioTrackList** value);
                [propget] HRESULT VideoTracks([out] [retval] Windows.Media.Playback.MediaPlaybackVideoTrackList** value);
                [propget] HRESULT TimedMetadataTracks([out] [retval] Windows.Media.Playback.MediaPlaybackTimedMetadataTrackList** value);
            }

            [exclusiveto(Windows.Media.Playback.MediaPlaybackItemError)]
            [uuid(69FBEF2B-DCD6-4DF9-A450-DBF4C6F1C2C2)]
            [version(0x0A000000)]
            interface IMediaPlaybackItemError : IInspectable
            {
                [propget] HRESULT ErrorCode([out] [retval] Windows.Media.Playback.MediaPlaybackItemErrorCode* value);
                [propget] HRESULT ExtendedError([out] [retval] HRESULT* value);
            }

            [uuid(5C1D0BA7-3856-48B9-8DC6-244BF107BF8C)]
            [version(0x0A000000)]
            interface IMediaEnginePlaybackSource : IInspectable
            {
                [propget] HRESULT CurrentItem([out] [retval] Windows.Media.Playback.MediaPlaybackItem** value);
                HRESULT SetPlaybackSource([in] Windows.Media.Playback.IMediaPlaybackSource* source);
            }

            [exclusiveto(Windows.Media.Playback.MediaPlaybackItemOpenedEventArgs)]
            [uuid(CBD9BD82-3037-4FBE-AE8F-39FC39EDF4EF)]
            [version(0x0A000000)]
            interface IMediaPlaybackItemOpenedEventArgs : IInspectable
            {
                [propget] HRESULT Item([out] [retval] Windows.Media.Playback.MediaPlaybackItem** value);
            }

            [exclusiveto(Windows.Media.Playback.MediaPlaybackItemFailedEventArgs)]
            [uuid(7703134A-E9A7-47C3-862C-C656D30683D4)]
            [version(0x0A000000)]
            interface IMediaPlaybackItemFailedEventArgs : IInspectable
            {
                [propget] HRESULT Item([out] [retval] Windows.Media.Playback.MediaPlaybackItem** value);
                [propget] HRESULT Error([out] [retval] Windows.Media.Playback.MediaPlaybackItemError** value);
            }

            [exclusiveto(Windows.Media.Playback.CurrentMediaPlaybackItemChangedEventArgs)]
            [uuid(1743A892-5C43-4A15-967A-572D2D0F26C6)]
            [version(0x0A000000)]
            interface ICurrentMediaPlaybackItemChangedEventArgs : IInspectable
            {
                [propget] HRESULT NewItem([out] [retval] Windows.Media.Playback.MediaPlaybackItem** value);
                [propget] HRESULT OldItem([out] [retval] Windows.Media.Playback.MediaPlaybackItem** value);
            }

            [exclusiveto(Windows.Media.Playback.MediaPlaybackList)]
            [uuid(7F77EE9C-DC42-4E26-A98D-7850DF8EC925)]
            [version(0x0A000000)]
            interface IMediaPlaybackList : IInspectable
                requires
                    Windows.Media.Playback.IMediaPlaybackSource
            {
                [eventadd] HRESULT ItemFailed([in] Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlaybackList*, Windows.Media.Playback.MediaPlaybackItemFailedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT ItemFailed([in] EventRegistrationToken token);
                [eventadd] HRESULT CurrentItemChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlaybackList*, Windows.Media.Playback.CurrentMediaPlaybackItemChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT CurrentItemChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT ItemOpened([in] Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlaybackList*, Windows.Media.Playback.MediaPlaybackItemOpenedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT ItemOpened([in] EventRegistrationToken token);
                [propget] HRESULT Items([out] [retval] Windows.Foundation.Collections.IObservableVector<Windows.Media.Playback.MediaPlaybackItem*>** value);
                [propget] HRESULT AutoRepeatEnabled([out] [retval] boolean* value);
                [propput] HRESULT AutoRepeatEnabled([in] boolean value);
                [propget] HRESULT ShuffleEnabled([out] [retval] boolean* value);
                [propput] HRESULT ShuffleEnabled([in] boolean value);
                [propget] HRESULT CurrentItem([out] [retval] Windows.Media.Playback.MediaPlaybackItem** value);
                [propget] HRESULT CurrentItemIndex([out] [retval] UINT32* value);
                HRESULT MoveNext([out] [retval] Windows.Media.Playback.MediaPlaybackItem** item);
                HRESULT MovePrevious([out] [retval] Windows.Media.Playback.MediaPlaybackItem** item);
                HRESULT MoveTo([in] UINT32 itemIndex, [out] [retval] Windows.Media.Playback.MediaPlaybackItem** item);
            }

            [exclusiveto(Windows.Media.Playback.MediaPlaybackTimedMetadataTrackList)]
            [uuid(72B41319-BBFB-46A3-9372-9C9C744B9438)]
            [version(0x0A000000)]
            interface IMediaPlaybackTimedMetadataTrackList : IInspectable
            {
                [eventadd] HRESULT PresentationModeChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Playback.MediaPlaybackTimedMetadataTrackList*, Windows.Media.Playback.TimedMetadataPresentationModeChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PresentationModeChanged([in] EventRegistrationToken token);
                HRESULT GetPresentationMode([in] UINT32 index, [out] [retval] Windows.Media.Playback.TimedMetadataTrackPresentationMode* value);
                HRESULT SetPresentationMode([in] UINT32 index, [in] Windows.Media.Playback.TimedMetadataTrackPresentationMode value);
            }

            [exclusiveto(Windows.Media.Playback.TimedMetadataPresentationModeChangedEventArgs)]
            [uuid(D1636099-65DF-45AE-8CEF-DC0B53FDC2BB)]
            [version(0x0A000000)]
            interface ITimedMetadataPresentationModeChangedEventArgs : IInspectable
            {
                [propget] HRESULT Track([out] [retval] Windows.Media.Core.TimedMetadataTrack** value);
                [propget] HRESULT OldPresentationMode([out] [retval] Windows.Media.Playback.TimedMetadataTrackPresentationMode* value);
                [propget] HRESULT NewPresentationMode([out] [retval] Windows.Media.Playback.TimedMetadataTrackPresentationMode* value);
            }

            [activatable(Windows.Media.Playback.IPlaybackMediaMarkerFactory, 0x0A000000)]
            [marshaling_behavior(agile)]
            [version(0x0A000000)]
            runtimeclass PlaybackMediaMarker
            {
                [default] interface Windows.Media.Playback.IPlaybackMediaMarker;
            }

            [marshaling_behavior(agile)]
            [version(0x0A000000)]
            runtimeclass PlaybackMediaMarkerSequence
            {
                [default] interface Windows.Media.Playback.IPlaybackMediaMarkerSequence;
                interface Windows.Foundation.Collections.IIterable<Windows.Media.Playback.PlaybackMediaMarker*>;
            }

            [marshaling_behavior(agile)]
            [version(0x0A000000)]
            runtimeclass MediaPlayerFailedEventArgs
            {
                [default] interface Windows.Media.Playback.IMediaPlayerFailedEventArgs;
            }

            [marshaling_behavior(agile)]
            [version(0x0A000000)]
            runtimeclass MediaPlayerRateChangedEventArgs
            {
                [default] interface Windows.Media.Playback.IMediaPlayerRateChangedEventArgs;
            }

            [marshaling_behavior(agile)]
            [version(0x0A000000)]
            runtimeclass PlaybackMediaMarkerReachedEventArgs
            {
                [default] interface Windows.Media.Playback.IPlaybackMediaMarkerReachedEventArgs;
            }

            [marshaling_behavior(agile)]
            [version(0x0A000000)]
            runtimeclass MediaPlayerDataReceivedEventArgs
            {
                [default] interface Windows.Media.Playback.IMediaPlayerDataReceivedEventArgs;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass MediaPlayer
            {
                [default] interface Windows.Media.Playback.IMediaPlayer;
                interface Windows.Media.Playback.IMediaPlayerSource;
                [version(0x0A000000)] interface Windows.Media.Playback.IMediaPlayerSource2;
                [version(0x0A000000)] interface Windows.Media.Playback.IMediaPlayer2;
            }

            [marshaling_behavior(agile)]
            [static(Windows.Media.Playback.IBackgroundMediaPlayerStatics, 0x0A000000)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass BackgroundMediaPlayer
            {
            }

            [activatable(Windows.Media.Playback.IMediaPlaybackItemFactory, 0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass MediaPlaybackItem
            {
                [default] interface Windows.Media.Playback.IMediaPlaybackItem;
                interface Windows.Media.Playback.IMediaPlaybackSource;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass MediaPlaybackAudioTrackList
            {
                [default] interface Windows.Foundation.Collections.IVectorView<Windows.Media.Core.AudioTrack*>;
                interface Windows.Foundation.Collections.IIterable<Windows.Media.Core.AudioTrack*>;
                interface Windows.Media.Core.ISingleSelectMediaTrackList;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass MediaPlaybackVideoTrackList
            {
                [default] interface Windows.Foundation.Collections.IVectorView<Windows.Media.Core.VideoTrack*>;
                interface Windows.Foundation.Collections.IIterable<Windows.Media.Core.VideoTrack*>;
                interface Windows.Media.Core.ISingleSelectMediaTrackList;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass MediaPlaybackTimedMetadataTrackList
            {
                [default] interface Windows.Foundation.Collections.IVectorView<Windows.Media.Core.TimedMetadataTrack*>;
                interface Windows.Foundation.Collections.IIterable<Windows.Media.Core.TimedMetadataTrack*>;
                interface Windows.Media.Playback.IMediaPlaybackTimedMetadataTrackList;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass MediaPlaybackItemError
            {
                [default] interface Windows.Media.Playback.IMediaPlaybackItemError;
            }

            [activatable(0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass MediaPlaybackList
            {
                [default] interface Windows.Media.Playback.IMediaPlaybackList;
                interface Windows.Media.Playback.IMediaPlaybackSource;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass MediaPlaybackItemFailedEventArgs
            {
                [default] interface Windows.Media.Playback.IMediaPlaybackItemFailedEventArgs;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CurrentMediaPlaybackItemChangedEventArgs
            {
                [default] interface Windows.Media.Playback.ICurrentMediaPlaybackItemChangedEventArgs;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass MediaPlaybackItemOpenedEventArgs
            {
                [default] interface Windows.Media.Playback.IMediaPlaybackItemOpenedEventArgs;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass TimedMetadataPresentationModeChangedEventArgs
            {
                [default] interface Windows.Media.Playback.ITimedMetadataPresentationModeChangedEventArgs;
            }
        }
    }
}
