package Ġio . github . ken ney code . h ic amera . demo Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . opengl . GLES 3 0 Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Activity Compat Ċ import Ġandroid . util . Log Ċ import Ġio . github . ken ney code . fun renderer . common . Keys Ċ import Ġio . github . ken ney code . fun renderer . common . Render Chain Ċ import Ġio . github . ken ney code . fun renderer . io . Texture Ċ import Ġio . github . ken ney code . fun renderer . renderer . Crop Renderer Ċ import Ġio . github . ken ney code . fun renderer . renderer . OES 2 RGB AR ender er Ċ import Ġio . github . ken ney code . fun renderer . renderer . Screen Renderer Ċ import Ġio . github . ken ney code . h ic amera . Camera Wrapper Ċ import Ġio . github . ken ney code . h ic amera . GL Camera View Ċ import Ġio . github . ken ney code . h ic amera . Size Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ Ċ /** Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ ĠCode d Ġby Ġk enn ey Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . github . com / ken ney code Ċ Ġ* Ċ Ġ**/ Ċ Ċ class ĠMainActivity Ġ: ĠActivity () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . check Self Permission ( this , ĠManifest . permission . CAMERA ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĠarrayOf ( Manifest . permission . CAMERA ), Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Demo () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString > ?, Ġgrant Results : ĠInt Array ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrant Results ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Demo () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun Demo () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcamera Wrapper Ġ= ĠCamera Wrapper () ĊĠĠĠĠĠĠĠ Ġcamera View . bind Camera ( camera Wrapper ) ĊĠĠĠĠĠĠĠ Ġcamera View . render Callback Ġ= Ġobject Ġ: ĠGL Camera View . Render Callback Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġo es 2 RGB AR ender er Ġ= ĠO ES 2 RGB AR ender er () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġcrop Renderer Ġ= ĠC rop Renderer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġeffect Renderer Ġ= ĠTest Effect Renderer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġscreen Renderer Ġ= ĠScreen Renderer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġrender Chain : ĠRender Chain ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Init () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender Chain Ġ= ĠRender Chain . create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Renderer ( oes 2 RGB AR ender er ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Renderer ( crop Renderer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Renderer ( effect Renderer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Renderer ( screen Renderer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender Chain . init () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Render Frame ( oes Texture : ĠInt , Ġst Matrix : ĠFloat Array , Ġcamera Preview Size : ĠSize , Ġsurface Size : ĠSize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Clear Color ( 0 f , Ġ 0 f , Ġ 0 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Clear ( GLES 3 0 . GL _ COLOR _ BUFFER _ BIT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠTexture ( oes Texture , Ġcamera Preview Size . height , Ġcamera Preview Size . width , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġmutable Map Of < String , ĠAny >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [ Keys . ST _ MATRIX ] Ġ= Ġst Matrix ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [ Keys . C ROP _ RATIO ] Ġ= Ġsurface Size . width . toFloat () Ġ/ Ġsurface Size . height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [ Keys . SURFACE _ WIDTH ] Ġ= Ġsurface Size . width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [ Keys . SURFACE _ HEIGHT ] Ġ= Ġsurface Size . height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender Chain . render ( input , Ġdata ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ("", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Release () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender Chain . release () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ