//
// 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";
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(__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 Storage
    {
        interface IStorageFile;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IRandomAccessStream;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace MediaProperties
        {
            typedef enum AudioEncodingQuality AudioEncodingQuality;

            typedef enum VideoEncodingQuality VideoEncodingQuality;

            interface IMediaRatio;

            interface IMediaEncodingProperties;

            interface IAudioEncodingProperties;

            interface IVideoEncodingProperties;

            interface IImageEncodingProperties;

            interface IImageEncodingPropertiesStatics;

            interface IContainerEncodingProperties;

            interface IMediaEncodingProfileStatics;

            interface IMediaEncodingProfile;

            runtimeclass MediaRatio;

            runtimeclass MediaPropertySet;

            runtimeclass AudioEncodingProperties;

            runtimeclass VideoEncodingProperties;

            runtimeclass ImageEncodingProperties;

            runtimeclass ContainerEncodingProperties;

            runtimeclass MediaEncodingProfile;
        }
    }
}

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

                interface Windows.Foundation.Collections.IIterator<Windows.Media.MediaProperties.IMediaEncodingProperties*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.MediaProperties.IMediaEncodingProperties*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.MediaProperties.MediaEncodingProfile*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace MediaProperties
        {
            [version(0x06020000)]
            enum AudioEncodingQuality
            {
                Auto   = 0,
                High   = 1,
                Medium = 2,
                Low    = 3
            };

            [version(0x06020000)]
            enum VideoEncodingQuality
            {
                Auto    = 0,
                HD1080p = 1,
                HD720p  = 2,
                Wvga    = 3,
                Ntsc    = 4,
                Pal     = 5,
                Vga     = 6,
                Qvga    = 7
            };

            [uuid(D2D0FEE5-8929-401D-AC78-7D357E378163)]
            [exclusiveto(Windows.Media.MediaProperties.MediaRatio)]
            [version(0x06020000)]
            interface IMediaRatio : IInspectable
            {
                [propput] HRESULT Numerator([in] UINT32 value);
                [propget] HRESULT Numerator([out] [retval] UINT32* value);
                [propput] HRESULT Denominator([in] UINT32 value);
                [propget] HRESULT Denominator([out] [retval] UINT32* value);
            }

            [uuid(B4002AF6-ACD4-4E5A-A24B-5D7498A8B8C4)]
            [version(0x06020000)]
            interface IMediaEncodingProperties : IInspectable
            {
                [propget] HRESULT Properties([out] [retval] Windows.Media.MediaProperties.MediaPropertySet** value);
                [propget] HRESULT Type([out] [retval] HSTRING* value);
                [propput] HRESULT Subtype([in] HSTRING value);
                [propget] HRESULT Subtype([out] [retval] HSTRING* value);
            }

            [uuid(62BC7A16-005C-4B3B-8A0B-0A090E9687F3)]
            [version(0x06020000)]
            [exclusiveto(Windows.Media.MediaProperties.AudioEncodingProperties)]
            interface IAudioEncodingProperties : IInspectable
                requires
                    Windows.Media.MediaProperties.IMediaEncodingProperties
            {
                [propput] HRESULT Bitrate([in] UINT32 value);
                [propget] HRESULT Bitrate([out] [retval] UINT32* value);
                [propput] HRESULT ChannelCount([in] UINT32 value);
                [propget] HRESULT ChannelCount([out] [retval] UINT32* value);
                [propput] HRESULT SampleRate([in] UINT32 value);
                [propget] HRESULT SampleRate([out] [retval] UINT32* value);
                [propput] HRESULT BitsPerSample([in] UINT32 value);
                [propget] HRESULT BitsPerSample([out] [retval] UINT32* value);
            }

            [uuid(76EE6C9A-37C2-4F2A-880A-1282BBB4373D)]
            [version(0x06020000)]
            [exclusiveto(Windows.Media.MediaProperties.VideoEncodingProperties)]
            interface IVideoEncodingProperties : IInspectable
                requires
                    Windows.Media.MediaProperties.IMediaEncodingProperties
            {
                [propput] HRESULT Bitrate([in] UINT32 value);
                [propget] HRESULT Bitrate([out] [retval] UINT32* value);
                [propput] HRESULT Width([in] UINT32 value);
                [propget] HRESULT Width([out] [retval] UINT32* value);
                [propput] HRESULT Height([in] UINT32 value);
                [propget] HRESULT Height([out] [retval] UINT32* value);
                [propget] HRESULT FrameRate([out] [retval] Windows.Media.MediaProperties.MediaRatio** value);
                [propget] HRESULT PixelAspectRatio([out] [retval] Windows.Media.MediaProperties.MediaRatio** value);
            }

            [uuid(78625635-F331-4189-B1C3-B48D5AE034F1)]
            [version(0x06020000)]
            [exclusiveto(Windows.Media.MediaProperties.ImageEncodingProperties)]
            interface IImageEncodingProperties : IInspectable
                requires
                    Windows.Media.MediaProperties.IMediaEncodingProperties
            {
                [propput] HRESULT Width([in] UINT32 value);
                [propget] HRESULT Width([out] [retval] UINT32* value);
                [propput] HRESULT Height([in] UINT32 value);
                [propget] HRESULT Height([out] [retval] UINT32* value);
            }

            [uuid(257C68DC-8B99-439E-AA59-913A36161297)]
            [exclusiveto(Windows.Media.MediaProperties.ImageEncodingProperties)]
            [version(0x06020000)]
            interface IImageEncodingPropertiesStatics : IInspectable
            {
                HRESULT CreateJpeg([out] [retval] Windows.Media.MediaProperties.ImageEncodingProperties** value);
                HRESULT CreatePng([out] [retval] Windows.Media.MediaProperties.ImageEncodingProperties** value);
                HRESULT CreateJpegXR([out] [retval] Windows.Media.MediaProperties.ImageEncodingProperties** value);
            }

            [uuid(59AC2A57-B32A-479E-8A61-4B7F2E9E7EA0)]
            [version(0x06020000)]
            [exclusiveto(Windows.Media.MediaProperties.ContainerEncodingProperties)]
            interface IContainerEncodingProperties : IInspectable
                requires
                    Windows.Media.MediaProperties.IMediaEncodingProperties
            {
            }

            [uuid(197F352C-2EDE-4A45-A896-817A4854F8FE)]
            [version(0x06020000)]
            [exclusiveto(Windows.Media.MediaProperties.MediaEncodingProfile)]
            interface IMediaEncodingProfileStatics : IInspectable
            {
                HRESULT CreateM4a([in] Windows.Media.MediaProperties.AudioEncodingQuality quality, [out] [retval] Windows.Media.MediaProperties.MediaEncodingProfile** value);
                HRESULT CreateMp3([in] Windows.Media.MediaProperties.AudioEncodingQuality quality, [out] [retval] Windows.Media.MediaProperties.MediaEncodingProfile** value);
                HRESULT CreateWma([in] Windows.Media.MediaProperties.AudioEncodingQuality quality, [out] [retval] Windows.Media.MediaProperties.MediaEncodingProfile** value);
                HRESULT CreateMp4([in] Windows.Media.MediaProperties.VideoEncodingQuality quality, [out] [retval] Windows.Media.MediaProperties.MediaEncodingProfile** value);
                HRESULT CreateWmv([in] Windows.Media.MediaProperties.VideoEncodingQuality quality, [out] [retval] Windows.Media.MediaProperties.MediaEncodingProfile** value);
                HRESULT CreateFromFileAsync([in] Windows.Storage.IStorageFile* file, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.MediaProperties.MediaEncodingProfile*>** operation);
                HRESULT CreateFromStreamAsync([in] Windows.Storage.Streams.IRandomAccessStream* stream, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.MediaProperties.MediaEncodingProfile*>** operation);
            }

            [uuid(E7DBF5A8-1DB9-4783-876B-3DFE12ACFDB3)]
            [version(0x06020000)]
            [exclusiveto(Windows.Media.MediaProperties.MediaEncodingProfile)]
            interface IMediaEncodingProfile : IInspectable
            {
                [propput] HRESULT Audio([in] Windows.Media.MediaProperties.AudioEncodingProperties* value);
                [propget] HRESULT Audio([out] [retval] Windows.Media.MediaProperties.AudioEncodingProperties** value);
                [propput] HRESULT Video([in] Windows.Media.MediaProperties.VideoEncodingProperties* value);
                [propget] HRESULT Video([out] [retval] Windows.Media.MediaProperties.VideoEncodingProperties** value);
                [propput] HRESULT Container([in] Windows.Media.MediaProperties.ContainerEncodingProperties* value);
                [propget] HRESULT Container([out] [retval] Windows.Media.MediaProperties.ContainerEncodingProperties** value);
            }

            [version(0x06020000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MediaRatio
            {
                [default] interface Windows.Media.MediaProperties.IMediaRatio;
            }

            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass MediaPropertySet
            {
                [default] interface Windows.Foundation.Collections.IMap<GUID, IInspectable*>;
                interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<GUID, IInspectable*>*>;
            }

            [version(0x06020000)]
            [activatable(0x06020000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AudioEncodingProperties
            {
                [default] interface Windows.Media.MediaProperties.IAudioEncodingProperties;
                interface Windows.Media.MediaProperties.IMediaEncodingProperties;
            }

            [version(0x06020000)]
            [activatable(0x06020000)]
            [threading(both)]
            [marshaling_behavior(agile)]
            runtimeclass VideoEncodingProperties
            {
                [default] interface Windows.Media.MediaProperties.IVideoEncodingProperties;
                interface Windows.Media.MediaProperties.IMediaEncodingProperties;
            }

            [marshaling_behavior(agile)]
            [version(0x06020000)]
            [static(Windows.Media.MediaProperties.IImageEncodingPropertiesStatics, 0x06020000)]
            [activatable(0x06020000)]
            [threading(both)]
            runtimeclass ImageEncodingProperties
            {
                [default] interface Windows.Media.MediaProperties.IImageEncodingProperties;
                interface Windows.Media.MediaProperties.IMediaEncodingProperties;
            }

            [activatable(0x06020000)]
            [threading(both)]
            [version(0x06020000)]
            [marshaling_behavior(agile)]
            runtimeclass ContainerEncodingProperties
            {
                [default] interface Windows.Media.MediaProperties.IContainerEncodingProperties;
                interface Windows.Media.MediaProperties.IMediaEncodingProperties;
            }

            [threading(mta)]
            [version(0x06020000)]
            [activatable(0x06020000)]
            [static(Windows.Media.MediaProperties.IMediaEncodingProfileStatics, 0x06020000)]
            [marshaling_behavior(agile)]
            runtimeclass MediaEncodingProfile
            {
                [default] interface Windows.Media.MediaProperties.IMediaEncodingProfile;
            }
        }
    }
}
