// WARNING: Please don't edit this file. It was generated by Python/WinRT v3.2.1

#pragma once

#include "pybase.h"
static_assert(winrt::check_version(PYWINRT_VERSION, "3.2.1"), "Mismatched Py/WinRT headers.");
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Foundation.Collections.h>
#include <winrt/Windows.Foundation.Numerics.h>
#include <winrt/Windows.Graphics.DirectX.Direct3D11.h>
#include <winrt/Windows.Media.h>
#include <winrt/Windows.Media.Capture.h>
#include <winrt/Windows.Media.Editing.h>
#include <winrt/Windows.Media.MediaProperties.h>
#include <winrt/Windows.Media.Playback.h>
#include <winrt/Windows.Media.Render.h>
#include <winrt/Windows.Media.Transcoding.h>
#include <winrt/Windows.Storage.Streams.h>
#include <winrt/Windows.UI.h>

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

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

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

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

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

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


    template<>
    struct py_type<winrt::Windows::Media::Effects::AudioEffectState>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects.AudioEffectState";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "AudioEffectState";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::AudioEffectType>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects.AudioEffectType";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "AudioEffectType";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::MediaEffectClosedReason>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects.MediaEffectClosedReason";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "MediaEffectClosedReason";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::MediaMemoryTypes>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects.MediaMemoryTypes";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "MediaMemoryTypes";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::AcousticEchoCancellationConfiguration>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects.AcousticEchoCancellationConfiguration";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "AcousticEchoCancellationConfiguration";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::AudioCaptureEffectsManager>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects.AudioCaptureEffectsManager";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "AudioCaptureEffectsManager";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::AudioEffect>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects.AudioEffect";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "AudioEffect";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::AudioEffectDefinition>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects.AudioEffectDefinition";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "AudioEffectDefinition";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::AudioEffectsManager>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects.AudioEffectsManager";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "AudioEffectsManager";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::AudioRenderEffectsManager>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects.AudioRenderEffectsManager";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "AudioRenderEffectsManager";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::CompositeVideoFrameContext>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects.CompositeVideoFrameContext";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "CompositeVideoFrameContext";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::ProcessAudioFrameContext>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects.ProcessAudioFrameContext";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "ProcessAudioFrameContext";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::ProcessVideoFrameContext>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects.ProcessVideoFrameContext";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "ProcessVideoFrameContext";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::VideoCompositorDefinition>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects.VideoCompositorDefinition";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "VideoCompositorDefinition";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::VideoEffectDefinition>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects.VideoEffectDefinition";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "VideoEffectDefinition";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::VideoTransformEffectDefinition>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects.VideoTransformEffectDefinition";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "VideoTransformEffectDefinition";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::VideoTransformSphericalProjection>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects.VideoTransformSphericalProjection";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "VideoTransformSphericalProjection";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::IAudioEffectDefinition>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects._IAudioEffectDefinition";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "_IAudioEffectDefinition";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::IBasicAudioEffect>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects._IBasicAudioEffect";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "_IBasicAudioEffect";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::IBasicVideoEffect>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects._IBasicVideoEffect";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "_IBasicVideoEffect";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::IVideoCompositor>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects._IVideoCompositor";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "_IVideoCompositor";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::IVideoCompositorDefinition>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects._IVideoCompositorDefinition";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "_IVideoCompositorDefinition";
    };

    template<>
    struct py_type<winrt::Windows::Media::Effects::IVideoEffectDefinition>
    {
        static constexpr std::string_view qualified_name = "winrt.windows.media.effects._IVideoEffectDefinition";
        static constexpr const char* module_name = "winrt.windows.media.effects";
        static constexpr const char* type_name = "_IVideoEffectDefinition";
    };
}

#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.Foundation.Numerics.h")
#include "py.Windows.Foundation.Numerics.h"
#endif

#if __has_include("py.Windows.Graphics.DirectX.Direct3D11.h")
#include "py.Windows.Graphics.DirectX.Direct3D11.h"
#endif

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

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

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

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

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

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

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

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

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

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

namespace py::wrapper::Windows::Media::Effects
{
    using AcousticEchoCancellationConfiguration = py::winrt_wrapper<winrt::Windows::Media::Effects::AcousticEchoCancellationConfiguration>;
    using AudioCaptureEffectsManager = py::winrt_wrapper<winrt::Windows::Media::Effects::AudioCaptureEffectsManager>;
    using AudioEffect = py::winrt_wrapper<winrt::Windows::Media::Effects::AudioEffect>;
    using AudioEffectDefinition = py::winrt_wrapper<winrt::Windows::Media::Effects::AudioEffectDefinition>;
    using AudioEffectsManager = py::winrt_wrapper<winrt::Windows::Media::Effects::AudioEffectsManager>;
    using AudioRenderEffectsManager = py::winrt_wrapper<winrt::Windows::Media::Effects::AudioRenderEffectsManager>;
    using CompositeVideoFrameContext = py::winrt_wrapper<winrt::Windows::Media::Effects::CompositeVideoFrameContext>;
    using ProcessAudioFrameContext = py::winrt_wrapper<winrt::Windows::Media::Effects::ProcessAudioFrameContext>;
    using ProcessVideoFrameContext = py::winrt_wrapper<winrt::Windows::Media::Effects::ProcessVideoFrameContext>;
    using VideoCompositorDefinition = py::winrt_wrapper<winrt::Windows::Media::Effects::VideoCompositorDefinition>;
    using VideoEffectDefinition = py::winrt_wrapper<winrt::Windows::Media::Effects::VideoEffectDefinition>;
    using VideoTransformEffectDefinition = py::winrt_wrapper<winrt::Windows::Media::Effects::VideoTransformEffectDefinition>;
    using VideoTransformSphericalProjection = py::winrt_wrapper<winrt::Windows::Media::Effects::VideoTransformSphericalProjection>;
    using IAudioEffectDefinition = py::winrt_wrapper<winrt::Windows::Media::Effects::IAudioEffectDefinition>;
    using IBasicAudioEffect = py::winrt_wrapper<winrt::Windows::Media::Effects::IBasicAudioEffect>;
    using IBasicVideoEffect = py::winrt_wrapper<winrt::Windows::Media::Effects::IBasicVideoEffect>;
    using IVideoCompositor = py::winrt_wrapper<winrt::Windows::Media::Effects::IVideoCompositor>;
    using IVideoCompositorDefinition = py::winrt_wrapper<winrt::Windows::Media::Effects::IVideoCompositorDefinition>;
    using IVideoEffectDefinition = py::winrt_wrapper<winrt::Windows::Media::Effects::IVideoEffectDefinition>;
}

namespace py
{
}
