# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.2.0

import datetime
import sys
import types
import typing
import uuid as _uuid
from builtins import property as _property

import winrt._winrt
import winrt.system
import winrt.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.foundation.numerics as windows_foundation_numerics
import winrt.windows.graphics.directx.direct3d11 as windows_graphics_directx_direct3d11
import winrt.windows.media as windows_media
import winrt.windows.media.capture as windows_media_capture
import winrt.windows.media.editing as windows_media_editing
import winrt.windows.media.mediaproperties as windows_media_mediaproperties
import winrt.windows.media.playback as windows_media_playback
import winrt.windows.media.render as windows_media_render
import winrt.windows.media.transcoding as windows_media_transcoding
import winrt.windows.storage.streams as windows_storage_streams
import winrt.windows.ui as windows_ui

from winrt.windows.media.effects import AudioEffectType, MediaEffectClosedReason, MediaMemoryTypes

Self = typing.TypeVar('Self')

@typing.final
class AudioCaptureEffectsManager(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioCaptureEffectsManager: ...
    def get_audio_capture_effects(self) -> typing.Optional[windows_foundation_collections.IVectorView[AudioEffect]]: ...
    def add_audio_capture_effects_changed(self, handler: windows_foundation.TypedEventHandler[AudioCaptureEffectsManager, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_audio_capture_effects_changed(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...

@typing.final
class AudioEffect(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioEffect: ...
    @_property
    def audio_effect_type(self) -> AudioEffectType: ...

@typing.final
class AudioEffectDefinition(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioEffectDefinition: ...
    @typing.overload
    def __new__(cls: typing.Type[AudioEffectDefinition], activatable_class_id: str) -> AudioEffectDefinition: ...
    @typing.overload
    def __new__(cls: typing.Type[AudioEffectDefinition], activatable_class_id: str, props: typing.Optional[windows_foundation_collections.IPropertySet]) -> AudioEffectDefinition: ...
    @_property
    def activatable_class_id(self) -> str: ...
    @_property
    def properties(self) -> typing.Optional[windows_foundation_collections.IPropertySet]: ...

@typing.final
class AudioEffectsManager_Static(type):
    @typing.overload
    def create_audio_capture_effects_manager(cls, device_id: str, category: windows_media_capture.MediaCategory, /) -> typing.Optional[AudioCaptureEffectsManager]: ...
    @typing.overload
    def create_audio_capture_effects_manager(cls, device_id: str, category: windows_media_capture.MediaCategory, mode: windows_media.AudioProcessing, /) -> typing.Optional[AudioCaptureEffectsManager]: ...
    @typing.overload
    def create_audio_render_effects_manager(cls, device_id: str, category: windows_media_render.AudioRenderCategory, /) -> typing.Optional[AudioRenderEffectsManager]: ...
    @typing.overload
    def create_audio_render_effects_manager(cls, device_id: str, category: windows_media_render.AudioRenderCategory, mode: windows_media.AudioProcessing, /) -> typing.Optional[AudioRenderEffectsManager]: ...

@typing.final
class AudioEffectsManager(winrt.system.Object, metaclass=AudioEffectsManager_Static):
    pass

@typing.final
class AudioRenderEffectsManager(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioRenderEffectsManager: ...
    def get_audio_render_effects(self) -> typing.Optional[windows_foundation_collections.IVectorView[AudioEffect]]: ...
    def show_settings_u_i(self) -> None: ...
    def add_audio_render_effects_changed(self, handler: windows_foundation.TypedEventHandler[AudioRenderEffectsManager, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_audio_render_effects_changed(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def effects_provider_settings_label(self) -> str: ...
    @_property
    def effects_provider_thumbnail(self) -> typing.Optional[windows_storage_streams.IRandomAccessStreamWithContentType]: ...

@typing.final
class CompositeVideoFrameContext(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> CompositeVideoFrameContext: ...
    def get_overlay_for_surface(self, surface_to_overlay: typing.Optional[windows_graphics_directx_direct3d11.IDirect3DSurface], /) -> typing.Optional[windows_media_editing.MediaOverlay]: ...
    @_property
    def background_frame(self) -> typing.Optional[windows_media.VideoFrame]: ...
    @_property
    def output_frame(self) -> typing.Optional[windows_media.VideoFrame]: ...
    @_property
    def surfaces_to_overlay(self) -> typing.Optional[windows_foundation_collections.IVectorView[windows_graphics_directx_direct3d11.IDirect3DSurface]]: ...

@typing.final
class ProcessAudioFrameContext(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ProcessAudioFrameContext: ...
    @_property
    def input_frame(self) -> typing.Optional[windows_media.AudioFrame]: ...
    @_property
    def output_frame(self) -> typing.Optional[windows_media.AudioFrame]: ...

@typing.final
class ProcessVideoFrameContext(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ProcessVideoFrameContext: ...
    @_property
    def input_frame(self) -> typing.Optional[windows_media.VideoFrame]: ...
    @_property
    def output_frame(self) -> typing.Optional[windows_media.VideoFrame]: ...

@typing.final
class SlowMotionEffectDefinition(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> SlowMotionEffectDefinition: ...
    def __new__(cls: typing.Type[SlowMotionEffectDefinition]) -> SlowMotionEffectDefinition: ...
    @_property
    def time_stretch_rate(self) -> winrt.system.Double: ...
    @time_stretch_rate.setter
    def time_stretch_rate(self, value: winrt.system.Double) -> None: ...
    @_property
    def activatable_class_id(self) -> str: ...
    @_property
    def properties(self) -> typing.Optional[windows_foundation_collections.IPropertySet]: ...

@typing.final
class VideoCompositorDefinition(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VideoCompositorDefinition: ...
    @typing.overload
    def __new__(cls: typing.Type[VideoCompositorDefinition], activatable_class_id: str) -> VideoCompositorDefinition: ...
    @typing.overload
    def __new__(cls: typing.Type[VideoCompositorDefinition], activatable_class_id: str, props: typing.Optional[windows_foundation_collections.IPropertySet]) -> VideoCompositorDefinition: ...
    @_property
    def activatable_class_id(self) -> str: ...
    @_property
    def properties(self) -> typing.Optional[windows_foundation_collections.IPropertySet]: ...

@typing.final
class VideoEffectDefinition(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VideoEffectDefinition: ...
    @typing.overload
    def __new__(cls: typing.Type[VideoEffectDefinition], activatable_class_id: str) -> VideoEffectDefinition: ...
    @typing.overload
    def __new__(cls: typing.Type[VideoEffectDefinition], activatable_class_id: str, props: typing.Optional[windows_foundation_collections.IPropertySet]) -> VideoEffectDefinition: ...
    @_property
    def activatable_class_id(self) -> str: ...
    @_property
    def properties(self) -> typing.Optional[windows_foundation_collections.IPropertySet]: ...

@typing.final
class VideoTransformEffectDefinition(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VideoTransformEffectDefinition: ...
    def __new__(cls: typing.Type[VideoTransformEffectDefinition]) -> VideoTransformEffectDefinition: ...
    @_property
    def activatable_class_id(self) -> str: ...
    @_property
    def properties(self) -> typing.Optional[windows_foundation_collections.IPropertySet]: ...
    @_property
    def rotation(self) -> windows_media_mediaproperties.MediaRotation: ...
    @rotation.setter
    def rotation(self, value: windows_media_mediaproperties.MediaRotation) -> None: ...
    @_property
    def processing_algorithm(self) -> windows_media_transcoding.MediaVideoProcessingAlgorithm: ...
    @processing_algorithm.setter
    def processing_algorithm(self, value: windows_media_transcoding.MediaVideoProcessingAlgorithm) -> None: ...
    @_property
    def padding_color(self) -> windows_ui.Color: ...
    @padding_color.setter
    def padding_color(self, value: windows_ui.Color) -> None: ...
    @_property
    def output_size(self) -> windows_foundation.Size: ...
    @output_size.setter
    def output_size(self, value: windows_foundation.Size) -> None: ...
    @_property
    def mirror(self) -> windows_media_mediaproperties.MediaMirroringOptions: ...
    @mirror.setter
    def mirror(self, value: windows_media_mediaproperties.MediaMirroringOptions) -> None: ...
    @_property
    def crop_rectangle(self) -> windows_foundation.Rect: ...
    @crop_rectangle.setter
    def crop_rectangle(self, value: windows_foundation.Rect) -> None: ...
    @_property
    def spherical_projection(self) -> typing.Optional[VideoTransformSphericalProjection]: ...

@typing.final
class VideoTransformSphericalProjection(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VideoTransformSphericalProjection: ...
    @_property
    def view_orientation(self) -> windows_foundation_numerics.Quaternion: ...
    @view_orientation.setter
    def view_orientation(self, value: windows_foundation_numerics.Quaternion) -> None: ...
    @_property
    def projection_mode(self) -> windows_media_playback.SphericalVideoProjectionMode: ...
    @projection_mode.setter
    def projection_mode(self, value: windows_media_playback.SphericalVideoProjectionMode) -> None: ...
    @_property
    def is_enabled(self) -> bool: ...
    @is_enabled.setter
    def is_enabled(self, value: bool) -> None: ...
    @_property
    def horizontal_field_of_view_in_degrees(self) -> winrt.system.Double: ...
    @horizontal_field_of_view_in_degrees.setter
    def horizontal_field_of_view_in_degrees(self, value: winrt.system.Double) -> None: ...
    @_property
    def frame_format(self) -> windows_media_mediaproperties.SphericalVideoFrameFormat: ...
    @frame_format.setter
    def frame_format(self, value: windows_media_mediaproperties.SphericalVideoFrameFormat) -> None: ...

@typing.final
class IAudioEffectDefinition(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IAudioEffectDefinition: ...
    @_property
    def activatable_class_id(self) -> str: ...
    @_property
    def properties(self) -> typing.Optional[windows_foundation_collections.IPropertySet]: ...

@typing.final
class IBasicAudioEffect(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IBasicAudioEffect: ...
    def close(self, reason: MediaEffectClosedReason, /) -> None: ...
    def discard_queued_frames(self) -> None: ...
    def process_frame(self, context: typing.Optional[ProcessAudioFrameContext], /) -> None: ...
    def set_encoding_properties(self, encoding_properties: typing.Optional[windows_media_mediaproperties.AudioEncodingProperties], /) -> None: ...
    def set_properties(self, configuration: typing.Optional[windows_foundation_collections.IPropertySet], /) -> None: ...
    @_property
    def supported_encoding_properties(self) -> typing.Optional[windows_foundation_collections.IVectorView[windows_media_mediaproperties.AudioEncodingProperties]]: ...
    @_property
    def use_input_frame_for_output(self) -> bool: ...

@typing.final
class IBasicVideoEffect(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IBasicVideoEffect: ...
    def close(self, reason: MediaEffectClosedReason, /) -> None: ...
    def discard_queued_frames(self) -> None: ...
    def process_frame(self, context: typing.Optional[ProcessVideoFrameContext], /) -> None: ...
    def set_encoding_properties(self, encoding_properties: typing.Optional[windows_media_mediaproperties.VideoEncodingProperties], device: typing.Optional[windows_graphics_directx_direct3d11.IDirect3DDevice], /) -> None: ...
    def set_properties(self, configuration: typing.Optional[windows_foundation_collections.IPropertySet], /) -> None: ...
    @_property
    def is_read_only(self) -> bool: ...
    @_property
    def supported_encoding_properties(self) -> typing.Optional[windows_foundation_collections.IVectorView[windows_media_mediaproperties.VideoEncodingProperties]]: ...
    @_property
    def supported_memory_types(self) -> MediaMemoryTypes: ...
    @_property
    def time_independent(self) -> bool: ...

@typing.final
class IVideoCompositor(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IVideoCompositor: ...
    def close(self, reason: MediaEffectClosedReason, /) -> None: ...
    def composite_frame(self, context: typing.Optional[CompositeVideoFrameContext], /) -> None: ...
    def discard_queued_frames(self) -> None: ...
    def set_encoding_properties(self, background_properties: typing.Optional[windows_media_mediaproperties.VideoEncodingProperties], device: typing.Optional[windows_graphics_directx_direct3d11.IDirect3DDevice], /) -> None: ...
    def set_properties(self, configuration: typing.Optional[windows_foundation_collections.IPropertySet], /) -> None: ...
    @_property
    def time_independent(self) -> bool: ...

@typing.final
class IVideoCompositorDefinition(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IVideoCompositorDefinition: ...
    @_property
    def activatable_class_id(self) -> str: ...
    @_property
    def properties(self) -> typing.Optional[windows_foundation_collections.IPropertySet]: ...

@typing.final
class IVideoEffectDefinition(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IVideoEffectDefinition: ...
    @_property
    def activatable_class_id(self) -> str: ...
    @_property
    def properties(self) -> typing.Optional[windows_foundation_collections.IPropertySet]: ...

