package Ġio . github . ga om jun . gl Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Surface Texture Ċ import Ġandroid . opengl . GLES 1 1 Ext Ċ import Ġandroid . opengl . GLES 2 0 Ċ import Ġandroid . opengl . GL Surface View Ċ import Ġandroid . util . Attribute Set Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . nio . Int Buffer Ċ import Ġjavax . micro edition . kh ronos . e gl . EGL Config Ċ import Ġjavax . micro edition . kh ronos . openg les . GL 1 0 Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġqq Ġon Ġ 8 / 2 / 2 0 1 7 . Ċ Ġ*/ Ċ class ĠCamera GL Surface View ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: ĠGL Surface View ( context , Ġattrs ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġtexture ID : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġsurface Texture : ĠSurface Texture ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdirect Drawer : ĠDirect Drawer ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġframe Width : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġframe Height : ĠInt ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġsurface Changed Callback : Ġ(( surface Texture : ĠSurface Texture ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġpixel Buffer : ĠInt Buffer ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset EGL Context Client Version ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġset Renderer ( Renderer ()) ĊĊĠĠĠĠĠĠĠ Ġrender Mode Ġ= ĠR ENDER MODE _ WHEN _ DIR TY ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Texture ID (): ĠInt Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtexture Ġ= ĠInt Array ( 1 ) ĊĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Gen Textures ( 1 , Ġtexture , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtexture [ 0 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠRenderer Ġ: ĠGL Surface View . Renderer Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Draw Frame ( gl : ĠGL 1 0 ?) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" on Draw Frame ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsurface Texture !!. update TexImage () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransform Matrix Ġ= ĠFloat Array ( 1 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsurface Texture !!. get Transform Matrix ( transform Matrix ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirect Drawer !!. draw ( transform Matrix , Ġframe Width !! , Ġframe Height !! ) Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġpixel Buffer ?. position ( 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġgl ?. gl Read Pixels ( 0 , Ġ 0 , Ġframe Width !! , Ġframe Height !! , ĠGL 1 0 . GL _ RGBA , ĠGL 1 0 . GL _ UNSIGNED _ BYTE , Ġpixel Buffer ) Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsend DataTo Encoder ( pixel Buffer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Surface Changed ( gl : ĠGL 1 0 ?, Ġwidth : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" on Surface Changed ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġframe Width Ġ= Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġframe Height Ġ= Ġheight ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpixel Buffer Ġ= ĠInt Buffer . allocate ( frame Width !! Ġ* Ġframe Height !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Viewport ( 0 , Ġ 0 , Ġwidth , Ġheight ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsurface Changed Callback ?. invoke ( surface Texture !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Surface Created ( gl : ĠGL 1 0 ?, Ġconfig : ĠE GL Config ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" on Surface Created ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtexture ID Ġ= Ġcreate Texture ID () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" create Texture ID () Ġ$ texture ID ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsurface Texture Ġ= ĠSurface Texture ( texture ID !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsurface Texture !!. setOn Frame Available Listener Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" on Frame Available ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Render () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirect Drawer Ġ= ĠDirect Drawer ( texture ID !! , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊ ĊĊ