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

import enum
import datetime
import sys
import types
import typing

import winsdk.system
import winsdk.windows.devices.enumeration
import winsdk.windows.foundation
import winsdk.windows.foundation.collections
import winsdk.windows.foundation.numerics
import winsdk.windows.graphics.directx.direct3d11
import winsdk.windows.media
import winsdk.windows.media.audio
import winsdk.windows.media.casting
import winsdk.windows.media.core
import winsdk.windows.media.mediaproperties
import winsdk.windows.media.protection
import winsdk.windows.storage
import winsdk.windows.storage.streams
import winsdk.windows.ui.composition

class AutoLoadedDisplayPropertyKind(enum.IntEnum):
    NONE = 0
    MUSIC_OR_VIDEO = 1
    MUSIC = 2
    VIDEO = 3

class FailedMediaStreamKind(enum.IntEnum):
    UNKNOWN = 0
    AUDIO = 1
    VIDEO = 2

class MediaBreakInsertionMethod(enum.IntEnum):
    INTERRUPT = 0
    REPLACE = 1

class MediaCommandEnablingRule(enum.IntEnum):
    AUTO = 0
    ALWAYS = 1
    NEVER = 2

class MediaPlaybackItemChangedReason(enum.IntEnum):
    INITIAL_ITEM = 0
    END_OF_STREAM = 1
    ERROR = 2
    APP_REQUESTED = 3

class MediaPlaybackItemErrorCode(enum.IntEnum):
    NONE = 0
    ABORTED = 1
    NETWORK_ERROR = 2
    DECODE_ERROR = 3
    SOURCE_NOT_SUPPORTED_ERROR = 4
    ENCRYPTION_ERROR = 5

class MediaPlaybackSessionVideoConstrictionReason(enum.IntEnum):
    NONE = 0
    VIRTUAL_MACHINE = 1
    UNSUPPORTED_DISPLAY_ADAPTER = 2
    UNSIGNED_DRIVER = 3
    FRAME_SERVER_ENABLED = 4
    OUTPUT_PROTECTION_FAILED = 5
    UNKNOWN = 6

class MediaPlaybackState(enum.IntEnum):
    NONE = 0
    OPENING = 1
    BUFFERING = 2
    PLAYING = 3
    PAUSED = 4

class MediaPlayerAudioCategory(enum.IntEnum):
    OTHER = 0
    COMMUNICATIONS = 3
    ALERTS = 4
    SOUND_EFFECTS = 5
    GAME_EFFECTS = 6
    GAME_MEDIA = 7
    GAME_CHAT = 8
    SPEECH = 9
    MOVIE = 10
    MEDIA = 11

class MediaPlayerAudioDeviceType(enum.IntEnum):
    CONSOLE = 0
    MULTIMEDIA = 1
    COMMUNICATIONS = 2

class MediaPlayerError(enum.IntEnum):
    UNKNOWN = 0
    ABORTED = 1
    NETWORK_ERROR = 2
    DECODING_ERROR = 3
    SOURCE_NOT_SUPPORTED = 4

class MediaPlayerState(enum.IntEnum):
    CLOSED = 0
    OPENING = 1
    BUFFERING = 2
    PLAYING = 3
    PAUSED = 4
    STOPPED = 5

class SphericalVideoProjectionMode(enum.IntEnum):
    SPHERICAL = 0
    FLAT = 1

class StereoscopicVideoRenderMode(enum.IntEnum):
    MONO = 0
    STEREO = 1

class TimedMetadataTrackPresentationMode(enum.IntEnum):
    DISABLED = 0
    HIDDEN = 1
    APPLICATION_PRESENTED = 2
    PLATFORM_PRESENTED = 3

Self = typing.TypeVar('Self')

class BackgroundMediaPlayer(winsdk.system.Object):
    current: typing.ClassVar[typing.Optional[MediaPlayer]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> BackgroundMediaPlayer: ...
    @staticmethod
    def is_media_playing() -> winsdk.system.Boolean: ...
    @staticmethod
    def send_message_to_background(value: typing.Optional[winsdk.windows.foundation.collections.ValueSet]) -> None: ...
    @staticmethod
    def send_message_to_foreground(value: typing.Optional[winsdk.windows.foundation.collections.ValueSet]) -> None: ...
    @staticmethod
    def shutdown() -> None: ...
    @staticmethod
    def add_message_received_from_background(value: winsdk.windows.foundation.EventHandler[MediaPlayerDataReceivedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @staticmethod
    def remove_message_received_from_background(token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    @staticmethod
    def add_message_received_from_foreground(value: winsdk.windows.foundation.EventHandler[MediaPlayerDataReceivedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @staticmethod
    def remove_message_received_from_foreground(token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class CurrentMediaPlaybackItemChangedEventArgs(winsdk.system.Object):
    new_item: typing.Optional[MediaPlaybackItem]
    old_item: typing.Optional[MediaPlaybackItem]
    reason: MediaPlaybackItemChangedReason
    @staticmethod
    def _from(obj: winsdk.system.Object) -> CurrentMediaPlaybackItemChangedEventArgs: ...

class MediaBreak(winsdk.system.Object):
    can_start: winsdk.system.Boolean
    custom_properties: typing.Optional[winsdk.windows.foundation.collections.ValueSet]
    insertion_method: MediaBreakInsertionMethod
    playback_list: typing.Optional[MediaPlaybackList]
    presentation_position: typing.Optional[typing.Optional[datetime.timedelta]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaBreak: ...
    @typing.overload
    def __new__(cls: typing.Type[MediaBreak], insertion_method: MediaBreakInsertionMethod) -> MediaBreak:...
    @typing.overload
    def __new__(cls: typing.Type[MediaBreak], insertion_method: MediaBreakInsertionMethod, presentation_position: datetime.timedelta) -> MediaBreak:...

class MediaBreakEndedEventArgs(winsdk.system.Object):
    media_break: typing.Optional[MediaBreak]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaBreakEndedEventArgs: ...

class MediaBreakManager(winsdk.system.Object):
    current_break: typing.Optional[MediaBreak]
    playback_session: typing.Optional[MediaPlaybackSession]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaBreakManager: ...
    def play_break(self, value: typing.Optional[MediaBreak]) -> None: ...
    def skip_current_break(self) -> None: ...
    def add_break_ended(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaBreakManager, MediaBreakEndedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_break_ended(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_break_skipped(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaBreakManager, MediaBreakSkippedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_break_skipped(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_break_started(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaBreakManager, MediaBreakStartedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_break_started(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_breaks_seeked_over(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaBreakManager, MediaBreakSeekedOverEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_breaks_seeked_over(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class MediaBreakSchedule(winsdk.system.Object):
    preroll_break: typing.Optional[MediaBreak]
    postroll_break: typing.Optional[MediaBreak]
    midroll_breaks: typing.Optional[winsdk.windows.foundation.collections.IVectorView[MediaBreak]]
    playback_item: typing.Optional[MediaPlaybackItem]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaBreakSchedule: ...
    def insert_midroll_break(self, media_break: typing.Optional[MediaBreak]) -> None: ...
    def remove_midroll_break(self, media_break: typing.Optional[MediaBreak]) -> None: ...
    def add_schedule_changed(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaBreakSchedule, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_schedule_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class MediaBreakSeekedOverEventArgs(winsdk.system.Object):
    new_position: datetime.timedelta
    old_position: datetime.timedelta
    seeked_over_breaks: typing.Optional[winsdk.windows.foundation.collections.IVectorView[MediaBreak]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaBreakSeekedOverEventArgs: ...

class MediaBreakSkippedEventArgs(winsdk.system.Object):
    media_break: typing.Optional[MediaBreak]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaBreakSkippedEventArgs: ...

class MediaBreakStartedEventArgs(winsdk.system.Object):
    media_break: typing.Optional[MediaBreak]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaBreakStartedEventArgs: ...

class MediaItemDisplayProperties(winsdk.system.Object):
    type: winsdk.windows.media.MediaPlaybackType
    thumbnail: typing.Optional[winsdk.windows.storage.streams.RandomAccessStreamReference]
    music_properties: typing.Optional[winsdk.windows.media.MusicDisplayProperties]
    video_properties: typing.Optional[winsdk.windows.media.VideoDisplayProperties]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaItemDisplayProperties: ...
    def clear_all(self) -> None: ...

class MediaPlaybackAudioTrackList(winsdk.system.Object, typing.Sequence[winsdk.windows.media.core.AudioTrack]):
    size: winsdk.system.UInt32
    selected_index: winsdk.system.Int32
    def __len__(self) -> int: ...
    @typing.overload
    def __getitem__(self, index: int) -> winsdk.windows.media.core.AudioTrack: ...
    @typing.overload
    def __getitem__(self, index: slice) -> winsdk.system.Array[winsdk.windows.media.core.AudioTrack]: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackAudioTrackList: ...
    def first(self) -> typing.Optional[winsdk.windows.foundation.collections.IIterator[winsdk.windows.media.core.AudioTrack]]: ...
    def get_at(self, index: winsdk.system.UInt32) -> typing.Optional[winsdk.windows.media.core.AudioTrack]: ...
    def get_many(self, start_index: winsdk.system.UInt32, items: winsdk.system.Array[winsdk.windows.media.core.AudioTrack]) -> winsdk.system.UInt32: ...
    def index_of(self, value: typing.Optional[winsdk.windows.media.core.AudioTrack]) -> typing.Tuple[winsdk.system.Boolean, winsdk.system.UInt32]: ...
    def add_selected_index_changed(self, handler: winsdk.windows.foundation.TypedEventHandler[winsdk.windows.media.core.ISingleSelectMediaTrackList, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_selected_index_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class MediaPlaybackCommandManager(winsdk.system.Object):
    is_enabled: winsdk.system.Boolean
    auto_repeat_mode_behavior: typing.Optional[MediaPlaybackCommandManagerCommandBehavior]
    fast_forward_behavior: typing.Optional[MediaPlaybackCommandManagerCommandBehavior]
    media_player: typing.Optional[MediaPlayer]
    next_behavior: typing.Optional[MediaPlaybackCommandManagerCommandBehavior]
    pause_behavior: typing.Optional[MediaPlaybackCommandManagerCommandBehavior]
    play_behavior: typing.Optional[MediaPlaybackCommandManagerCommandBehavior]
    position_behavior: typing.Optional[MediaPlaybackCommandManagerCommandBehavior]
    previous_behavior: typing.Optional[MediaPlaybackCommandManagerCommandBehavior]
    rate_behavior: typing.Optional[MediaPlaybackCommandManagerCommandBehavior]
    rewind_behavior: typing.Optional[MediaPlaybackCommandManagerCommandBehavior]
    shuffle_behavior: typing.Optional[MediaPlaybackCommandManagerCommandBehavior]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackCommandManager: ...
    def add_auto_repeat_mode_received(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerAutoRepeatModeReceivedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_auto_repeat_mode_received(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_fast_forward_received(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerFastForwardReceivedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_fast_forward_received(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_next_received(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerNextReceivedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_next_received(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_pause_received(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerPauseReceivedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_pause_received(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_play_received(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerPlayReceivedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_play_received(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_position_received(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerPositionReceivedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_position_received(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_previous_received(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerPreviousReceivedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_previous_received(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_rate_received(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerRateReceivedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_rate_received(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_rewind_received(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerRewindReceivedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_rewind_received(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_shuffle_received(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackCommandManager, MediaPlaybackCommandManagerShuffleReceivedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_shuffle_received(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class MediaPlaybackCommandManagerAutoRepeatModeReceivedEventArgs(winsdk.system.Object):
    handled: winsdk.system.Boolean
    auto_repeat_mode: winsdk.windows.media.MediaPlaybackAutoRepeatMode
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackCommandManagerAutoRepeatModeReceivedEventArgs: ...
    def get_deferral(self) -> typing.Optional[winsdk.windows.foundation.Deferral]: ...

class MediaPlaybackCommandManagerCommandBehavior(winsdk.system.Object):
    enabling_rule: MediaCommandEnablingRule
    command_manager: typing.Optional[MediaPlaybackCommandManager]
    is_enabled: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackCommandManagerCommandBehavior: ...
    def add_is_enabled_changed(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackCommandManagerCommandBehavior, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_is_enabled_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class MediaPlaybackCommandManagerFastForwardReceivedEventArgs(winsdk.system.Object):
    handled: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackCommandManagerFastForwardReceivedEventArgs: ...
    def get_deferral(self) -> typing.Optional[winsdk.windows.foundation.Deferral]: ...

class MediaPlaybackCommandManagerNextReceivedEventArgs(winsdk.system.Object):
    handled: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackCommandManagerNextReceivedEventArgs: ...
    def get_deferral(self) -> typing.Optional[winsdk.windows.foundation.Deferral]: ...

class MediaPlaybackCommandManagerPauseReceivedEventArgs(winsdk.system.Object):
    handled: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackCommandManagerPauseReceivedEventArgs: ...
    def get_deferral(self) -> typing.Optional[winsdk.windows.foundation.Deferral]: ...

class MediaPlaybackCommandManagerPlayReceivedEventArgs(winsdk.system.Object):
    handled: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackCommandManagerPlayReceivedEventArgs: ...
    def get_deferral(self) -> typing.Optional[winsdk.windows.foundation.Deferral]: ...

class MediaPlaybackCommandManagerPositionReceivedEventArgs(winsdk.system.Object):
    handled: winsdk.system.Boolean
    position: datetime.timedelta
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackCommandManagerPositionReceivedEventArgs: ...
    def get_deferral(self) -> typing.Optional[winsdk.windows.foundation.Deferral]: ...

class MediaPlaybackCommandManagerPreviousReceivedEventArgs(winsdk.system.Object):
    handled: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackCommandManagerPreviousReceivedEventArgs: ...
    def get_deferral(self) -> typing.Optional[winsdk.windows.foundation.Deferral]: ...

class MediaPlaybackCommandManagerRateReceivedEventArgs(winsdk.system.Object):
    handled: winsdk.system.Boolean
    playback_rate: winsdk.system.Double
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackCommandManagerRateReceivedEventArgs: ...
    def get_deferral(self) -> typing.Optional[winsdk.windows.foundation.Deferral]: ...

class MediaPlaybackCommandManagerRewindReceivedEventArgs(winsdk.system.Object):
    handled: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackCommandManagerRewindReceivedEventArgs: ...
    def get_deferral(self) -> typing.Optional[winsdk.windows.foundation.Deferral]: ...

class MediaPlaybackCommandManagerShuffleReceivedEventArgs(winsdk.system.Object):
    handled: winsdk.system.Boolean
    is_shuffle_requested: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackCommandManagerShuffleReceivedEventArgs: ...
    def get_deferral(self) -> typing.Optional[winsdk.windows.foundation.Deferral]: ...

class MediaPlaybackItem(winsdk.system.Object):
    audio_tracks: typing.Optional[MediaPlaybackAudioTrackList]
    source: typing.Optional[winsdk.windows.media.core.MediaSource]
    timed_metadata_tracks: typing.Optional[MediaPlaybackTimedMetadataTrackList]
    video_tracks: typing.Optional[MediaPlaybackVideoTrackList]
    can_skip: winsdk.system.Boolean
    break_schedule: typing.Optional[MediaBreakSchedule]
    duration_limit: typing.Optional[typing.Optional[datetime.timedelta]]
    start_time: datetime.timedelta
    is_disabled_in_playback_list: winsdk.system.Boolean
    auto_loaded_display_properties: AutoLoadedDisplayPropertyKind
    total_download_progress: winsdk.system.Double
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackItem: ...
    @typing.overload
    def __new__(cls: typing.Type[MediaPlaybackItem], source: typing.Optional[winsdk.windows.media.core.MediaSource], start_time: datetime.timedelta) -> MediaPlaybackItem:...
    @typing.overload
    def __new__(cls: typing.Type[MediaPlaybackItem], source: typing.Optional[winsdk.windows.media.core.MediaSource], start_time: datetime.timedelta, duration_limit: datetime.timedelta) -> MediaPlaybackItem:...
    @typing.overload
    def __new__(cls: typing.Type[MediaPlaybackItem], source: typing.Optional[winsdk.windows.media.core.MediaSource]) -> MediaPlaybackItem:...
    def apply_display_properties(self, value: typing.Optional[MediaItemDisplayProperties]) -> None: ...
    @staticmethod
    def find_from_media_source(source: typing.Optional[winsdk.windows.media.core.MediaSource]) -> typing.Optional[MediaPlaybackItem]: ...
    def get_display_properties(self) -> typing.Optional[MediaItemDisplayProperties]: ...
    def add_audio_tracks_changed(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackItem, winsdk.windows.foundation.collections.IVectorChangedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_audio_tracks_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_timed_metadata_tracks_changed(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackItem, winsdk.windows.foundation.collections.IVectorChangedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_timed_metadata_tracks_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_video_tracks_changed(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackItem, winsdk.windows.foundation.collections.IVectorChangedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_video_tracks_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class MediaPlaybackItemError(winsdk.system.Object):
    error_code: MediaPlaybackItemErrorCode
    extended_error: winsdk.windows.foundation.HResult
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackItemError: ...

class MediaPlaybackItemFailedEventArgs(winsdk.system.Object):
    error: typing.Optional[MediaPlaybackItemError]
    item: typing.Optional[MediaPlaybackItem]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackItemFailedEventArgs: ...

class MediaPlaybackItemOpenedEventArgs(winsdk.system.Object):
    item: typing.Optional[MediaPlaybackItem]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackItemOpenedEventArgs: ...

class MediaPlaybackList(winsdk.system.Object):
    shuffle_enabled: winsdk.system.Boolean
    auto_repeat_enabled: winsdk.system.Boolean
    current_item: typing.Optional[MediaPlaybackItem]
    current_item_index: winsdk.system.UInt32
    items: typing.Optional[winsdk.windows.foundation.collections.IObservableVector[MediaPlaybackItem]]
    starting_item: typing.Optional[MediaPlaybackItem]
    max_prefetch_time: typing.Optional[typing.Optional[datetime.timedelta]]
    shuffled_items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[MediaPlaybackItem]]
    max_played_items_to_keep_open: typing.Optional[typing.Optional[winsdk.system.UInt32]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackList: ...
    def __new__(cls: typing.Type[MediaPlaybackList]) -> MediaPlaybackList:...
    def move_next(self) -> typing.Optional[MediaPlaybackItem]: ...
    def move_previous(self) -> typing.Optional[MediaPlaybackItem]: ...
    def move_to(self, item_index: winsdk.system.UInt32) -> typing.Optional[MediaPlaybackItem]: ...
    def set_shuffled_items(self, value: typing.Iterable[MediaPlaybackItem]) -> None: ...
    def add_current_item_changed(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackList, CurrentMediaPlaybackItemChangedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_current_item_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_item_failed(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackList, MediaPlaybackItemFailedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_item_failed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_item_opened(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackList, MediaPlaybackItemOpenedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_item_opened(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class MediaPlaybackSession(winsdk.system.Object):
    stereoscopic_video_packing_mode: winsdk.windows.media.mediaproperties.StereoscopicVideoPackingMode
    position: datetime.timedelta
    playback_rate: winsdk.system.Double
    normalized_source_rect: winsdk.windows.foundation.Rect
    buffering_progress: winsdk.system.Double
    can_pause: winsdk.system.Boolean
    can_seek: winsdk.system.Boolean
    download_progress: winsdk.system.Double
    is_protected: winsdk.system.Boolean
    media_player: typing.Optional[MediaPlayer]
    natural_duration: datetime.timedelta
    natural_video_height: winsdk.system.UInt32
    natural_video_width: winsdk.system.UInt32
    playback_state: MediaPlaybackState
    is_mirroring: winsdk.system.Boolean
    spherical_video_projection: typing.Optional[MediaPlaybackSphericalVideoProjection]
    playback_rotation: winsdk.windows.media.mediaproperties.MediaRotation
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackSession: ...
    def get_buffered_ranges(self) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.windows.media.MediaTimeRange]]: ...
    def get_output_degradation_policy_state(self) -> typing.Optional[MediaPlaybackSessionOutputDegradationPolicyState]: ...
    def get_played_ranges(self) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.windows.media.MediaTimeRange]]: ...
    def get_seekable_ranges(self) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.windows.media.MediaTimeRange]]: ...
    def is_supported_playback_rate_range(self, rate1: winsdk.system.Double, rate2: winsdk.system.Double) -> winsdk.system.Boolean: ...
    def add_buffering_ended(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackSession, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_buffering_ended(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_buffering_progress_changed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackSession, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_buffering_progress_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_buffering_started(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackSession, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_buffering_started(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_download_progress_changed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackSession, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_download_progress_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_natural_duration_changed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackSession, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_natural_duration_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_natural_video_size_changed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackSession, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_natural_video_size_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_playback_rate_changed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackSession, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_playback_rate_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_playback_state_changed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackSession, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_playback_state_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_position_changed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackSession, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_position_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_seek_completed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackSession, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_seek_completed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_buffered_ranges_changed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackSession, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_buffered_ranges_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_played_ranges_changed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackSession, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_played_ranges_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_seekable_ranges_changed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackSession, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_seekable_ranges_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_supported_playback_rates_changed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackSession, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_supported_playback_rates_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class MediaPlaybackSessionBufferingStartedEventArgs(winsdk.system.Object):
    is_playback_interruption: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackSessionBufferingStartedEventArgs: ...

class MediaPlaybackSessionOutputDegradationPolicyState(winsdk.system.Object):
    video_constriction_reason: MediaPlaybackSessionVideoConstrictionReason
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackSessionOutputDegradationPolicyState: ...

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

class MediaPlaybackTimedMetadataTrackList(winsdk.system.Object, typing.Sequence[winsdk.windows.media.core.TimedMetadataTrack]):
    size: winsdk.system.UInt32
    def __len__(self) -> int: ...
    @typing.overload
    def __getitem__(self, index: int) -> winsdk.windows.media.core.TimedMetadataTrack: ...
    @typing.overload
    def __getitem__(self, index: slice) -> winsdk.system.Array[winsdk.windows.media.core.TimedMetadataTrack]: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackTimedMetadataTrackList: ...
    def first(self) -> typing.Optional[winsdk.windows.foundation.collections.IIterator[winsdk.windows.media.core.TimedMetadataTrack]]: ...
    def get_at(self, index: winsdk.system.UInt32) -> typing.Optional[winsdk.windows.media.core.TimedMetadataTrack]: ...
    def get_many(self, start_index: winsdk.system.UInt32, items: winsdk.system.Array[winsdk.windows.media.core.TimedMetadataTrack]) -> winsdk.system.UInt32: ...
    def get_presentation_mode(self, index: winsdk.system.UInt32) -> TimedMetadataTrackPresentationMode: ...
    def index_of(self, value: typing.Optional[winsdk.windows.media.core.TimedMetadataTrack]) -> typing.Tuple[winsdk.system.Boolean, winsdk.system.UInt32]: ...
    def set_presentation_mode(self, index: winsdk.system.UInt32, value: TimedMetadataTrackPresentationMode) -> None: ...
    def add_presentation_mode_changed(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlaybackTimedMetadataTrackList, TimedMetadataPresentationModeChangedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_presentation_mode_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class MediaPlaybackVideoTrackList(winsdk.system.Object, typing.Sequence[winsdk.windows.media.core.VideoTrack]):
    size: winsdk.system.UInt32
    selected_index: winsdk.system.Int32
    def __len__(self) -> int: ...
    @typing.overload
    def __getitem__(self, index: int) -> winsdk.windows.media.core.VideoTrack: ...
    @typing.overload
    def __getitem__(self, index: slice) -> winsdk.system.Array[winsdk.windows.media.core.VideoTrack]: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlaybackVideoTrackList: ...
    def first(self) -> typing.Optional[winsdk.windows.foundation.collections.IIterator[winsdk.windows.media.core.VideoTrack]]: ...
    def get_at(self, index: winsdk.system.UInt32) -> typing.Optional[winsdk.windows.media.core.VideoTrack]: ...
    def get_many(self, start_index: winsdk.system.UInt32, items: winsdk.system.Array[winsdk.windows.media.core.VideoTrack]) -> winsdk.system.UInt32: ...
    def index_of(self, value: typing.Optional[winsdk.windows.media.core.VideoTrack]) -> typing.Tuple[winsdk.system.Boolean, winsdk.system.UInt32]: ...
    def add_selected_index_changed(self, handler: winsdk.windows.foundation.TypedEventHandler[winsdk.windows.media.core.ISingleSelectMediaTrackList, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_selected_index_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class MediaPlayer(winsdk.system.Object):
    volume: winsdk.system.Double
    position: datetime.timedelta
    playback_rate: winsdk.system.Double
    is_looping_enabled: winsdk.system.Boolean
    is_muted: winsdk.system.Boolean
    auto_play: winsdk.system.Boolean
    current_state: MediaPlayerState
    natural_duration: datetime.timedelta
    playback_media_markers: typing.Optional[PlaybackMediaMarkerSequence]
    is_protected: winsdk.system.Boolean
    buffering_progress: winsdk.system.Double
    can_pause: winsdk.system.Boolean
    can_seek: winsdk.system.Boolean
    audio_device_type: MediaPlayerAudioDeviceType
    audio_category: MediaPlayerAudioCategory
    system_media_transport_controls: typing.Optional[winsdk.windows.media.SystemMediaTransportControls]
    timeline_controller_position_offset: datetime.timedelta
    timeline_controller: typing.Optional[winsdk.windows.media.MediaTimelineController]
    stereoscopic_video_render_mode: StereoscopicVideoRenderMode
    real_time_playback: winsdk.system.Boolean
    audio_device: typing.Optional[winsdk.windows.devices.enumeration.DeviceInformation]
    audio_balance: winsdk.system.Double
    command_manager: typing.Optional[MediaPlaybackCommandManager]
    break_manager: typing.Optional[MediaBreakManager]
    playback_session: typing.Optional[MediaPlaybackSession]
    is_video_frame_server_enabled: winsdk.system.Boolean
    audio_state_monitor: typing.Optional[winsdk.windows.media.audio.AudioStateMonitor]
    protection_manager: typing.Optional[winsdk.windows.media.protection.MediaProtectionManager]
    source: typing.Optional[IMediaPlaybackSource]
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlayer: ...
    def __new__(cls: typing.Type[MediaPlayer]) -> MediaPlayer:...
    def add_audio_effect(self, activatable_class_id: str, effect_optional: winsdk.system.Boolean, configuration: typing.Optional[winsdk.windows.foundation.collections.IPropertySet]) -> None: ...
    def add_video_effect(self, activatable_class_id: str, effect_optional: winsdk.system.Boolean, effect_configuration: typing.Optional[winsdk.windows.foundation.collections.IPropertySet]) -> None: ...
    def close(self) -> None: ...
    def copy_frame_to_stereoscopic_video_surfaces(self, destination_left_eye: typing.Optional[winsdk.windows.graphics.directx.direct3d11.IDirect3DSurface], destination_right_eye: typing.Optional[winsdk.windows.graphics.directx.direct3d11.IDirect3DSurface]) -> None: ...
    @typing.overload
    def copy_frame_to_video_surface(self, destination: typing.Optional[winsdk.windows.graphics.directx.direct3d11.IDirect3DSurface]) -> None: ...
    @typing.overload
    def copy_frame_to_video_surface(self, destination: typing.Optional[winsdk.windows.graphics.directx.direct3d11.IDirect3DSurface], target_rectangle: winsdk.windows.foundation.Rect) -> None: ...
    def get_as_casting_source(self) -> typing.Optional[winsdk.windows.media.casting.CastingSource]: ...
    def get_surface(self, compositor: typing.Optional[winsdk.windows.ui.composition.Compositor]) -> typing.Optional[MediaPlayerSurface]: ...
    def pause(self) -> None: ...
    def play(self) -> None: ...
    def remove_all_effects(self) -> None: ...
    @typing.overload
    def render_subtitles_to_surface(self, destination: typing.Optional[winsdk.windows.graphics.directx.direct3d11.IDirect3DSurface]) -> winsdk.system.Boolean: ...
    @typing.overload
    def render_subtitles_to_surface(self, destination: typing.Optional[winsdk.windows.graphics.directx.direct3d11.IDirect3DSurface], target_rectangle: winsdk.windows.foundation.Rect) -> winsdk.system.Boolean: ...
    def set_file_source(self, file: typing.Optional[winsdk.windows.storage.IStorageFile]) -> None: ...
    def set_media_source(self, source: typing.Optional[winsdk.windows.media.core.IMediaSource]) -> None: ...
    def set_stream_source(self, stream: typing.Optional[winsdk.windows.storage.streams.IRandomAccessStream]) -> None: ...
    def set_surface_size(self, size: winsdk.windows.foundation.Size) -> None: ...
    def set_uri_source(self, value: typing.Optional[winsdk.windows.foundation.Uri]) -> None: ...
    def step_backward_one_frame(self) -> None: ...
    def step_forward_one_frame(self) -> None: ...
    def add_buffering_ended(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlayer, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_buffering_ended(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_buffering_started(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlayer, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_buffering_started(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_current_state_changed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlayer, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_current_state_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_media_ended(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlayer, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_media_ended(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_media_failed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlayer, MediaPlayerFailedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_media_failed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_media_opened(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlayer, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_media_opened(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_media_player_rate_changed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlayer, MediaPlayerRateChangedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_media_player_rate_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_playback_media_marker_reached(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlayer, PlaybackMediaMarkerReachedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_playback_media_marker_reached(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_seek_completed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlayer, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_seek_completed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_volume_changed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlayer, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_volume_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_is_muted_changed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlayer, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_is_muted_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_source_changed(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlayer, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_source_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_video_frame_available(self, value: winsdk.windows.foundation.TypedEventHandler[MediaPlayer, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_video_frame_available(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_subtitle_frame_changed(self, handler: winsdk.windows.foundation.TypedEventHandler[MediaPlayer, winsdk.system.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_subtitle_frame_changed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class MediaPlayerDataReceivedEventArgs(winsdk.system.Object):
    data: typing.Optional[winsdk.windows.foundation.collections.ValueSet]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlayerDataReceivedEventArgs: ...

class MediaPlayerFailedEventArgs(winsdk.system.Object):
    error: MediaPlayerError
    error_message: str
    extended_error_code: winsdk.windows.foundation.HResult
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlayerFailedEventArgs: ...

class MediaPlayerRateChangedEventArgs(winsdk.system.Object):
    new_rate: winsdk.system.Double
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlayerRateChangedEventArgs: ...

class MediaPlayerSurface(winsdk.system.Object):
    composition_surface: typing.Optional[winsdk.windows.ui.composition.ICompositionSurface]
    compositor: typing.Optional[winsdk.windows.ui.composition.Compositor]
    media_player: typing.Optional[MediaPlayer]
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaPlayerSurface: ...
    def close(self) -> None: ...

class PlaybackMediaMarker(winsdk.system.Object):
    media_marker_type: str
    text: str
    time: datetime.timedelta
    @staticmethod
    def _from(obj: winsdk.system.Object) -> PlaybackMediaMarker: ...
    @typing.overload
    def __new__(cls: typing.Type[PlaybackMediaMarker], value: datetime.timedelta) -> PlaybackMediaMarker:...
    @typing.overload
    def __new__(cls: typing.Type[PlaybackMediaMarker], value: datetime.timedelta, media_market_type: str, text: str) -> PlaybackMediaMarker:...

class PlaybackMediaMarkerReachedEventArgs(winsdk.system.Object):
    playback_media_marker: typing.Optional[PlaybackMediaMarker]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> PlaybackMediaMarkerReachedEventArgs: ...

class PlaybackMediaMarkerSequence(winsdk.system.Object):
    size: winsdk.system.UInt32
    def __iter__(self) -> winsdk.windows.foundation.collections.IIterator[PlaybackMediaMarker]: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> PlaybackMediaMarkerSequence: ...
    def clear(self) -> None: ...
    def first(self) -> typing.Optional[winsdk.windows.foundation.collections.IIterator[PlaybackMediaMarker]]: ...
    def insert(self, value: typing.Optional[PlaybackMediaMarker]) -> None: ...

class TimedMetadataPresentationModeChangedEventArgs(winsdk.system.Object):
    new_presentation_mode: TimedMetadataTrackPresentationMode
    old_presentation_mode: TimedMetadataTrackPresentationMode
    track: typing.Optional[winsdk.windows.media.core.TimedMetadataTrack]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> TimedMetadataPresentationModeChangedEventArgs: ...

class IMediaEnginePlaybackSource(winsdk.system.Object):
    current_item: typing.Optional[MediaPlaybackItem]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IMediaEnginePlaybackSource: ...
    def set_playback_source(self, source: typing.Optional[IMediaPlaybackSource]) -> None: ...

class IMediaPlaybackSource(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IMediaPlaybackSource: ...

