package com.suno.android.media import androidx.media3.common.Player interface ReasonCodeEnum { val reasonCode: Int } inline fun fromReasonCode( reasonCode: Int, ): T? where T : Enum, T : ReasonCodeEnum = enumValues().find { it.reasonCode == reasonCode } enum class PlaybackDiscontinuityReason( override val reasonCode: Int, ) : ReasonCodeEnum { AUTO_TRANSITION(Player.DISCONTINUITY_REASON_AUTO_TRANSITION), SEEK(Player.DISCONTINUITY_REASON_SEEK), SEEK_ADJUSTMENT(Player.DISCONTINUITY_REASON_SEEK_ADJUSTMENT), SKIP(Player.DISCONTINUITY_REASON_SKIP), REMOVE(Player.DISCONTINUITY_REASON_REMOVE), INTERNAL(Player.DISCONTINUITY_REASON_INTERNAL), SILENCE_SKIP(Player.DISCONTINUITY_REASON_SILENCE_SKIP), } enum class MediaItemTransitionReason( override val reasonCode: Int, ) : ReasonCodeEnum { REPEAT(Player.MEDIA_ITEM_TRANSITION_REASON_REPEAT), AUTO(Player.MEDIA_ITEM_TRANSITION_REASON_AUTO), SEEK(Player.MEDIA_ITEM_TRANSITION_REASON_SEEK), PLAYLIST_CHANGED(Player.MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED), } enum class PlayWhenReadyChangedReason( override val reasonCode: Int, ) : ReasonCodeEnum { USER_REQUEST(Player.PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST), AUDIO_FOCUS_LOSS(Player.PLAY_WHEN_READY_CHANGE_REASON_AUDIO_FOCUS_LOSS), AUDIO_BECOMING_NOISY(Player.PLAY_WHEN_READY_CHANGE_REASON_AUDIO_BECOMING_NOISY), REMOTE(Player.PLAY_WHEN_READY_CHANGE_REASON_REMOTE), END_OF_MEDIA_ITEM(Player.PLAY_WHEN_READY_CHANGE_REASON_END_OF_MEDIA_ITEM), SUPPRESSED_TOO_LONG(Player.PLAY_WHEN_READY_CHANGE_REASON_SUPPRESSED_TOO_LONG), }