package Ġcom . qi ye i . android . media . app . ui . activity Ċ Ċ import Ġandroid . graphics . Surface Texture Ċ import Ġandroid . media . Media Codec Ċ import Ġandroid . media . Media Format Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Surface Ċ import Ġandroid . view . Texture View Ċ import Ġcom . qi ye i . android . media . api . Decoder CallBack Ċ import Ġcom . qi ye i . android . media . api . Media Constant Ċ import Ġcom . qi ye i . android . media . api . Media Utils Ċ import Ġcom . qi ye i . android . media . app . R Ċ import Ġcom . qi ye i . android . media . app . extend . onClick Ċ import Ġcom . qi ye i . android . media . lib . decoder . H 2 6 4 Video Media Codec Decoder Ċ import Ġkotlinx . android . synt hetic . main . activity _ h 2 6 2 _ media _ codec _ decoder _ demo .* Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . util .* Ċ Ċ class ĠH 2 6 2 Media Codec Decoder Demo Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĊĠĠĠ Ġlateinit Ġvar Ġm H 2 6 4 Media Codec Decoder : H 2 6 4 Video Media Codec Decoder ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ h 2 6 2 _ media _ codec _ decoder _ demo ) ĊĊĠĠĠĠĠĠĠ Ġdecoder _ preview . surface Texture Listener Ġ= Ġobject Ġ: ĠTexture View . Surface Texture Listener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Surface Texture Available ( surface : ĠSurface Texture , Ġwidth : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Media File ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm H 2 6 4 Media Codec Decoder Ġ= ĠH 2 6 4 Video Media Codec Decoder ( Surface ( surface ), width , height , it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm H 2 6 4 Media Codec Decoder . set CallBack ( object Ġ: Decoder CallBack { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġoutput Media Format Changed ( type : ĠInt , Ġmedia Format : ĠMedia Format ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Decode Output ( type : ĠInt , Ġbyte Buffer : ĠByteBuffer ?, Ġbuffer Info : ĠMedia Codec . Buffer Info ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( byte Buffer Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( Media Constant . H 2 6 4 _ TAG ," H 2 6 2 Media Codec Decoder Demo Activity Ġon Decode Output , byte Buffer , size =" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbyte Buffer . remaining () Ġ+ Ġ" Ġbuffer Info =" Ġ+ Ġbuffer Info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop ( type : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Surface Texture Size Changed ( surface : ĠSurface Texture , Ġwidth : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Surface Texture Destroyed ( surface : ĠSurface Texture ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Surface Texture Updated ( surface : ĠSurface Texture ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbtn 1 . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm H 2 6 4 Media Codec Decoder . start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Media File (): String ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Dir Ġ= ĠFile ( Media Utils . get Media Store Path ()) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file Dir . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġfile Dir . list Files ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! file . name . contains (" re Mux ter _ ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfile . canonical Path ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ }