package Ġxyz . lu an . aud iop layers Ċ Ċ import Ġandroid . media . Media DataSource Ċ import Ġandroid . os . Build Ċ import Ġandroidx . annotation . Requires Api Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . M ) Ċ class ĠByte DataSource ( ĊĠĠĠ Ġprivate Ġval Ġdata : ĠByteArray Ċ ) Ġ: ĠMedia DataSource () Ġ{ ĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġoverride Ġfun Ġget Size (): ĠLong Ġ= Ġdata . size . to Long () ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ= ĠUnit ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġoverride Ġfun Ġread At ( position : ĠLong , Ġbuffer : ĠByteArray , Ġoffset : ĠInt , Ġsize : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ>= Ġdata . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġremaining Size Ġ= Ġcompute Remaining Size ( size , Ġposition ) ĊĠĠĠĠĠĠĠ ĠSystem . arraycopy ( data , Ġposition . toInt (), Ġbuffer , Ġoffset , Ġremaining Size ) ĊĠĠĠĠĠĠĠ Ġreturn Ġremaining Size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcompute Remaining Size ( size : ĠInt , Ġposition : ĠLong ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġremaining Size Ġ= Ġsize . to Long () ĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ+ Ġremaining Size Ġ> Ġdata . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremaining Size Ġ-= Ġposition Ġ+ Ġremaining Size Ġ- Ġdata . size ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġremaining Size . toInt () ĊĠĠĠ Ġ} Ċ Ċ } Ċ