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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.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(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        namespace Collections
        {
            interface IPropertySet;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Media
    {
        typedef enum SoundLevel SoundLevel;

        interface IMediaControl;

        interface IMediaExtension;

        interface IMediaExtensionManager;

        interface IVideoEffectsStatics;

        runtimeclass MediaControl;

        runtimeclass MediaExtensionManager;

        runtimeclass VideoEffects;
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace Media
    {
        [version(0x06020000)]
        enum SoundLevel
        {
            Muted = 0,
            Low   = 1,
            Full  = 2
        };

        [uuid(98F1FBE1-7A8D-42CB-B6FE-8FE698264F13)]
        [version(0x06020000)]
        [exclusiveto(Windows.Media.MediaControl)]
        interface IMediaControl : IInspectable
        {
            [eventadd] HRESULT SoundLevelChanged([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* cookie);
            [eventremove] HRESULT SoundLevelChanged([in] EventRegistrationToken cookie);
            [eventadd] HRESULT PlayPressed([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* cookie);
            [eventremove] HRESULT PlayPressed([in] EventRegistrationToken cookie);
            [eventadd] HRESULT PausePressed([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* cookie);
            [eventremove] HRESULT PausePressed([in] EventRegistrationToken cookie);
            [eventadd] HRESULT StopPressed([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* cookie);
            [eventremove] HRESULT StopPressed([in] EventRegistrationToken cookie);
            [eventadd] HRESULT PlayPauseTogglePressed([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* cookie);
            [eventremove] HRESULT PlayPauseTogglePressed([in] EventRegistrationToken cookie);
            [eventadd] HRESULT RecordPressed([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* cookie);
            [eventremove] HRESULT RecordPressed([in] EventRegistrationToken cookie);
            [eventadd] HRESULT NextTrackPressed([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* cookie);
            [eventremove] HRESULT NextTrackPressed([in] EventRegistrationToken cookie);
            [eventadd] HRESULT PreviousTrackPressed([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* cookie);
            [eventremove] HRESULT PreviousTrackPressed([in] EventRegistrationToken cookie);
            [eventadd] HRESULT FastForwardPressed([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* cookie);
            [eventremove] HRESULT FastForwardPressed([in] EventRegistrationToken cookie);
            [eventadd] HRESULT RewindPressed([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* cookie);
            [eventremove] HRESULT RewindPressed([in] EventRegistrationToken cookie);
            [eventadd] HRESULT ChannelUpPressed([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* cookie);
            [eventremove] HRESULT ChannelUpPressed([in] EventRegistrationToken cookie);
            [eventadd] HRESULT ChannelDownPressed([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* cookie);
            [eventremove] HRESULT ChannelDownPressed([in] EventRegistrationToken cookie);
            [propget] HRESULT SoundLevel([out] [retval] Windows.Media.SoundLevel* value);
            [propput] HRESULT TrackName([in] HSTRING value);
            [propget] HRESULT TrackName([out] [retval] HSTRING* value);
            [propput] HRESULT ArtistName([in] HSTRING value);
            [propget] HRESULT ArtistName([out] [retval] HSTRING* value);
            [propput] HRESULT IsPlaying([in] boolean value);
            [propget] HRESULT IsPlaying([out] [retval] boolean* value);
            [propput] HRESULT AlbumArt([in] Windows.Foundation.Uri* value);
            [propget] HRESULT AlbumArt([out] [retval] Windows.Foundation.Uri** value);
        }

        [uuid(07915118-45DF-442B-8A3F-F7826A6370AB)]
        [version(0x06020000)]
        interface IMediaExtension : IInspectable
        {
            HRESULT SetProperties([in] Windows.Foundation.Collections.IPropertySet* configuration);
        }

        [uuid(4A25EAF5-242D-4DFB-97F4-69B7C42576FF)]
        [exclusiveto(Windows.Media.MediaExtensionManager)]
        [version(0x06020000)]
        interface IMediaExtensionManager : IInspectable
        {
            [overload("RegisterSchemeHandler")] HRESULT RegisterSchemeHandler([in] HSTRING activatableClassId, [in] HSTRING scheme);
            [overload("RegisterSchemeHandler")] HRESULT RegisterSchemeHandlerWithSettings([in] HSTRING activatableClassId, [in] HSTRING scheme, [in] Windows.Foundation.Collections.IPropertySet* configuration);
            [overload("RegisterByteStreamHandler")] HRESULT RegisterByteStreamHandler([in] HSTRING activatableClassId, [in] HSTRING fileExtension, [in] HSTRING mimeType);
            [overload("RegisterByteStreamHandler")] HRESULT RegisterByteStreamHandlerWithSettings([in] HSTRING activatableClassId, [in] HSTRING fileExtension, [in] HSTRING mimeType, [in] Windows.Foundation.Collections.IPropertySet* configuration);
            [overload("RegisterAudioDecoder")] HRESULT RegisterAudioDecoder([in] HSTRING activatableClassId, [in] GUID inputSubtype, [in] GUID outputSubtype);
            [overload("RegisterAudioDecoder")] HRESULT RegisterAudioDecoderWithSettings([in] HSTRING activatableClassId, [in] GUID inputSubtype, [in] GUID outputSubtype, [in] Windows.Foundation.Collections.IPropertySet* configuration);
            [overload("RegisterAudioEncoder")] HRESULT RegisterAudioEncoder([in] HSTRING activatableClassId, [in] GUID inputSubtype, [in] GUID outputSubtype);
            [overload("RegisterAudioEncoder")] HRESULT RegisterAudioEncoderWithSettings([in] HSTRING activatableClassId, [in] GUID inputSubtype, [in] GUID outputSubtype, [in] Windows.Foundation.Collections.IPropertySet* configuration);
            [overload("RegisterVideoDecoder")] HRESULT RegisterVideoDecoder([in] HSTRING activatableClassId, [in] GUID inputSubtype, [in] GUID outputSubtype);
            [overload("RegisterVideoDecoder")] HRESULT RegisterVideoDecoderWithSettings([in] HSTRING activatableClassId, [in] GUID inputSubtype, [in] GUID outputSubtype, [in] Windows.Foundation.Collections.IPropertySet* configuration);
            [overload("RegisterVideoEncoder")] HRESULT RegisterVideoEncoder([in] HSTRING activatableClassId, [in] GUID inputSubtype, [in] GUID outputSubtype);
            [overload("RegisterVideoEncoder")] HRESULT RegisterVideoEncoderWithSettings([in] HSTRING activatableClassId, [in] GUID inputSubtype, [in] GUID outputSubtype, [in] Windows.Foundation.Collections.IPropertySet* configuration);
        }

        [uuid(1FCDA5E8-BAF1-4521-980C-3BCEBB44CF38)]
        [exclusiveto(Windows.Media.VideoEffects)]
        [version(0x06020000)]
        interface IVideoEffectsStatics : IInspectable
        {
            [propget] HRESULT VideoStabilization([out] [retval] HSTRING* value);
        }

        [marshaling_behavior(agile)]
        [static(Windows.Media.IMediaControl, 0x06020000)]
        [version(0x06020000)]
        [threading(mta)]
        runtimeclass MediaControl
        {
        }

        [activatable(0x06020000)]
        [marshaling_behavior(agile)]
        [threading(both)]
        [version(0x06020000)]
        runtimeclass MediaExtensionManager
        {
            [default] interface Windows.Media.IMediaExtensionManager;
        }

        [threading(both)]
        [marshaling_behavior(agile)]
        [version(0x06020000)]
        [static(Windows.Media.IVideoEffectsStatics, 0x06020000)]
        runtimeclass VideoEffects
        {
        }
    }
}
