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

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.devices.enumeration
import winrt.windows.foundation
import winrt.windows.foundation.collections
import winrt.windows.graphics.directx.direct3d11
import winrt.windows.graphics.imaging
import winrt.windows.media
import winrt.windows.media.capture
import winrt.windows.media.devices
import winrt.windows.media.devices.core
import winrt.windows.media.mediaproperties
import winrt.windows.perception.spatial
import winrt.windows.storage.streams
import winrt.windows.ui.windowmanagement

from winrt.windows.media.capture.frames import MediaFrameReaderAcquisitionMode, MediaFrameReaderStartStatus, MediaFrameSourceGetPropertyStatus, MediaFrameSourceKind, MediaFrameSourceSetPropertyStatus, MultiSourceMediaFrameReaderStartStatus

Self = typing.TypeVar('Self')

@typing.final
class AudioMediaFrame(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AudioMediaFrame: ...
    def get_audio_frame(self) -> typing.Optional[winrt.windows.media.AudioFrame]: ...
    @_property
    def audio_encoding_properties(self) -> typing.Optional[winrt.windows.media.mediaproperties.AudioEncodingProperties]: ...
    @_property
    def frame_reference(self) -> typing.Optional[MediaFrameReference]: ...

@typing.final
class BufferMediaFrame(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> BufferMediaFrame: ...
    @_property
    def buffer(self) -> typing.Optional[winrt.windows.storage.streams.IBuffer]: ...
    @_property
    def frame_reference(self) -> typing.Optional[MediaFrameReference]: ...

@typing.final
class DepthMediaFrame(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DepthMediaFrame: ...
    def try_create_coordinate_mapper(self, camera_intrinsics: typing.Optional[winrt.windows.media.devices.core.CameraIntrinsics], coordinate_system: typing.Optional[winrt.windows.perception.spatial.SpatialCoordinateSystem], /) -> typing.Optional[winrt.windows.media.devices.core.DepthCorrelatedCoordinateMapper]: ...
    @_property
    def depth_format(self) -> typing.Optional[DepthMediaFrameFormat]: ...
    @_property
    def frame_reference(self) -> typing.Optional[MediaFrameReference]: ...
    @_property
    def video_media_frame(self) -> typing.Optional[VideoMediaFrame]: ...
    @_property
    def max_reliable_depth(self) -> winrt.system.UInt32: ...
    @_property
    def min_reliable_depth(self) -> winrt.system.UInt32: ...

@typing.final
class DepthMediaFrameFormat(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DepthMediaFrameFormat: ...
    @_property
    def depth_scale_in_meters(self) -> winrt.system.Double: ...
    @_property
    def video_format(self) -> typing.Optional[VideoMediaFrameFormat]: ...

@typing.final
class InfraredMediaFrame(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> InfraredMediaFrame: ...
    @_property
    def frame_reference(self) -> typing.Optional[MediaFrameReference]: ...
    @_property
    def is_illuminated(self) -> bool: ...
    @_property
    def video_media_frame(self) -> typing.Optional[VideoMediaFrame]: ...

@typing.final
class MediaFrameArrivedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> MediaFrameArrivedEventArgs: ...

@typing.final
class MediaFrameFormat(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> MediaFrameFormat: ...
    @_property
    def frame_rate(self) -> typing.Optional[winrt.windows.media.mediaproperties.MediaRatio]: ...
    @_property
    def major_type(self) -> str: ...
    @_property
    def properties(self) -> typing.Optional[winrt.windows.foundation.collections.IMapView[_uuid.UUID, winrt.system.Object]]: ...
    @_property
    def subtype(self) -> str: ...
    @_property
    def video_format(self) -> typing.Optional[VideoMediaFrameFormat]: ...
    @_property
    def audio_encoding_properties(self) -> typing.Optional[winrt.windows.media.mediaproperties.AudioEncodingProperties]: ...

@typing.final
class MediaFrameReader(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> MediaFrameReader: ...
    def close(self) -> None: ...
    def start_async(self) -> winrt.windows.foundation.IAsyncOperation[MediaFrameReaderStartStatus]: ...
    def stop_async(self) -> winrt.windows.foundation.IAsyncAction: ...
    def try_acquire_latest_frame(self) -> typing.Optional[MediaFrameReference]: ...
    def add_frame_arrived(self, handler: winrt.windows.foundation.TypedEventHandler[MediaFrameReader, MediaFrameArrivedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_frame_arrived(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def acquisition_mode(self) -> MediaFrameReaderAcquisitionMode: ...
    @acquisition_mode.setter
    def acquisition_mode(self, value: MediaFrameReaderAcquisitionMode) -> None: ...

@typing.final
class MediaFrameReference(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> MediaFrameReference: ...
    def close(self) -> None: ...
    @_property
    def buffer_media_frame(self) -> typing.Optional[BufferMediaFrame]: ...
    @_property
    def coordinate_system(self) -> typing.Optional[winrt.windows.perception.spatial.SpatialCoordinateSystem]: ...
    @_property
    def duration(self) -> datetime.timedelta: ...
    @_property
    def format(self) -> typing.Optional[MediaFrameFormat]: ...
    @_property
    def properties(self) -> typing.Optional[winrt.windows.foundation.collections.IMapView[_uuid.UUID, winrt.system.Object]]: ...
    @_property
    def source_kind(self) -> MediaFrameSourceKind: ...
    @_property
    def system_relative_time(self) -> typing.Optional[typing.Optional[datetime.timedelta]]: ...
    @_property
    def video_media_frame(self) -> typing.Optional[VideoMediaFrame]: ...
    @_property
    def audio_media_frame(self) -> typing.Optional[AudioMediaFrame]: ...

@typing.final
class MediaFrameSource(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> MediaFrameSource: ...
    def set_format_async(self, format: typing.Optional[MediaFrameFormat], /) -> winrt.windows.foundation.IAsyncAction: ...
    def try_get_camera_intrinsics(self, format: typing.Optional[MediaFrameFormat], /) -> typing.Optional[winrt.windows.media.devices.core.CameraIntrinsics]: ...
    def add_format_changed(self, handler: winrt.windows.foundation.TypedEventHandler[MediaFrameSource, winrt.system.Object], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_format_changed(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def controller(self) -> typing.Optional[MediaFrameSourceController]: ...
    @_property
    def current_format(self) -> typing.Optional[MediaFrameFormat]: ...
    @_property
    def info(self) -> typing.Optional[MediaFrameSourceInfo]: ...
    @_property
    def supported_formats(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[MediaFrameFormat]]: ...

@typing.final
class MediaFrameSourceController(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> MediaFrameSourceController: ...
    def get_property_async(self, property_id: str, /) -> winrt.windows.foundation.IAsyncOperation[MediaFrameSourceGetPropertyResult]: ...
    def get_property_by_extended_id_async(self, extended_property_id: winrt.system.Array[winrt.system.UInt8], max_property_value_size: typing.Optional[winrt.system.UInt32], /) -> winrt.windows.foundation.IAsyncOperation[MediaFrameSourceGetPropertyResult]: ...
    def set_property_async(self, property_id: str, property_value: typing.Optional[winrt.system.Object], /) -> winrt.windows.foundation.IAsyncOperation[MediaFrameSourceSetPropertyStatus]: ...
    def set_property_by_extended_id_async(self, extended_property_id: winrt.system.Array[winrt.system.UInt8], property_value: winrt.system.Array[winrt.system.UInt8], /) -> winrt.windows.foundation.IAsyncOperation[MediaFrameSourceSetPropertyStatus]: ...
    @_property
    def video_device_controller(self) -> typing.Optional[winrt.windows.media.devices.VideoDeviceController]: ...
    @_property
    def audio_device_controller(self) -> typing.Optional[winrt.windows.media.devices.AudioDeviceController]: ...

@typing.final
class MediaFrameSourceGetPropertyResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> MediaFrameSourceGetPropertyResult: ...
    @_property
    def status(self) -> MediaFrameSourceGetPropertyStatus: ...
    @_property
    def value(self) -> typing.Optional[winrt.system.Object]: ...

@typing.final
class MediaFrameSourceGroup_Static(type):
    def find_all_async(cls) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.foundation.collections.IVectorView[MediaFrameSourceGroup]]: ...
    def from_id_async(cls, id: str, /) -> winrt.windows.foundation.IAsyncOperation[MediaFrameSourceGroup]: ...
    def get_device_selector(cls) -> str: ...

@typing.final
class MediaFrameSourceGroup(winrt.system.Object, metaclass=MediaFrameSourceGroup_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> MediaFrameSourceGroup: ...
    @_property
    def display_name(self) -> str: ...
    @_property
    def id(self) -> str: ...
    @_property
    def source_infos(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[MediaFrameSourceInfo]]: ...

@typing.final
class MediaFrameSourceInfo(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> MediaFrameSourceInfo: ...
    def get_relative_panel(self, display_region: typing.Optional[winrt.windows.ui.windowmanagement.DisplayRegion], /) -> winrt.windows.devices.enumeration.Panel: ...
    @_property
    def coordinate_system(self) -> typing.Optional[winrt.windows.perception.spatial.SpatialCoordinateSystem]: ...
    @_property
    def device_information(self) -> typing.Optional[winrt.windows.devices.enumeration.DeviceInformation]: ...
    @_property
    def id(self) -> str: ...
    @_property
    def media_stream_type(self) -> winrt.windows.media.capture.MediaStreamType: ...
    @_property
    def properties(self) -> typing.Optional[winrt.windows.foundation.collections.IMapView[_uuid.UUID, winrt.system.Object]]: ...
    @_property
    def source_group(self) -> typing.Optional[MediaFrameSourceGroup]: ...
    @_property
    def source_kind(self) -> MediaFrameSourceKind: ...
    @_property
    def profile_id(self) -> str: ...
    @_property
    def video_profile_media_description(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[winrt.windows.media.capture.MediaCaptureVideoProfileMediaDescription]]: ...
    @_property
    def is_shareable(self) -> bool: ...

@typing.final
class MultiSourceMediaFrameArrivedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> MultiSourceMediaFrameArrivedEventArgs: ...

@typing.final
class MultiSourceMediaFrameReader(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> MultiSourceMediaFrameReader: ...
    def close(self) -> None: ...
    def start_async(self) -> winrt.windows.foundation.IAsyncOperation[MultiSourceMediaFrameReaderStartStatus]: ...
    def stop_async(self) -> winrt.windows.foundation.IAsyncAction: ...
    def try_acquire_latest_frame(self) -> typing.Optional[MultiSourceMediaFrameReference]: ...
    def add_frame_arrived(self, handler: winrt.windows.foundation.TypedEventHandler[MultiSourceMediaFrameReader, MultiSourceMediaFrameArrivedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_frame_arrived(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def acquisition_mode(self) -> MediaFrameReaderAcquisitionMode: ...
    @acquisition_mode.setter
    def acquisition_mode(self, value: MediaFrameReaderAcquisitionMode) -> None: ...

@typing.final
class MultiSourceMediaFrameReference(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> MultiSourceMediaFrameReference: ...
    def close(self) -> None: ...
    def try_get_frame_reference_by_source_id(self, source_id: str, /) -> typing.Optional[MediaFrameReference]: ...

@typing.final
class VideoMediaFrame(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VideoMediaFrame: ...
    def get_video_frame(self) -> typing.Optional[winrt.windows.media.VideoFrame]: ...
    @_property
    def camera_intrinsics(self) -> typing.Optional[winrt.windows.media.devices.core.CameraIntrinsics]: ...
    @_property
    def depth_media_frame(self) -> typing.Optional[DepthMediaFrame]: ...
    @_property
    def direct3_d_surface(self) -> typing.Optional[winrt.windows.graphics.directx.direct3d11.IDirect3DSurface]: ...
    @_property
    def frame_reference(self) -> typing.Optional[MediaFrameReference]: ...
    @_property
    def infrared_media_frame(self) -> typing.Optional[InfraredMediaFrame]: ...
    @_property
    def software_bitmap(self) -> typing.Optional[winrt.windows.graphics.imaging.SoftwareBitmap]: ...
    @_property
    def video_format(self) -> typing.Optional[VideoMediaFrameFormat]: ...

@typing.final
class VideoMediaFrameFormat(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VideoMediaFrameFormat: ...
    @_property
    def depth_format(self) -> typing.Optional[DepthMediaFrameFormat]: ...
    @_property
    def height(self) -> winrt.system.UInt32: ...
    @_property
    def media_frame_format(self) -> typing.Optional[MediaFrameFormat]: ...
    @_property
    def width(self) -> winrt.system.UInt32: ...

