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

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
import winrt.windows.foundation.collections
import winrt.windows.foundation.numerics
import winrt.windows.graphics.directx.direct3d11
import winrt.windows.media
import winrt.windows.media.capture
import winrt.windows.media.editing
import winrt.windows.media.mediaproperties
import winrt.windows.media.playback
import winrt.windows.media.render
import winrt.windows.media.transcoding
import winrt.windows.storage.streams
import winrt.windows.ui

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

Self = typing.TypeVar('Self')

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

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

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[winrt.windows.foundation.collections.IPropertySet]) -> AudioEffectDefinition:...
    @_property
    def activatable_class_id(self) -> str: ...
    @_property
    def properties(self) -> typing.Optional[winrt.windows.foundation.collections.IPropertySet]: ...

class AudioEffectsManager_Static(type):
    @typing.overload
    def create_audio_capture_effects_manager(cls, device_id: str, category: winrt.windows.media.capture.MediaCategory, /) -> typing.Optional[AudioCaptureEffectsManager]: ...
    @typing.overload
    def create_audio_capture_effects_manager(cls, device_id: str, category: winrt.windows.media.capture.MediaCategory, mode: winrt.windows.media.AudioProcessing, /) -> typing.Optional[AudioCaptureEffectsManager]: ...
    @typing.overload
    def create_audio_render_effects_manager(cls, device_id: str, category: winrt.windows.media.render.AudioRenderCategory, /) -> typing.Optional[AudioRenderEffectsManager]: ...
    @typing.overload
    def create_audio_render_effects_manager(cls, device_id: str, category: winrt.windows.media.render.AudioRenderCategory, mode: winrt.windows.media.AudioProcessing, /) -> typing.Optional[AudioRenderEffectsManager]: ...

class AudioEffectsManager(winrt.system.Object, metaclass=AudioEffectsManager_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioEffectsManager: ...

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

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

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

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

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[winrt.windows.foundation.collections.IPropertySet]: ...

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[winrt.windows.foundation.collections.IPropertySet]) -> VideoCompositorDefinition:...
    @_property
    def activatable_class_id(self) -> str: ...
    @_property
    def properties(self) -> typing.Optional[winrt.windows.foundation.collections.IPropertySet]: ...

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[winrt.windows.foundation.collections.IPropertySet]) -> VideoEffectDefinition:...
    @_property
    def activatable_class_id(self) -> str: ...
    @_property
    def properties(self) -> typing.Optional[winrt.windows.foundation.collections.IPropertySet]: ...

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[winrt.windows.foundation.collections.IPropertySet]: ...
    @_property
    def rotation(self) -> winrt.windows.media.mediaproperties.MediaRotation: ...
    @rotation.setter
    def rotation(self, value: winrt.windows.media.mediaproperties.MediaRotation) -> None: ...
    @_property
    def processing_algorithm(self) -> winrt.windows.media.transcoding.MediaVideoProcessingAlgorithm: ...
    @processing_algorithm.setter
    def processing_algorithm(self, value: winrt.windows.media.transcoding.MediaVideoProcessingAlgorithm) -> None: ...
    @_property
    def padding_color(self) -> winrt.windows.ui.Color: ...
    @padding_color.setter
    def padding_color(self, value: winrt.windows.ui.Color) -> None: ...
    @_property
    def output_size(self) -> winrt.windows.foundation.Size: ...
    @output_size.setter
    def output_size(self, value: winrt.windows.foundation.Size) -> None: ...
    @_property
    def mirror(self) -> winrt.windows.media.mediaproperties.MediaMirroringOptions: ...
    @mirror.setter
    def mirror(self, value: winrt.windows.media.mediaproperties.MediaMirroringOptions) -> None: ...
    @_property
    def crop_rectangle(self) -> winrt.windows.foundation.Rect: ...
    @crop_rectangle.setter
    def crop_rectangle(self, value: winrt.windows.foundation.Rect) -> None: ...
    @_property
    def spherical_projection(self) -> typing.Optional[VideoTransformSphericalProjection]: ...

class VideoTransformSphericalProjection(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VideoTransformSphericalProjection: ...
    @_property
    def view_orientation(self) -> winrt.windows.foundation.numerics.Quaternion: ...
    @view_orientation.setter
    def view_orientation(self, value: winrt.windows.foundation.numerics.Quaternion) -> None: ...
    @_property
    def projection_mode(self) -> winrt.windows.media.playback.SphericalVideoProjectionMode: ...
    @projection_mode.setter
    def projection_mode(self, value: winrt.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) -> winrt.windows.media.mediaproperties.SphericalVideoFrameFormat: ...
    @frame_format.setter
    def frame_format(self, value: winrt.windows.media.mediaproperties.SphericalVideoFrameFormat) -> None: ...

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[winrt.windows.foundation.collections.IPropertySet]: ...

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[winrt.windows.media.mediaproperties.AudioEncodingProperties], /) -> None: ...
    def set_properties(self, configuration: typing.Optional[winrt.windows.foundation.collections.IPropertySet], /) -> None: ...
    @_property
    def supported_encoding_properties(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[winrt.windows.media.mediaproperties.AudioEncodingProperties]]: ...
    @_property
    def use_input_frame_for_output(self) -> bool: ...

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[winrt.windows.media.mediaproperties.VideoEncodingProperties], device: typing.Optional[winrt.windows.graphics.directx.direct3d11.IDirect3DDevice], /) -> None: ...
    def set_properties(self, configuration: typing.Optional[winrt.windows.foundation.collections.IPropertySet], /) -> None: ...
    @_property
    def is_read_only(self) -> bool: ...
    @_property
    def supported_encoding_properties(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[winrt.windows.media.mediaproperties.VideoEncodingProperties]]: ...
    @_property
    def supported_memory_types(self) -> MediaMemoryTypes: ...
    @_property
    def time_independent(self) -> bool: ...

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[winrt.windows.media.mediaproperties.VideoEncodingProperties], device: typing.Optional[winrt.windows.graphics.directx.direct3d11.IDirect3DDevice], /) -> None: ...
    def set_properties(self, configuration: typing.Optional[winrt.windows.foundation.collections.IPropertySet], /) -> None: ...
    @_property
    def time_independent(self) -> bool: ...

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[winrt.windows.foundation.collections.IPropertySet]: ...

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[winrt.windows.foundation.collections.IPropertySet]: ...

