package Ġcom . otal i ast ud ios . trans coder . internal . utils Ċ Ċ import Ġcom . otal i ast ud ios . trans coder . common . Track Type Ċ Ċ interface ĠTrack Map < T > Ġ: ĠIterable < T > Ġ{ ĊĊĠĠĠ Ġoperator Ġfun Ġget ( type : ĠTrack Type ): ĠT ĊĠĠĠ Ġval Ġvideo Ġget () Ġ= Ġget ( Track Type . VIDEO ) ĊĠĠĠ Ġval Ġaudio Ġget () Ġ= Ġget ( Track Type . AUDIO ) ĊĊĠĠĠ Ġfun Ġhas ( type : ĠTrack Type ): ĠBoolean ĊĠĠĠ Ġval Ġhas Video Ġget () Ġ= Ġhas ( Track Type . VIDEO ) ĊĠĠĠ Ġval Ġhas Audio Ġget () Ġ= Ġhas ( Track Type . AUDIO ) ĊĊĠĠĠ Ġfun Ġget OrNull ( type : ĠTrack Type ) Ġ= Ġif Ġ( has ( type )) Ġget ( type ) Ġelse Ġnull ĊĠĠĠ Ġfun Ġvideo OrNull () Ġ= Ġget OrNull ( Track Type . VIDEO ) ĊĠĠĠ Ġfun Ġaudio OrNull () Ġ= Ġget OrNull ( Track Type . AUDIO ) ĊĊĠĠĠ Ġval Ġsize Ġget () Ġ= ĠlistOf NotNull ( video OrNull (), Ġaudio OrNull ()). size ĊĊĠĠĠ Ġoverride Ġfun Ġiterator () Ġ= ĠlistOf NotNull ( video OrNull (), Ġaudio OrNull ()). iterator () Ċ } Ċ Ċ interface ĠMutable Track Map < T > Ġ: ĠTrack Map < T > Ġ{ ĊĠĠĠ Ġoperator Ġfun Ġset ( type : ĠTrack Type , Ġvalue : ĠT ?) ĊĊĠĠĠ Ġfun Ġreset ( video : ĠT ?, Ġaudio : ĠT ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġset ( Track Type . VIDEO , Ġvideo ) ĊĠĠĠĠĠĠĠ Ġset ( Track Type . AUDIO , Ġaudio ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġaudio : ĠT ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsuper . audio ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ= Ġset ( Track Type . AUDIO , Ġvalue ) ĊĊĠĠĠ Ġoverride Ġvar Ġvideo : ĠT ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsuper . video ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ= Ġset ( Track Type . VIDEO , Ġvalue ) Ċ } Ċ Ċ fun Ġ< T > Ġtrack Map Of ( default : ĠT ?) Ġ= Ġtrack Map Of ( default , Ġdefault ) Ċ Ċ fun Ġ< T > Ġtrack Map Of ( video : ĠT ?, Ġaudio : ĠT ?): ĠTrack Map < T > Ġ= ĠDefault Track Map ( video , Ġaudio ) Ċ Ċ fun Ġ< T > Ġmutable Track Map Of ( default : ĠT ?) Ġ= Ġmutable Track Map Of ( default , Ġdefault ) Ċ Ċ fun Ġ< T > Ġmutable Track Map Of ( video : ĠT ? Ġ= Ġnull , Ġaudio : ĠT ? Ġ= Ġnull ): ĠMutable Track Map < T > Ġ= ĠDefault Track Map ( video , Ġaudio ) Ċ Ċ private Ġclass ĠDefault Track Map < T >( video : ĠT ?, Ġaudio : ĠT ?) Ġ: ĠMutable Track Map < T > Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmap Ġ= Ġmutable Map Of ( Track Type . VIDEO Ġto Ġvideo , ĠTrack Type . AUDIO Ġto Ġaudio ) ĊĠĠĠ Ġoverride Ġfun Ġget ( type : ĠTrack Type ): ĠT Ġ= Ġrequire NotNull ( map [ type ]) ĊĠĠĠ Ġoverride Ġfun Ġhas ( type : ĠTrack Type ) Ġ= Ġmap [ type ] Ġ!= Ġnull ĊĠĠĠ Ġoverride Ġfun Ġset ( type : ĠTrack Type , Ġvalue : ĠT ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġmap [ type ] Ġ= Ġvalue ĊĠĠĠ Ġ} Ċ } ĊĊ