package Ġorg . mp 4 parser . iso viewer . parser Ċ Ċ import Ġorg . mp 4 parser . Box Parser Ċ import Ġorg . mp 4 parser . Par s able Box Ċ import Ġorg . mp 4 parser . support . DoNot Parse Detail Ċ import Ġjava . io . IOException Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . nio . channels . File Channel Ċ import Ġjava . nio . channels . Readable Byte Channel Ċ import Ġjava . nio . channels . Writable Byte Channel ĊĊ Ċ class ĠMedia Data Box No Copy Ġ: ĠPar s able Box Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġheader : ĠByteBuffer ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġfc : ĠFile Channel ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġposition : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcontent Size : ĠLong Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun ĠgetType (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" md at " ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġget Box ( writable Byte Channel : ĠWrit able Byte Channel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfc !!. transfer To ( position , Ġcontent Size , Ġwritable Byte Channel ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Size (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġheader !!. limit () Ġ+ Ġcontent Size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DoNot Parse Detail ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġparse ( dataSource : ĠRead able Byte Channel , Ġheader : ĠByteBuffer , Ġcontent Size : ĠLong , Ġbox Parser : ĠBox Parser ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . header Ġ= Ġheader ĊĠĠĠĠĠĠĠ Ġthis . fc Ġ= ĠdataSource Ġas ĠFile Channel ĊĠĠĠĠĠĠĠ Ġthis . content Size Ġ= Ġcontent Size ĊĠĠĠĠĠĠĠ Ġthis . position Ġ= Ġfc !!. position () ĊĠĠĠĠĠĠĠ Ġfc !!. position ( this . position Ġ+ Ġcontent Size ) ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ