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

import enum
import sys
import types
import typing
import uuid

import winsdk._winrt as _winrt

try:
    import winsdk.windows.foundation
except Exception:
    pass

try:
    import winsdk.windows.foundation.collections
except Exception:
    pass

try:
    import winsdk.windows.foundation.numerics
except Exception:
    pass

try:
    import winsdk.windows.graphics.directx.direct3d11
except Exception:
    pass

try:
    import winsdk.windows.media
except Exception:
    pass

try:
    import winsdk.windows.media.capture
except Exception:
    pass

try:
    import winsdk.windows.media.editing
except Exception:
    pass

try:
    import winsdk.windows.media.mediaproperties
except Exception:
    pass

try:
    import winsdk.windows.media.playback
except Exception:
    pass

try:
    import winsdk.windows.media.render
except Exception:
    pass

try:
    import winsdk.windows.media.transcoding
except Exception:
    pass

try:
    import winsdk.windows.storage.streams
except Exception:
    pass

try:
    import winsdk.windows.ui
except Exception:
    pass

class AudioEffectType(enum.IntEnum):
    OTHER = 0
    ACOUSTIC_ECHO_CANCELLATION = 1
    NOISE_SUPPRESSION = 2
    AUTOMATIC_GAIN_CONTROL = 3
    BEAM_FORMING = 4
    CONSTANT_TONE_REMOVAL = 5
    EQUALIZER = 6
    LOUDNESS_EQUALIZER = 7
    BASS_BOOST = 8
    VIRTUAL_SURROUND = 9
    VIRTUAL_HEADPHONES = 10
    SPEAKER_FILL = 11
    ROOM_CORRECTION = 12
    BASS_MANAGEMENT = 13
    ENVIRONMENTAL_EFFECTS = 14
    SPEAKER_PROTECTION = 15
    SPEAKER_COMPENSATION = 16
    DYNAMIC_RANGE_COMPRESSION = 17
    FAR_FIELD_BEAM_FORMING = 18
    DEEP_NOISE_SUPPRESSION = 19

class MediaEffectClosedReason(enum.IntEnum):
    DONE = 0
    UNKNOWN_ERROR = 1
    UNSUPPORTED_ENCODING_FORMAT = 2
    EFFECT_CURRENTLY_UNLOADED = 3

class MediaMemoryTypes(enum.IntEnum):
    GPU = 0
    CPU = 1
    GPU_AND_CPU = 2

class AudioCaptureEffectsManager(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> AudioCaptureEffectsManager: ...
    @typing.overload
    def get_audio_capture_effects(self) -> winsdk.windows.foundation.collections.IVectorView[AudioEffect]: ...
    @typing.overload
    def add_audio_capture_effects_changed(self, handler: winsdk.windows.foundation.TypedEventHandler[AudioCaptureEffectsManager, _winrt.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_audio_capture_effects_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class AudioEffect(_winrt.Object):
    audio_effect_type: AudioEffectType
    @staticmethod
    def _from(obj: _winrt.Object) -> AudioEffect: ...

class AudioEffectDefinition(IAudioEffectDefinition, _winrt.Object):
    activatable_class_id: str
    properties: winsdk.windows.foundation.collections.IPropertySet
    @staticmethod
    def _from(obj: _winrt.Object) -> AudioEffectDefinition: ...
    @typing.overload
    def __init__(self, activatable_class_id: str) -> None: ...
    @typing.overload
    def __init__(self, activatable_class_id: str, props: winsdk.windows.foundation.collections.IPropertySet) -> None: ...

class AudioEffectsManager(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> AudioEffectsManager: ...
    @typing.overload
    @staticmethod
    def create_audio_capture_effects_manager(device_id: str, category: winsdk.windows.media.capture.MediaCategory) -> AudioCaptureEffectsManager: ...
    @typing.overload
    @staticmethod
    def create_audio_capture_effects_manager(device_id: str, category: winsdk.windows.media.capture.MediaCategory, mode: winsdk.windows.media.AudioProcessing) -> AudioCaptureEffectsManager: ...
    @typing.overload
    @staticmethod
    def create_audio_render_effects_manager(device_id: str, category: winsdk.windows.media.render.AudioRenderCategory) -> AudioRenderEffectsManager: ...
    @typing.overload
    @staticmethod
    def create_audio_render_effects_manager(device_id: str, category: winsdk.windows.media.render.AudioRenderCategory, mode: winsdk.windows.media.AudioProcessing) -> AudioRenderEffectsManager: ...

class AudioRenderEffectsManager(_winrt.Object):
    effects_provider_settings_label: str
    effects_provider_thumbnail: winsdk.windows.storage.streams.IRandomAccessStreamWithContentType
    @staticmethod
    def _from(obj: _winrt.Object) -> AudioRenderEffectsManager: ...
    @typing.overload
    def get_audio_render_effects(self) -> winsdk.windows.foundation.collections.IVectorView[AudioEffect]: ...
    @typing.overload
    def show_settings_u_i(self) -> None: ...
    @typing.overload
    def add_audio_render_effects_changed(self, handler: winsdk.windows.foundation.TypedEventHandler[AudioRenderEffectsManager, _winrt.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_audio_render_effects_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class CompositeVideoFrameContext(_winrt.Object):
    background_frame: winsdk.windows.media.VideoFrame
    output_frame: winsdk.windows.media.VideoFrame
    surfaces_to_overlay: winsdk.windows.foundation.collections.IVectorView[winsdk.windows.graphics.directx.direct3d11.IDirect3DSurface]
    @staticmethod
    def _from(obj: _winrt.Object) -> CompositeVideoFrameContext: ...
    @typing.overload
    def get_overlay_for_surface(self, surface_to_overlay: winsdk.windows.graphics.directx.direct3d11.IDirect3DSurface) -> winsdk.windows.media.editing.MediaOverlay: ...

class ProcessAudioFrameContext(_winrt.Object):
    input_frame: winsdk.windows.media.AudioFrame
    output_frame: winsdk.windows.media.AudioFrame
    @staticmethod
    def _from(obj: _winrt.Object) -> ProcessAudioFrameContext: ...

class ProcessVideoFrameContext(_winrt.Object):
    input_frame: winsdk.windows.media.VideoFrame
    output_frame: winsdk.windows.media.VideoFrame
    @staticmethod
    def _from(obj: _winrt.Object) -> ProcessVideoFrameContext: ...

class VideoCompositorDefinition(IVideoCompositorDefinition, _winrt.Object):
    activatable_class_id: str
    properties: winsdk.windows.foundation.collections.IPropertySet
    @staticmethod
    def _from(obj: _winrt.Object) -> VideoCompositorDefinition: ...
    @typing.overload
    def __init__(self, activatable_class_id: str) -> None: ...
    @typing.overload
    def __init__(self, activatable_class_id: str, props: winsdk.windows.foundation.collections.IPropertySet) -> None: ...

class VideoEffectDefinition(IVideoEffectDefinition, _winrt.Object):
    activatable_class_id: str
    properties: winsdk.windows.foundation.collections.IPropertySet
    @staticmethod
    def _from(obj: _winrt.Object) -> VideoEffectDefinition: ...
    @typing.overload
    def __init__(self, activatable_class_id: str) -> None: ...
    @typing.overload
    def __init__(self, activatable_class_id: str, props: winsdk.windows.foundation.collections.IPropertySet) -> None: ...

class VideoTransformEffectDefinition(IVideoEffectDefinition, _winrt.Object):
    activatable_class_id: str
    properties: winsdk.windows.foundation.collections.IPropertySet
    rotation: winsdk.windows.media.mediaproperties.MediaRotation
    processing_algorithm: winsdk.windows.media.transcoding.MediaVideoProcessingAlgorithm
    padding_color: winsdk.windows.ui.Color
    output_size: winsdk.windows.foundation.Size
    mirror: winsdk.windows.media.mediaproperties.MediaMirroringOptions
    crop_rectangle: winsdk.windows.foundation.Rect
    spherical_projection: VideoTransformSphericalProjection
    @staticmethod
    def _from(obj: _winrt.Object) -> VideoTransformEffectDefinition: ...
    @typing.overload
    def __init__(self) -> None: ...

class VideoTransformSphericalProjection(_winrt.Object):
    view_orientation: winsdk.windows.foundation.numerics.Quaternion
    projection_mode: winsdk.windows.media.playback.SphericalVideoProjectionMode
    is_enabled: _winrt.Boolean
    horizontal_field_of_view_in_degrees: _winrt.Double
    frame_format: winsdk.windows.media.mediaproperties.SphericalVideoFrameFormat
    @staticmethod
    def _from(obj: _winrt.Object) -> VideoTransformSphericalProjection: ...

class IAudioEffectDefinition(_winrt.Object):
    activatable_class_id: str
    properties: winsdk.windows.foundation.collections.IPropertySet
    @staticmethod
    def _from(obj: _winrt.Object) -> IAudioEffectDefinition: ...

class IBasicAudioEffect(winsdk.windows.media.IMediaExtension, _winrt.Object):
    supported_encoding_properties: winsdk.windows.foundation.collections.IVectorView[winsdk.windows.media.mediaproperties.AudioEncodingProperties]
    use_input_frame_for_output: _winrt.Boolean
    @staticmethod
    def _from(obj: _winrt.Object) -> IBasicAudioEffect: ...
    @typing.overload
    def close(self, reason: MediaEffectClosedReason) -> None: ...
    @typing.overload
    def discard_queued_frames(self) -> None: ...
    @typing.overload
    def process_frame(self, context: ProcessAudioFrameContext) -> None: ...
    @typing.overload
    def set_encoding_properties(self, encoding_properties: winsdk.windows.media.mediaproperties.AudioEncodingProperties) -> None: ...
    @typing.overload
    def set_properties(self, configuration: winsdk.windows.foundation.collections.IPropertySet) -> None: ...

class IBasicVideoEffect(winsdk.windows.media.IMediaExtension, _winrt.Object):
    is_read_only: _winrt.Boolean
    supported_encoding_properties: winsdk.windows.foundation.collections.IVectorView[winsdk.windows.media.mediaproperties.VideoEncodingProperties]
    supported_memory_types: MediaMemoryTypes
    time_independent: _winrt.Boolean
    @staticmethod
    def _from(obj: _winrt.Object) -> IBasicVideoEffect: ...
    @typing.overload
    def close(self, reason: MediaEffectClosedReason) -> None: ...
    @typing.overload
    def discard_queued_frames(self) -> None: ...
    @typing.overload
    def process_frame(self, context: ProcessVideoFrameContext) -> None: ...
    @typing.overload
    def set_encoding_properties(self, encoding_properties: winsdk.windows.media.mediaproperties.VideoEncodingProperties, device: winsdk.windows.graphics.directx.direct3d11.IDirect3DDevice) -> None: ...
    @typing.overload
    def set_properties(self, configuration: winsdk.windows.foundation.collections.IPropertySet) -> None: ...

class IVideoCompositor(winsdk.windows.media.IMediaExtension, _winrt.Object):
    time_independent: _winrt.Boolean
    @staticmethod
    def _from(obj: _winrt.Object) -> IVideoCompositor: ...
    @typing.overload
    def close(self, reason: MediaEffectClosedReason) -> None: ...
    @typing.overload
    def composite_frame(self, context: CompositeVideoFrameContext) -> None: ...
    @typing.overload
    def discard_queued_frames(self) -> None: ...
    @typing.overload
    def set_encoding_properties(self, background_properties: winsdk.windows.media.mediaproperties.VideoEncodingProperties, device: winsdk.windows.graphics.directx.direct3d11.IDirect3DDevice) -> None: ...
    @typing.overload
    def set_properties(self, configuration: winsdk.windows.foundation.collections.IPropertySet) -> None: ...

class IVideoCompositorDefinition(_winrt.Object):
    activatable_class_id: str
    properties: winsdk.windows.foundation.collections.IPropertySet
    @staticmethod
    def _from(obj: _winrt.Object) -> IVideoCompositorDefinition: ...

class IVideoEffectDefinition(_winrt.Object):
    activatable_class_id: str
    properties: winsdk.windows.foundation.collections.IPropertySet
    @staticmethod
    def _from(obj: _winrt.Object) -> IVideoEffectDefinition: ...

