// WARNING: Please don't edit this file. It was generated by Python/WinRT v1.0.0-beta.9

#pragma once

#include "pybase.h"

#if __has_include("py.Windows.Foundation.h")
#include "py.Windows.Foundation.h"
#endif

#if __has_include("py.Windows.Foundation.Collections.h")
#include "py.Windows.Foundation.Collections.h"
#endif

#if __has_include("py.Windows.Media.Core.h")
#include "py.Windows.Media.Core.h"
#endif

#if __has_include("py.Windows.Storage.h")
#include "py.Windows.Storage.h"
#endif

#if __has_include("py.Windows.Storage.Streams.h")
#include "py.Windows.Storage.Streams.h"
#endif

#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Foundation.Collections.h>
#include <winrt/Windows.Media.Core.h>
#include <winrt/Windows.Storage.h>
#include <winrt/Windows.Storage.Streams.h>

#include <winrt/Windows.Media.MediaProperties.h>

namespace py::proj::Windows::Media::MediaProperties
{}

namespace py::impl::Windows::Media::MediaProperties
{}

namespace py::wrapper::Windows::Media::MediaProperties
{
    using AudioEncodingProperties = py::winrt_wrapper<winrt::Windows::Media::MediaProperties::AudioEncodingProperties>;
    using ContainerEncodingProperties = py::winrt_wrapper<winrt::Windows::Media::MediaProperties::ContainerEncodingProperties>;
    using H264ProfileIds = py::winrt_wrapper<winrt::Windows::Media::MediaProperties::H264ProfileIds>;
    using ImageEncodingProperties = py::winrt_wrapper<winrt::Windows::Media::MediaProperties::ImageEncodingProperties>;
    using MediaEncodingProfile = py::winrt_wrapper<winrt::Windows::Media::MediaProperties::MediaEncodingProfile>;
    using MediaEncodingSubtypes = py::winrt_wrapper<winrt::Windows::Media::MediaProperties::MediaEncodingSubtypes>;
    using MediaPropertySet = py::winrt_wrapper<winrt::Windows::Media::MediaProperties::MediaPropertySet>;
    using MediaRatio = py::winrt_wrapper<winrt::Windows::Media::MediaProperties::MediaRatio>;
    using Mpeg2ProfileIds = py::winrt_wrapper<winrt::Windows::Media::MediaProperties::Mpeg2ProfileIds>;
    using TimedMetadataEncodingProperties = py::winrt_wrapper<winrt::Windows::Media::MediaProperties::TimedMetadataEncodingProperties>;
    using VideoEncodingProperties = py::winrt_wrapper<winrt::Windows::Media::MediaProperties::VideoEncodingProperties>;
    using IMediaEncodingProperties = py::winrt_wrapper<winrt::Windows::Media::MediaProperties::IMediaEncodingProperties>;
}

namespace py
{
    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Media::MediaProperties::AudioEncodingQuality> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Media::MediaProperties::MediaMirroringOptions> = "I";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Media::MediaProperties::MediaPixelFormat> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Media::MediaProperties::MediaRotation> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Media::MediaProperties::MediaThumbnailFormat> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Media::MediaProperties::SphericalVideoFrameFormat> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Media::MediaProperties::StereoscopicVideoPackingMode> = "i";

    template<>
    inline constexpr const char* buffer_format<winrt::Windows::Media::MediaProperties::VideoEncodingQuality> = "i";


    template<>
    struct py_type<winrt::Windows::Media::MediaProperties::AudioEncodingQuality>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Media::MediaProperties::MediaMirroringOptions>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Media::MediaProperties::MediaPixelFormat>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Media::MediaProperties::MediaRotation>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Media::MediaProperties::MediaThumbnailFormat>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Media::MediaProperties::SphericalVideoFrameFormat>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Media::MediaProperties::StereoscopicVideoPackingMode>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct py_type<winrt::Windows::Media::MediaProperties::VideoEncodingQuality>
    {
        static PyObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Media::MediaProperties::AudioEncodingProperties>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Media::MediaProperties::ContainerEncodingProperties>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Media::MediaProperties::H264ProfileIds>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Media::MediaProperties::ImageEncodingProperties>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Media::MediaProperties::MediaEncodingProfile>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Media::MediaProperties::MediaEncodingSubtypes>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Media::MediaProperties::MediaPropertySet>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Media::MediaProperties::MediaRatio>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Media::MediaProperties::Mpeg2ProfileIds>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Media::MediaProperties::TimedMetadataEncodingProperties>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Media::MediaProperties::VideoEncodingProperties>
    {
        static PyTypeObject* get_python_type() noexcept;
    };

    template<>
    struct winrt_type<winrt::Windows::Media::MediaProperties::IMediaEncodingProperties>
    {
        static PyTypeObject* get_python_type() noexcept;
    };
}
