package Ġcom . ta j mot i . lib t ulip . ui . player Ċ Ċ import Ġcom . ta j mot i . lib t ulip . model . info . Stream able Info Ċ import Ġcom . ta j mot i . lib t ulip . model . key . Stream able Key Ċ import Ġcom . ta j mot i . lib t ulip . model . stream . Un loaded Video Stream Ref Ċ import Ġcom . ta j mot i . lib t ulip . model . subtitle . Subtitle Info Ċ import Ġcom . ta j mot i . lib t ulip . ui . streams . Failed Link Ċ import Ġcom . ta j mot i . lib t ulip . ui . streams . Loaded Link Ċ import Ġcom . ta j mot i . lib t ulip . ui . streams . Selected Link Ċ import Ġkotlinx . coroutines . flow . Shared Flow Ċ import Ġkotlinx . coroutines . flow . State Flow Ċ import Ġjava . io . File Ċ Ċ interface ĠVideo Player ViewModel Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠKey Ġof Ġthe Ġstream able Ġthat Ġis Ġcurrently Ġbeing Ġloaded Ġor Ġplayed . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġstream able Key : ĠState Flow < Stream able Key > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCancel s Ġplayback Ġof Ġthe Ġprevious Ġstream able ĊĠĠĠĠ Ġ* Ġand Ġstarts Ġplaying Ġthe Ġone Ġby Ġ[ key ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġ[ key ] Ġis Ġalready Ġbeing Ġloaded Ġplayed , Ġthis Ġmethod Ġhas Ġno Ġeffect . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġchange Stream able ( key : ĠStream able Key ) ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTrue Ġif Ġthe Ġcurrently Ġplaying Ġstream able Ġis Ġa ĠTV Ġshow , Ġfalse Ġif Ġit Ġis Ġa Ġmovie . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġis Tv Show : ĠState Flow < Boolean > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġa ĠTV Ġshow Ġepisode Ġis Ġcurrently Ġplaying , Ġand Ġit 's Ġnot Ġthe Ġlast Ġone Ġin Ġthe Ġseason . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġhas Next Episode : ĠState Flow < Boolean > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStarts Ġplayback Ġof Ġthe Ġnext Ġepisode Ġor Ġdoes Ġnothing ĊĠĠĠĠ Ġ* Ġif Ġthere 's Ġnone Ġor Ġthis Ġis Ġa Ġmovie . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġgo To Next Episode () ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġstream Ġlinks Ġare Ġbeing Ġloaded Ġright Ġnow Ġand Ġthere Ġare Ġno Ġloaded Ġlinks Ġyet . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġlinks Loading : ĠState Flow < Boolean > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStream able Ġinfo Ġof Ġ[ stream able Key ] Ġor Ġnull Ġif Ġnot Ġyet Ġavailable . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġstream able Info : ĠState Flow < Stream able Info ?> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoaded Ġlinks Ġof Ġthe Ġcurrently Ġselected Ġ[ stream able Key ] Ġor Ġnull Ġif Ġnot Ġyet Ġavailable . ĊĠĠĠĠ Ġ* ĠThis Ġvalue Ġis Ġupdated Ġin Ġreal Ġtime Ġas Ġmore Ġlinks Ġare Ġloaded Ġin . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġlinks Result : ĠState Flow < List < Un loaded Video Stream Ref > ?> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġlink Ġlist Ġloading Ġis Ġfinished Ġand Ġat Ġleast Ġone Ġstream Ġwas Ġfound . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġlinks Any Result : ĠState Flow < Boolean > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġlink Ġlist Ġloading Ġis Ġfinished , Ġbut Ġno Ġstreams Ġwere Ġfound . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġlinks No Result : ĠState Flow < Boolean > ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġuser Ġhas Ġclicked Ġa Ġlink , Ġit Ġneeds Ġto Ġbe Ġresolved Ġand Ġplayed . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Stream Clicked ( stream : ĠUn loaded Video Stream Ref , Ġdownload : ĠBoolean ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġa Ġdirect Ġlink Ġis Ġbeing Ġloaded Ġright Ġnow . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġloading Stream Or Direct Link : ĠState Flow < Boolean > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelected Ġitem Ġwhich Ġhas Ġredirects Ġresolved , Ġbut Ġdoesn 't Ġsupport Ġdirect Ġlink Ġloading . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġdirect Loading Unsupported : ĠShared Flow < Selected Link > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelected Ġitem Ġwith Ġdirect Ġlink Ġloaded . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġvideo Link To Play : ĠState Flow < Loaded Link ?> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelected Ġitem Ġfor Ġplaying Ġis Ġloaded ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġvideo Link To Download : ĠState Flow < Loaded Link ?> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelected Ġitem Ġfailed Ġto Ġload Ġredirects Ġor Ġfailed Ġto Ġload Ġdirect Ġlink . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġlink Loading Error : ĠShared Flow < Failed Link > ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSuccessful Ġresult Ġof Ġsubtitle Ġloading . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġsubtitle List : ĠState Flow < List < Subtitle Info >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthe Ġlist Ġof Ġavailable Ġsub titles Ġis Ġbeing Ġloaded Ġright Ġnow . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġloading Subtitle List : ĠState Flow < Boolean > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġsub titles Ġare Ġloaded Ġand Ġcan Ġbe Ġselected . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġsub titles Ready To Select : ĠState Flow < Boolean > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġsome Ġsub titles Ġfile Ġis Ġbeing Ġdownloaded Ġright Ġnow . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġdownloading Sub titles : ĠState Flow < Boolean > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthere Ġwas Ġsome Ġerror Ġwhile Ġdownloading Ġthe Ġselected Ġsubtitle Ġfile . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġsubtitle Download Error : ĠState Flow < Boolean > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSub titles Ġto Ġbe Ġapplied Ġto Ġthe Ġcurrently Ġplaying Ġvideo ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġsubtitle File : ĠState Flow < File ?> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHow Ġmuch Ġthe Ġsub titles Ġshould Ġbe Ġoffset . ĊĠĠĠĠ Ġ* ĠPositive Ġvalues Ġmean Ġthat Ġsub titles Ġmust Ġbe Ġdelayed , ĊĠĠĠĠ Ġ* Ġnegative Ġvalues Ġmean Ġthey Ġneed Ġto Ġbe Ġshown Ġearlier . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġsubtitle Offset : ĠState Flow < Long > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġtrue Ġshow Ġplay , Ġif Ġfalse Ġshow Ġpause , Ġif Ġnull Ġdon 't Ġshow Ġat Ġall ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġshow Play Button : ĠState Flow < Play Button State > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTrue Ġif Ġthe Ġvideo Ġis Ġcurrently Ġplaying ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġis Playing : ĠState Flow < Boolean > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuffer ing Ġprogress Ġor Ġnull Ġif Ġnot Ġbuffer ing ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġbuffer ing : ĠState Flow < Float ?> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPlay ing Ġposition Ġor Ġnull Ġif Ġposition Ġshould Ġbe Ġhidden ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġposition : ĠState Flow < Position ?> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠState Ġof Ġthe Ġplayback . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġmedia Player State : ĠState Flow < MediaPlayer State > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthe Ġmedia Ġhas Ġsuccessfully Ġplayed Ġuntil Ġthe Ġend ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġis Done Playing : ĠState Flow < Boolean > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTrue Ġif Ġan Ġerror Ġwas Ġencountered Ġand Ġthe Ġplayer Ġwas Ġcanceled ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġis Error : ĠState Flow < Boolean > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġnew Ġmedia Ġis Ġattached Ġand Ġstarting Ġto Ġbe Ġplayed . ĊĠĠĠĠ Ġ* ĠIf Ġsome Ġmedia Ġwas Ġalready Ġplayed , Ġthe Ġposition Ġof Ġthe Ġnew ĊĠĠĠĠ Ġ* Ġone Ġwill Ġbe Ġset Ġto Ġthe Ġlast Ġvalid Ġposition Ġof Ġthe Ġlast Ġmedia . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Media Attached ( media : ĠVideo Player ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġexisting Ġmedia Ġis Ġdet ached . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Media Detached () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġuser Ġhas Ġselected Ġwhich Ġsub titles Ġthey Ġwish Ġto Ġuse . ĊĠĠĠĠ Ġ* ĠThe Ġsub titles Ġneed Ġto Ġbe Ġdownloaded Ġbefore Ġthe Ġvideo Ġis Ġplayed . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Sub titles Selected ( subtitle Info : ĠSub title Info ?) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġuser Ġheard Ġa Ġword Ġthat Ġthey Ġwant Ġto Ġmatch Ġto Ġsome Ġtext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Word He ard () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġuser Ġsaw Ġtext Ġthat Ġthey Ġwant Ġto Ġmatch Ġto Ġa Ġheard Ġword . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Text Seen () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠVideo Ġneeds Ġto Ġbe Ġskipped Ġa Ġfew Ġseconds Ġforwards . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġskip For wards () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠVideo Ġneeds Ġto Ġbe Ġskipped Ġa Ġfew Ġseconds Ġbackwards . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġskip Back wards () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠVideo Ġneeds Ġto Ġbe Ġpaused Ġor Ġres umed . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġplay Pause () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠVideo Ġneeds Ġto Ġbe Ġs ought Ġto Ġthe Ġprovided Ġprogress Ġ( fraction ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Playback Progress ( progress : ĠFloat ) ĊĊĠĠĠ Ġenum Ġclass ĠPlay Button State Ġ{ ĊĠĠĠĠĠĠĠ ĠSHOW _ PLAY , ĊĠĠĠĠĠĠĠ ĠSHOW _ PAUSE , ĊĠĠĠĠĠĠĠ ĠH IDE ĊĠĠĠ Ġ} Ċ }