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

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 MediaPixelFormat MediaPixelFormat;

            typedef enum MediaThumbnailFormat MediaThumbnailFormat;

            typedef enum AudioEncodingQuality AudioEncodingQuality;

            typedef enum VideoEncodingQuality VideoEncodingQuality;

            interface IMediaRatio;

            interface IMediaEncodingProperties;

            interface IAudioEncodingProperties;

            interface IAudioEncodingPropertiesWithFormatUserData;

            interface IAudioEncodingPropertiesStatics;

            interface IVideoEncodingProperties;

            interface IMediaEncodingSubtypesStatics;

            interface IH264ProfileIdsStatics;

            interface IMpeg2ProfileIdsStatics;

            interface IVideoEncodingProperties2;

            interface IVideoEncodingPropertiesStatics;

            interface IImageEncodingProperties;

            interface IImageEncodingPropertiesStatics;

            interface IImageEncodingPropertiesStatics2;

            interface IContainerEncodingProperties;

            interface IMediaEncodingProfileStatics;

            interface IMediaEncodingProfileStatics2;

            interface IMediaEncodingProfile;

            runtimeclass MediaRatio;

            runtimeclass MediaPropertySet;

            runtimeclass AudioEncodingProperties;

            runtimeclass MediaEncodingSubtypes;

            runtimeclass H264ProfileIds;

            runtimeclass Mpeg2ProfileIds;

            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(0x06030000)]
            enum MediaPixelFormat
            {
                Nv12  = 0,
                Bgra8 = 1
            };

            [version(0x06030000)]
            enum MediaThumbnailFormat
            {
                Bmp   = 0,
                Bgra8 = 1
            };

            [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
            };

            [exclusiveto(Windows.Media.MediaProperties.MediaRatio)]
            [uuid(D2D0FEE5-8929-401D-AC78-7D357E378163)]
            [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);
            }

            [exclusiveto(Windows.Media.MediaProperties.AudioEncodingProperties)]
            [uuid(62BC7A16-005C-4B3B-8A0B-0A090E9687F3)]
            [version(0x06020000)]
            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);
            }

            [exclusiveto(Windows.Media.MediaProperties.AudioEncodingProperties)]
            [uuid(98F10D79-13EA-49FF-BE70-2673DB69702C)]
            [version(0x06030000)]
            interface IAudioEncodingPropertiesWithFormatUserData : IInspectable
            {
                HRESULT SetFormatUserData([in] UINT32 __valueSize, [in] [size_is(__valueSize)] BYTE* value);
                HRESULT GetFormatUserData([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] BYTE** value);
            }

            [exclusiveto(Windows.Media.MediaProperties.AudioEncodingProperties)]
            [uuid(0CAD332C-EBE9-4527-B36D-E42A13CF38DB)]
            [version(0x06030000)]
            interface IAudioEncodingPropertiesStatics : IInspectable
            {
                HRESULT CreateAac([in] UINT32 sampleRate, [in] UINT32 channelCount, [in] UINT32 bitrate, [out] [retval] Windows.Media.MediaProperties.AudioEncodingProperties** value);
                HRESULT CreateAacAdts([in] UINT32 sampleRate, [in] UINT32 channelCount, [in] UINT32 bitrate, [out] [retval] Windows.Media.MediaProperties.AudioEncodingProperties** value);
                HRESULT CreateMp3([in] UINT32 sampleRate, [in] UINT32 channelCount, [in] UINT32 bitrate, [out] [retval] Windows.Media.MediaProperties.AudioEncodingProperties** value);
                HRESULT CreatePcm([in] UINT32 sampleRate, [in] UINT32 channelCount, [in] UINT32 bitsPerSample, [out] [retval] Windows.Media.MediaProperties.AudioEncodingProperties** value);
                HRESULT CreateWma([in] UINT32 sampleRate, [in] UINT32 channelCount, [in] UINT32 bitrate, [out] [retval] Windows.Media.MediaProperties.AudioEncodingProperties** value);
            }

            [exclusiveto(Windows.Media.MediaProperties.VideoEncodingProperties)]
            [uuid(76EE6C9A-37C2-4F2A-880A-1282BBB4373D)]
            [version(0x06020000)]
            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);
            }

            [exclusiveto(Windows.Media.MediaProperties.MediaEncodingSubtypes)]
            [uuid(37B6580E-A171-4464-BA5A-53189E48C1C8)]
            [version(0x06030000)]
            interface IMediaEncodingSubtypesStatics : IInspectable
            {
                [propget] HRESULT Aac([out] [retval] HSTRING* value);
                [propget] HRESULT AacAdts([out] [retval] HSTRING* value);
                [propget] HRESULT Ac3([out] [retval] HSTRING* value);
                [propget] HRESULT AmrNb([out] [retval] HSTRING* value);
                [propget] HRESULT AmrWb([out] [retval] HSTRING* value);
                [propget] HRESULT Argb32([out] [retval] HSTRING* value);
                [propget] HRESULT Asf([out] [retval] HSTRING* value);
                [propget] HRESULT Avi([out] [retval] HSTRING* value);
                [propget] HRESULT Bgra8([out] [retval] HSTRING* value);
                [propget] HRESULT Bmp([out] [retval] HSTRING* value);
                [propget] HRESULT Eac3([out] [retval] HSTRING* value);
                [propget] HRESULT Float([out] [retval] HSTRING* value);
                [propget] HRESULT Gif([out] [retval] HSTRING* value);
                [propget] HRESULT H263([out] [retval] HSTRING* value);
                [propget] HRESULT H264([out] [retval] HSTRING* value);
                [propget] HRESULT H264Es([out] [retval] HSTRING* value);
                [propget] HRESULT Hevc([out] [retval] HSTRING* value);
                [propget] HRESULT HevcEs([out] [retval] HSTRING* value);
                [propget] HRESULT Iyuv([out] [retval] HSTRING* value);
                [propget] HRESULT Jpeg([out] [retval] HSTRING* value);
                [propget] HRESULT JpegXr([out] [retval] HSTRING* value);
                [propget] HRESULT Mjpg([out] [retval] HSTRING* value);
                [propget] HRESULT Mpeg([out] [retval] HSTRING* value);
                [propget] HRESULT Mpeg1([out] [retval] HSTRING* value);
                [propget] HRESULT Mpeg2([out] [retval] HSTRING* value);
                [propget] HRESULT Mp3([out] [retval] HSTRING* value);
                [propget] HRESULT Mpeg4([out] [retval] HSTRING* value);
                [propget] HRESULT Nv12([out] [retval] HSTRING* value);
                [propget] HRESULT Pcm([out] [retval] HSTRING* value);
                [propget] HRESULT Png([out] [retval] HSTRING* value);
                [propget] HRESULT Rgb24([out] [retval] HSTRING* value);
                [propget] HRESULT Rgb32([out] [retval] HSTRING* value);
                [propget] HRESULT Tiff([out] [retval] HSTRING* value);
                [propget] HRESULT Wave([out] [retval] HSTRING* value);
                [propget] HRESULT Wma8([out] [retval] HSTRING* value);
                [propget] HRESULT Wma9([out] [retval] HSTRING* value);
                [propget] HRESULT Wmv3([out] [retval] HSTRING* value);
                [propget] HRESULT Wvc1([out] [retval] HSTRING* value);
                [propget] HRESULT Yuy2([out] [retval] HSTRING* value);
                [propget] HRESULT Yv12([out] [retval] HSTRING* value);
            }

            [exclusiveto(Windows.Media.MediaProperties.H264ProfileIds)]
            [uuid(38654CA7-846A-4F97-A2E5-C3A15BBF70FD)]
            [version(0x06030000)]
            interface IH264ProfileIdsStatics : IInspectable
            {
                [propget] HRESULT ConstrainedBaseline([out] [retval] INT32* value);
                [propget] HRESULT Baseline([out] [retval] INT32* value);
                [propget] HRESULT Extended([out] [retval] INT32* value);
                [propget] HRESULT Main([out] [retval] INT32* value);
                [propget] HRESULT High([out] [retval] INT32* value);
                [propget] HRESULT High10([out] [retval] INT32* value);
                [propget] HRESULT High422([out] [retval] INT32* value);
                [propget] HRESULT High444([out] [retval] INT32* value);
                [propget] HRESULT StereoHigh([out] [retval] INT32* value);
                [propget] HRESULT MultiviewHigh([out] [retval] INT32* value);
            }

            [exclusiveto(Windows.Media.MediaProperties.Mpeg2ProfileIds)]
            [uuid(A461FF85-E57A-4128-9B21-D5331B04235C)]
            [version(0x06030000)]
            interface IMpeg2ProfileIdsStatics : IInspectable
            {
                [propget] HRESULT Simple([out] [retval] INT32* value);
                [propget] HRESULT Main([out] [retval] INT32* value);
                [propget] HRESULT SignalNoiseRatioScalable([out] [retval] INT32* value);
                [propget] HRESULT SpatiallyScalable([out] [retval] INT32* value);
                [propget] HRESULT High([out] [retval] INT32* value);
            }

            [exclusiveto(Windows.Media.MediaProperties.VideoEncodingProperties)]
            [uuid(F743A1EF-D465-4290-A94B-EF0F1528F8E3)]
            [version(0x06030000)]
            interface IVideoEncodingProperties2 : IInspectable
            {
                HRESULT SetFormatUserData([in] UINT32 __valueSize, [in] [size_is(__valueSize)] BYTE* value);
                HRESULT GetFormatUserData([out] UINT32* __valueSize, [out] [size_is(, *__valueSize)] BYTE** value);
                [propput] HRESULT ProfileId([in] INT32 value);
                [propget] HRESULT ProfileId([out] [retval] INT32* value);
            }

            [exclusiveto(Windows.Media.MediaProperties.VideoEncodingProperties)]
            [uuid(3CE14D44-1DC5-43DB-9F38-EBEBF90152CB)]
            [version(0x06030000)]
            interface IVideoEncodingPropertiesStatics : IInspectable
            {
                HRESULT CreateH264([out] [retval] Windows.Media.MediaProperties.VideoEncodingProperties** value);
                HRESULT CreateMpeg2([out] [retval] Windows.Media.MediaProperties.VideoEncodingProperties** value);
                HRESULT CreateUncompressed([in] HSTRING subtype, [in] UINT32 width, [in] UINT32 height, [out] [retval] Windows.Media.MediaProperties.VideoEncodingProperties** value);
            }

            [exclusiveto(Windows.Media.MediaProperties.ImageEncodingProperties)]
            [uuid(78625635-F331-4189-B1C3-B48D5AE034F1)]
            [version(0x06020000)]
            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);
            }

            [exclusiveto(Windows.Media.MediaProperties.ImageEncodingProperties)]
            [uuid(257C68DC-8B99-439E-AA59-913A36161297)]
            [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);
            }

            [exclusiveto(Windows.Media.MediaProperties.ImageEncodingProperties)]
            [uuid(F6C25B29-3824-46B0-956E-501329E1BE3C)]
            [version(0x06030000)]
            interface IImageEncodingPropertiesStatics2 : IInspectable
            {
                HRESULT CreateUncompressed([in] Windows.Media.MediaProperties.MediaPixelFormat format, [out] [retval] Windows.Media.MediaProperties.ImageEncodingProperties** value);
                HRESULT CreateBmp([out] [retval] Windows.Media.MediaProperties.ImageEncodingProperties** value);
            }

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

            [exclusiveto(Windows.Media.MediaProperties.MediaEncodingProfile)]
            [uuid(197F352C-2EDE-4A45-A896-817A4854F8FE)]
            [version(0x06020000)]
            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);
            }

            [exclusiveto(Windows.Media.MediaProperties.MediaEncodingProfile)]
            [uuid(CE8DE74F-6AF4-4288-8FE2-79ADF1F79A43)]
            [version(0x06030000)]
            interface IMediaEncodingProfileStatics2 : IInspectable
            {
                HRESULT CreateWav([in] Windows.Media.MediaProperties.AudioEncodingQuality quality, [out] [retval] Windows.Media.MediaProperties.MediaEncodingProfile** value);
                HRESULT CreateAvi([in] Windows.Media.MediaProperties.VideoEncodingQuality quality, [out] [retval] Windows.Media.MediaProperties.MediaEncodingProfile** value);
            }

            [exclusiveto(Windows.Media.MediaProperties.MediaEncodingProfile)]
            [uuid(E7DBF5A8-1DB9-4783-876B-3DFE12ACFDB3)]
            [version(0x06020000)]
            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);
            }

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

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

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

            [marshaling_behavior(agile)]
            [static(Windows.Media.MediaProperties.IMediaEncodingSubtypesStatics, 0x06030000)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass MediaEncodingSubtypes
            {
            }

            [marshaling_behavior(agile)]
            [static(Windows.Media.MediaProperties.IH264ProfileIdsStatics, 0x06030000)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass H264ProfileIds
            {
            }

            [marshaling_behavior(agile)]
            [static(Windows.Media.MediaProperties.IMpeg2ProfileIdsStatics, 0x06030000)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass Mpeg2ProfileIds
            {
            }

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

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

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

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