# 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.media.core
except Exception:
    pass

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

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

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

class MediaVideoProcessingAlgorithm(enum.IntEnum):
    DEFAULT = 0
    MRF_CRF444 = 1

class TranscodeFailureReason(enum.IntEnum):
    NONE = 0
    UNKNOWN = 1
    INVALID_PROFILE = 2
    CODEC_NOT_FOUND = 3

class MediaTranscoder(_winrt.Object):
    trim_stop_time: winsdk.windows.foundation.TimeSpan
    trim_start_time: winsdk.windows.foundation.TimeSpan
    hardware_acceleration_enabled: _winrt.Boolean
    always_reencode: _winrt.Boolean
    video_processing_algorithm: MediaVideoProcessingAlgorithm
    @staticmethod
    def _from(obj: _winrt.Object) -> MediaTranscoder: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def add_audio_effect(self, activatable_class_id: str) -> None: ...
    @typing.overload
    def add_audio_effect(self, activatable_class_id: str, effect_required: _winrt.Boolean, configuration: winsdk.windows.foundation.collections.IPropertySet) -> None: ...
    @typing.overload
    def add_video_effect(self, activatable_class_id: str) -> None: ...
    @typing.overload
    def add_video_effect(self, activatable_class_id: str, effect_required: _winrt.Boolean, configuration: winsdk.windows.foundation.collections.IPropertySet) -> None: ...
    @typing.overload
    def clear_effects(self) -> None: ...
    @typing.overload
    def prepare_file_transcode_async(self, source: winsdk.windows.storage.IStorageFile, destination: winsdk.windows.storage.IStorageFile, profile: winsdk.windows.media.mediaproperties.MediaEncodingProfile) -> winsdk.windows.foundation.IAsyncOperation[PrepareTranscodeResult]: ...
    @typing.overload
    def prepare_media_stream_source_transcode_async(self, source: winsdk.windows.media.core.IMediaSource, destination: winsdk.windows.storage.streams.IRandomAccessStream, profile: winsdk.windows.media.mediaproperties.MediaEncodingProfile) -> winsdk.windows.foundation.IAsyncOperation[PrepareTranscodeResult]: ...
    @typing.overload
    def prepare_stream_transcode_async(self, source: winsdk.windows.storage.streams.IRandomAccessStream, destination: winsdk.windows.storage.streams.IRandomAccessStream, profile: winsdk.windows.media.mediaproperties.MediaEncodingProfile) -> winsdk.windows.foundation.IAsyncOperation[PrepareTranscodeResult]: ...

class PrepareTranscodeResult(_winrt.Object):
    can_transcode: _winrt.Boolean
    failure_reason: TranscodeFailureReason
    @staticmethod
    def _from(obj: _winrt.Object) -> PrepareTranscodeResult: ...
    @typing.overload
    def transcode_async(self) -> winsdk.windows.foundation.IAsyncActionWithProgress[_winrt.Double]: ...

