/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠTr inity . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠWang ĠL ian J ie Ġ< w lan j ie 8 8 8 @ gmail . com > Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . tr inity . record Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . PointF Ċ import Ġandroid . graphics . Surface Texture Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . provider . Settings . Setting NotFoundException Ċ import Ġandroid . view . Orientation EventListener Ċ import Ġandroid . view . Surface Ċ import Ġcom . tencent . mars . x log . Log Ċ import Ġcom . tr inity . Constants Ċ import Ġcom . tr inity . ErrorCode Ċ import Ġcom . tr inity . On Recording Listener Ċ import Ġcom . tr inity . camera .* Ċ import Ġcom . tr inity . core . Frame Ċ import Ġcom . tr inity . Build Config Ċ import Ġcom . tr inity . core . Music Info Ċ import Ġcom . tr inity . core . Render Type Ċ import Ġcom . tr inity . editor . Video Export Info Ċ import Ġcom . tr inity . encoder . Media Codec Surface Encoder Ċ import Ġcom . tr inity . face . Face Detection Ċ import Ġcom . tr inity . face . Face Detection ImageType Ċ import Ġcom . tr inity . face . Face Detection Report Ċ import Ġcom . tr inity . face . Flip Type Ċ import Ġcom . tr inity . listener . On Render Listener Ċ import Ġcom . tr inity . player . Audio Player Ċ import Ġcom . tr inity . record . exception . Audio ConfigurationException Ċ import Ġcom . tr inity . record . exception . Init Recorder Fail Exception Ċ import Ġcom . tr inity . record . service . Player Service Ċ import Ġcom . tr inity . record . service . Recorder Service Ċ import Ġcom . tr inity . record . service . impl . Audio Record Recorder ServiceImpl Ċ import Ġcom . tr inity . util . Timer Ċ import Ġjava . io . File Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCreate Ġby Ġw lan j ie Ġon Ġ 2 0 1 9 / 3 / 1 4 - ä¸ĭ åįĪ 8 : 4 5 Ċ Ġ*/ Ċ class ĠTr inity Record ( ĊĠ Ġval Ġcontext : ĠContext , ĊĠ Ġpreview : ĠTr inity Preview View Ċ ) Ġ: ĠTr inity Preview View . Preview View Callback , ĠTimer . On Timer Listener , ĠCamera Callback Ġ{ ĊĊĠ Ġ// Ġc ++ å¯¹è±¡ æĮĩéĴĪ åľ°åĿĢ ĊĠ Ġprivate Ġvar Ġm Handle : ĠLong Ġ= Ġ 0 ĊĠ Ġ// Ġ çĽ¸ æľº å¯¹è±¡ ĊĠ Ġprivate Ġvar Ġm Camera Ġ= ĠCamera 1 ( preview . context , Ġthis ) ĊĠ Ġ// Ġ é¢Ħ è§Ī å®½ ĊĠ Ġprivate Ġvar Ġm Camera Width Ġ= Ġ 0 ĊĠ Ġ// Ġ é¢Ħ è§Ī é«ĺ ĊĠ Ġprivate Ġvar Ġm Camera Height Ġ= Ġ 0 ĊĠ Ġprivate Ġvar Ġm View Width Ġ= Ġ 0 ĊĠ Ġprivate Ġvar Ġm View Height Ġ= Ġ 0 ĊĠ Ġprivate Ġvar Ġm Frame Ġ= ĠFrame . C ROP ĊĠ Ġprivate Ġvar Ġm Camera Callback : ĠCamera Callback Ġ?= Ġnull ĊĠ Ġ// Ġæ¸ ²æŁĵ ç±»åŀĭ ĊĠ Ġprivate Ġvar Ġm Render Type Ġ= ĠRender Type . C ROP ĊĠ Ġ// Ġè¯·æ±Ĥ æīĵå¼Ģ æĳ Ħ åĥı å¤´ çļĦ å®½ åĴĮ é«ĺ ĊĠ Ġprivate Ġvar Ġm Resolution Ġ= ĠPreview Resolution . RESOL UTION _ 1 2 8 0 x 7 2 0 ĊĠ Ġ// Ġ é¢Ħ è§Ī æ¯Ķ ä¾ĭ ĊĠ Ġprivate Ġvar Ġm AspectRatio Ġ= ĠAs pect Ratio . of ( 1 6 , Ġ 9 ) ĊĠ Ġ// Ġsurface Ġtexture ĊĠ Ġprivate Ġvar Ġm Surface Texture : ĠSurface Texture Ġ?= Ġnull ĊĠ Ġ// Ġtexture çŁ©éĺµ ĊĠ Ġprivate Ġval Ġm Texture Matrix Ġ= ĠFloat Array ( 1 6 ) ĊĠ Ġ// Ġ ç¡¬ ç¼ĸçłģ å¯¹è±¡ ĊĠ Ġprivate Ġvar Ġm Surface Encoder Ġ= ĠMedia Codec Surface Encoder () ĊĠ Ġ// ĠSurface Ġå¯¹è±¡ ĊĠ Ġprivate Ġvar Ġm Surface : ĠSurface Ġ?= Ġnull ĊĠ Ġ// Ġæĺ¯åĲ¦ ç¬¬ ä¸Ģæ¬¡ åĪĽå»º ĊĠ Ġ// Ġ ç¬¬ ä¸Ģæ¬¡ åĪĽå»º æĹ¶ åĪĽå»º OpenGL çİ¯å¢ĥ , åĴĮ å¼ĢåĲ¯ OpenGL çº¿ç¨ĭ ĊĠ Ġ// Ġ ç¬¬äºĮ æ¬¡ æĹ¶ çĽ´æİ¥ åĪĽå»º EGL Surface ĊĠ Ġprivate Ġvar Ġm First Ġ= Ġtrue ĊĠ Ġ// ĠSurface æĺ¯åĲ¦ åŃĺåľ¨ ĊĠ Ġ// Ġåľ¨ create Surface ä¸Ń è®¾ç½®ä¸º true ĊĠ Ġ// Ġåľ¨ destroy Surface ä¸Ń è®¾ç½®ä¸º false ĊĠ Ġprivate Ġvar Ġm Surface Exist Ġ= Ġfalse ĊĠ Ġ// Ġæĺ¯åĲ¦ åģľæŃ¢ ĊĠ Ġprivate Ġvar Ġm Stop Ġ= Ġfalse ĊĠ Ġ// Ġ éŁ³ é¢ĳ å½ķ åĪ¶ ĊĠ Ġprivate Ġval Ġm Audio Record Service : ĠRec order Service Ġ= ĠAudio Record Recorder ServiceImpl . instance ĊĠ Ġ// Ġ éŁ³ ä¹Ĳ æĴŃæĶ¾ åĻ¨ ĊĠ Ġprivate Ġvar Ġm Player Service : ĠPlayer Service Ġ?= Ġnull ĊĠ Ġ// Ġ è®¡ æĹ¶ åĻ¨ ĊĠ Ġprivate Ġvar Ġm Timer Ġ= ĠTimer ( this , Ġ 2 0 ) ĊĠ Ġ// Ġ éŁ³ ä¹Ĳ æĺ¯åĲ¦ æĴŃæĶ¾ ä¸Ń ĊĠ Ġ// Ġ è¿Ļä¸ª æłĩ å¿Ĺ ä¸º true æĹ¶ , åľ¨ å¼Ģå§ĭ å½ķ åĪ¶ æĹ¶ , ç»§ç»Ń æĴŃæĶ¾ ĊĠ Ġprivate Ġvar Ġm Music Playing Ġ= Ġfalse ĊĠ Ġ// Ġtexture åĽŀè°ĥ ĊĠ Ġ// Ġåı¯ä»¥ åģļ çī¹ æķĪ å¤ĦçĲĨ Ġtexture Id æĺ¯ OES ç±»åŀĭ ĊĠ Ġprivate Ġvar Ġm On Render Listener : ĠOn Render Listener Ġ?= Ġnull ĊĠ Ġ// Ġ å½ķ åĪ¶ äºĭä»¶ ĊĠ Ġprivate Ġvar Ġm On Recording Listener : ĠOn Recording Listener Ġ?= Ġnull ĊĠ Ġ// Ġæĺ¯åĲ¦ å½ķ åĪ¶ ä¸Ń ĊĠ Ġprivate Ġvar Ġm Recording Ġ= Ġfalse ĊĠ Ġ// Ġ éŁ³ ä¹Ĳ æĴŃæĶ¾ åĻ¨ ĊĠ Ġprivate Ġvar Ġm Audio Player : ĠAudio Player Ġ?= Ġnull ĊĠ Ġ// Ġ éŁ³ ä¹Ĳ ä¿¡æģ¯ å¯¹è±¡ ĊĠ Ġprivate Ġvar Ġm Music Info : ĠMusic Info Ġ?= Ġnull ĊĠ Ġ// Ġ å½ķ åĪ¶ éĢŁåº¦ ĊĠ Ġprivate Ġvar Ġm Speed Ġ= ĠSpeed . NORMAL ĊĠ Ġ// Ġæĺ¯åĲ¦ è¯·æ±Ĥ æīĵå¼Ģ æĳ Ħ åĥı å¤´ ĊĠ Ġ// Ġå¦Ĥæŀľ texture Id è¿ĺ æ²¡ åĪĽå»º å¥½ æĹ¶ è®¾ç½®ä¸º true ĊĠ Ġ// Ġåľ¨ texture Id åĪĽå»º æĪĲåĬŁ æĹ¶ , æīĵå¼Ģ æĳ Ħ åĥı å¤´ ĊĠ Ġprivate Ġvar Ġm Request Preview Ġ= Ġfalse ĊĠ Ġ// Ġ äºº èĦ ¸ æ£Ģæµĭ å®ŀä¾ĭ ĊĠ Ġprivate Ġvar Ġm Face Detection : ĠFace Detection Ġ?= Ġnull ĊĠ Ġ// Ġ è®¾å¤ĩ è§Ĵ åº¦ æ£Ģæµĭ ĊĠ Ġprivate Ġval Ġm Orientation Listener : ĠOrientation EventListener ĊĠ Ġ// Ġ è®¾å¤ĩ è§Ĵ åº¦ ĊĠ Ġprivate Ġvar Ġm Rotate Degree Ġ= Ġ 0 ĊĠ Ġ// Ġ è®¾å¤ĩ æĺ¯åĲ¦ èĩªåĬ¨ æĹ ĭ è½¬ ĊĠ Ġprivate Ġvar Ġm Auto Rotate Ġ= Ġfalse ĊĠ Ġprivate Ġvar Ġm Face Detection Reports : ĠArray < Face Detection Report > Ġ?= Ġnull ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġpreview . set Callback ( this ) ĊĠĠĠ Ġm Orientation Listener Ġ= Ġobject : ĠOrientation EventListener ( context ) Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġon Orientation Changed ( orientation : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( orientation Ġ== ĠOR IENTATION _ UNKNOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġo Ġ= Ġ( orientation Ġ+ Ġ 4 5 ) Ġ/ Ġ 9 0 Ġ* Ġ 9 0 ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġm Auto Rotate Ġ= Ġ 1 Ġ== ĠSettings . System . getInt ( context . content Resolver , ĠSettings . System . AC CEL ERO METER _ ROT ATION ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSetting NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( m Auto Rotate Ġ&& Ġo Ġ% Ġ 3 6 0 Ġ== Ġ 1 8 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Rotate Degree Ġ= Ġo Ġ% Ġ 3 6 0 ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( m Orientation Listener . can Detect Orientation ()) Ġ{ ĊĠĠĠĠĠ Ġm Orientation Listener . enable () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġset Camera Callback ( callback : ĠCamera Callback ) Ġ{ ĊĠĠĠ Ġm Camera Callback Ġ= Ġcallback ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġreset Stop State () Ġ{ ĊĠĠĠ Ġm Stop Ġ= Ġfalse ĊĠ Ġ} ĊĊĠ Ġ// ĠSurface View Ġsurface Created Ġcallback ĊĠ Ġoverride Ġfun Ġcreate Surface ( surface : ĠSurface , Ġwidth : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠ Ġstart Preview ( surface , Ġwidth , Ġheight ) ĊĠ Ġ} ĊĊĠ Ġ// ĠSurface View Ġsurface Changed Ġ åĽŀè°ĥ ĊĠ Ġoverride Ġfun Ġreset Render Size ( width : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠ Ġm View Width Ġ= Ġwidth ĊĠĠĠ Ġm View Height Ġ= Ġheight ĊĠĠĠ Ġ// Ġ è°ĥæķ´ ç»ĺ åĪ¶ åĮºåŁŁ å¤§å°ı ĊĠĠĠ Ġset Render Size ( m Handle , Ġwidth , Ġheight ) ĊĠ Ġ} ĊĊĠ Ġ// ĠSurface View Ġsurface Destroyed Ġ åĽŀè°ĥ ĊĠ Ġoverride Ġfun Ġdestroy Surface () Ġ{ ĊĠĠĠ ĠLog . i ( Constants . TAG , Ġ" destroy Surface ") ĊĠĠĠ Ġdestroy EGL Context () ĊĠĠĠ Ġm Surface Exist Ġ= Ġfalse ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġstart Preview ( surface : ĠSurface , Ġwidth : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠ Ġif Ġ( m First ) Ġ{ ĊĠĠĠĠĠ Ġ// Ġ ç¬¬ ä¸Ģæ¬¡ åĪĽå»º c ++ å¯¹è±¡ ĊĠĠĠĠĠ Ġm Handle Ġ= Ġcreate () ĊĠĠĠĠĠ Ġ// ĠåĪĿå§ĭåĮĸ OpenGL ä¸Ĭä¸ĭ æĸĩ , å¹¶ å¼ĢåĲ¯ çº¿ç¨ĭ ĊĠĠĠĠĠ Ġprepare EGL Context ( m Handle , Ġsurface , Ġwidth , Ġheight ) ĊĠĠĠĠĠ Ġset Render Type ( m Render Type ) ĊĠĠĠĠĠ Ġset Frame ( m Frame ) ĊĠĠĠĠĠ ĠLog . d (" tag ", Ġ" start Preview ") ĊĠĠĠĠĠ Ġm First Ġ= Ġfalse ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġ// Ġ çĽ´æİ¥ åĪĽå»º EGL Surface ĊĠĠĠĠĠ Ġcreate Window Surface ( m Handle , Ġsurface ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġm Surface Exist Ġ= Ġtrue ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġdestroy EGL Context () Ġ{ ĊĠĠĠ Ġ// Ġ éĩĬæĶ¾ OpenGL ä¸Ĭä¸ĭ æĸĩ , Ġ åģľæŃ¢ çº¿ç¨ĭ ĊĠĠĠ Ġdestroy EGL Context ( m Handle ) ĊĠĠĠ Ġ// ĠåĪłéĻ¤ c ++ å¯¹è±¡ ĊĠĠĠ Ġrelease ( m Handle ) ĊĠĠĠ Ġm Handle Ġ= Ġ 0 ĊĠĠĠ Ġm First Ġ= Ġtrue ĊĠĠĠ Ġm Surface Exist Ġ= Ġfalse ĊĠĠĠ Ġm Stop Ġ= Ġfalse ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè®¾ç½® é¢Ħ è§Ī æĺ¾ç¤º ç±»åŀĭ ĊĠĠ Ġ* Ġ@ param Ġrender Type ĠFIX _ XY Ġ æĺ¾ç¤º æķ´ä¸ª å±ı å¹ķ , åĲĮæĹ¶ è£ ģ åī ª æĺ¾ç¤º åĨħå®¹ , ĠC ROP æĮī åİŁ æ¯Ķ ä¾ĭ æĺ¾ç¤º , åĲĮæĹ¶ ä¸Ĭä¸ĭ çķĻ é»ĳ ĊĠĠ Ġ*/ ĊĠ Ġfun Ġset Render Type ( render Type : ĠRender Type ) Ġ{ ĊĠĠĠ Ġm Render Type Ġ= Ġrender Type ĊĠĠĠ Ġset Render Type ( m Handle , Ġrender Type . ordinal ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè®¾ç½® æĴŃæĶ¾ éĢŁåº¦ , åľ¨ å½ķ åĪ¶ è¿ĩç¨ĭä¸Ń è®¾ç½® æĹł æķĪ ĊĠĠ Ġ* Ġ æ³¨æĦı : Ġ å¿«éĢŁ å½ķ åĪ¶ æĹ¶ , éľĢè¦ģ è¿Ľè¡Į ä¸ ¢ å¸ § å¤ĦçĲĨ , åĲ¦åĪĻ å½ķ åĪ¶ åĩº æĿ¥çļĦ è§Ĩé¢ĳ åľ¨ å¿« 4 åĢ į éĢŁ æĹ¶ èĥ½ è¾¾ åĪ° 1 2 0 fps ĊĠĠ Ġ* Ġ@ param Ġspeed ĠSpeed ĊĠĠ Ġ*/ ĊĠ Ġfun Ġset Speed ( speed : ĠSpeed ) Ġ{ ĊĠĠĠ Ġm Speed Ġ= Ġspeed ĊĠ Ġ} ĊĠĠĊĠ Ġfun Ġset AspectRatio ( a : Int , Ġb : Int ){ ĊĠĠĠ Ġm AspectRatio Ġ= ĠAs pect Ratio . of ( a , Ġb ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè®¾ç½® çĶ» å¹ ħ ĊĠĠ Ġ* Ġ çĽ®åīį çĶ» å¹ ħ æľī : Ġ åŀ Ĥ çĽ´ Ġæ¨ ª åĲĳ Ġ 1 : 1 æĸ¹ å½¢ ĊĠĠ Ġ*/ ĊĠ Ġfun Ġset Frame ( frame : ĠFrame ) Ġ{ ĊĠĠĠ Ġm Frame Ġ= Ġframe ĊĠĠĠ Ġset Frame ( m Handle , Ġframe . ordinal ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè®¾ç½® å½ķ åĪ¶ åĽŀè°ĥ ĊĠĠ Ġ*/ ĊĠ Ġfun Ġset On Recording Listener ( l : ĠOn Recording Listener ) Ġ{ ĊĠĠĠ Ġm On Recording Listener Ġ= Ġl ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè®¾ç½® Render åĽŀè°ĥ ĊĠĠ Ġ*/ ĊĠ Ġfun Ġset On Render Listener ( l : ĠOn Render Listener ) Ġ{ ĊĠĠĠ Ġm On Render Listener Ġ= Ġl ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè®¾ç½® èĥĮæĻ¯ éŁ³ ä¹Ĳ è·¯å¾Ħ ĊĠĠ Ġ* Ġ@ return Ġ 0 Ġ æĪĲåĬŁ ĊĠĠ Ġ*/ ĊĠ Ġfun Ġset Background Music ( info : ĠMusic Info ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġfile Ġ= ĠFile ( info . path ) ĊĠĠĠ Ġif Ġ(! file . exists ()) Ġ{ ĊĠĠĠĠĠ Ġreturn ĠErrorCode . FILE _ NOT _ EXISTS ĊĠĠĠ Ġ} ĊĠĠĠ Ġm Music Playing Ġ= Ġfalse ĊĠĠĠ Ġm Audio Player ?. stop () ĊĠĠĠ Ġm Audio Player ?. release () ĊĠĠĠ Ġm Audio Player Ġ= ĠAudio Player () ĊĠĠĠ Ġm Music Info Ġ= Ġinfo ĊĠĠĠ Ġreturn ĠErrorCode . SUCCESS ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ å¼ĢåĲ¯ æĳ Ħ åĥı å¤´ é¢Ħ è§Ī ĊĠĠ Ġ* Ġ@ param Ġresolution ĠPreview Resolution Ġ é¢Ħ è§Ī åĪĨ è¾ ¨ çİĩ éĢīæĭ© ĊĠĠ Ġ*/ ĊĠ Ġfun Ġstart Preview ( resolution : ĠPreview Resolution ) Ġ{ ĊĠĠĠ Ġm Resolution Ġ= Ġresolution ĊĠĠĠ Ġif Ġ( m Surface Texture Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġ// Ġop eng l çİ¯å¢ĥ è¿ĺ æ²¡ åĩĨå¤ĩ å¥½ , æŃ¤ æĹ¶ ä¸įèĥ½ æīĵå¼Ģ çĽ¸ æľº ĊĠĠĠĠĠ Ġ// Ġ åĽłä¸º çĽ¸ æľº æīĵå¼Ģ éľĢè¦ģ OES çļĦ texture Id ĊĠĠĠĠĠ Ġm Request Preview Ġ= Ġtrue ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġm Surface Texture ?. let Ġ{ ĊĠĠĠĠĠ Ġm Camera . set AspectRatio ( m AspectRatio ) ĊĠĠĠĠĠ Ġm Camera . start ( it , Ġm Resolution ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ åģľæŃ¢ é¢Ħ è§Ī , Ġ éĩĬæĶ¾ æĳ Ħ åĥı å¤´ ĊĠĠ Ġ*/ ĊĠ Ġfun Ġstop Preview () Ġ{ ĊĠĠĠ Ġm Camera . stop () ĊĠĠĠ Ġm Request Preview Ġ= Ġfalse ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ åĪĩæį¢ æĳ Ħ åĥı å¤´ ĊĠĠ Ġ*/ ĊĠ Ġfun Ġswitch Camera () Ġ{ ĊĠĠĠ Ġm Camera . set AspectRatio ( m AspectRatio ) ĊĠĠĠ Ġval Ġfacing Ġ= Ġif Ġ( get Camera Facing () Ġ== ĠF acing . BACK ) ĠF acing . FRONT Ġelse ĠF acing . BACK ĊĠĠĠ Ġm Camera . set Facing ( facing ) ĊĠĠĠ Ġswitch Camera ( m Handle ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè®¾ç½® å½ĵåīį æĳ Ħ åĥı å¤´ id ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġfun Ġset Camera Facing ( facing : ĠF acing ) Ġ{ ĊĠĠĠ Ġm Camera . set Facing ( facing ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġèİ·åıĸ å½ĵåīį æĳ Ħ åĥı å¤´ id ĊĠĠ Ġ* Ġ@ return ĠF acing Ġè¿ĶåĽŀ åīį åĲİ æĳ Ħ åĥı å¤´ çļĦ æŀļ ä¸¾ å®ļä¹ī ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġfun Ġget Camera Facing (): ĠF acing Ġ{ ĊĠĠĠ Ġreturn Ġm Camera . getF acing () ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ å¼Ģ å¤´ éĹ ª åħī çģ ¯ ĊĠĠ Ġ* Ġ@ param Ġflash ĊĠĠ Ġ* ĠFlash . OFF Ġ åħ³éĹŃ ĊĠĠ Ġ* ĠFlash . ON Ġ å¼ĢåĲ¯ ĊĠĠ Ġ* ĠFlash . TOR CH ĊĠĠ Ġ* ĠFlash . AUTO Ġ èĩªåĬ¨ ĊĠĠ Ġ*/ ĊĠ Ġfun Ġflash ( flash : ĠFlash ) Ġ{ ĊĠĠĠ Ġm Camera . set Flash ( flash ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè®¾ç½® camera ç¼© æĶ¾ ĊĠĠ Ġ* Ġ 1 0 0 Ġä¸º æľĢå¤§ ç¼© æĶ¾ ĊĠĠ Ġ* Ġ@ param Ġzoom Ġcamera ç¼© æĶ¾ çļĦåĢ¼ , Ġ æľĢå¤§ 1 0 0 , Ġ æľĢå°ı 0 ĊĠĠ Ġ*/ ĊĠ Ġfun Ġset Zoom ( zoom : ĠInt ) Ġ{ ĊĠĠĠ Ġm Camera . set Zoom ( zoom ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè®¾ç½® camera æĽ Ŀ åħī åº¦ ĊĠĠ Ġ* Ġ 1 0 0 Ġä¸º æľĢå¤§ ĊĠĠ Ġ* Ġ@ param Ġexposure Comp ensation Ġcamera æĽ Ŀ åħī çļĦåĢ¼ , Ġ æľĢ åľ¨ 1 0 0 , Ġ æľĢå°ı 0 ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġfun Ġset Exposure Comp ensation ( ex posure Comp ensation : ĠInt ) Ġ{ ĊĠĠĠ Ġm Camera . set Exposure Comp ensation ( ex posure Comp ensation ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè®¾ç½® èģļ çĦ ¦ åĮºåŁŁ ĊĠĠ Ġ* Ġ@ param Ġpoint Ġ èģļ çĦ ¦ åĮºåŁŁ çļĦ x , Ġy åĢ¼ ĊĠĠ Ġ*/ ĊĠ Ġfun Ġfocus ( point : ĠPoint F ) Ġ{ ĊĠĠĠ Ġm Camera . focus ( m View Width , Ġm View Height , Ġpoint ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè®¾ç½® äºº èĦ ¸ æ£Ģæµĭ æİ¥åı£ ĊĠĠ Ġ* Ġ@ param Ġface Detection ĠFace Detection ĊĠĠ Ġ*/ ĊĠ Ġfun Ġset Face Detection ( face Detection : ĠFace Detection ) Ġ{ ĊĠĠĠ Ġface Detection . release Detection () ĊĠĠĠ Ġface Detection . create Face Detection ( context , Ġ 0 ) ĊĠĠĠ Ġm Face Detection Ġ= Ġface Detection ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġdispatch On Focus Start ( where : ĠPoint F ) Ġ{ ĊĠĠĠ Ġm Camera Callback ?. dispatch On Focus Start ( where ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġdispatch On Focus End ( success : ĠBoolean , Ġwhere : ĠPoint F ) Ġ{ ĊĠĠĠ Ġm Camera Callback ?. dispatch On Focus End ( success , Ġwhere ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġdispatch On Preview Callback ( data : ĠByteArray , Ġwidth : ĠInt , Ġheight : ĠInt , Ġorientation : ĠInt ) Ġ{ ĊĠĠĠ Ġm Camera Callback ?. dispatch On Preview Callback ( data , Ġwidth , Ġheight , Ġorientation ) ĊĠĠĠ Ġif Ġ( m Face Detection Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġon Frame Available ( m Handle ) ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġfront Camera Ġ= Ġm Camera . getF acing () Ġ== ĠF acing . FRONT ĊĠĠĠ Ġval Ġin Angle Ġ= Ġif Ġ( front Camera ) Ġ( orientation Ġ+ Ġ 3 6 0 Ġ- Ġm Rotate Degree ) Ġ% Ġ 3 6 0 Ġelse Ġ( orientation Ġ+ Ġm Rotate Degree ) Ġ% Ġ 3 6 0 ĊĠĠĠ Ġval Ġout Angle Ġ= Ġif Ġ(! m Auto Rotate ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( front Camera ) Ġ( 3 6 0 Ġ- Ġm Rotate Degree ) Ġ% Ġ 3 6 0 Ġelse Ġm Rotate Degree Ġ% Ġ 3 6 0 ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠ 0 ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġflip Type Ġ= Ġif Ġ( front Camera ) ĠFlip Type . FLI P _ Y Ġelse ĠFlip Type . FLI P _ NONE ĊĠĠĠ Ġval Ġresult Ġ= Ġm Face Detection ?. face Detection ( data , Ġwidth , Ġheight , ĠFace Detection ImageType . Y UV _ NV 2 1 , Ġin Angle , Ġout Angle , Ġflip Type ) ĊĠĠĠ Ġm Face Detection Reports Ġ= Ġresult ĊĠĠĠ Ġon Frame Available ( m Handle ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġupdate ( timer : ĠTimer , Ġelapsed Time : ĠInt ) Ġ{ ĊĠĠĠ Ġm On Recording Listener ?. on Recording ( elapsed Time , Ġtimer . duration ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ å½ķ åĪ¶ ç»ĵæĿŁ ĊĠĠ Ġ*/ ĊĠ Ġoverride Ġfun Ġend ( timer : ĠTimer ) Ġ{ ĊĠĠĠ Ġstop Recording () ĊĠ Ġ} ĊĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġprivate Ġfun Ġis Land scape ( display Orientation : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġfalse ĊĠ Ġ} ĊĊĊĠ Ġ/** ĊĠĠ Ġ* Ġæ·»åĬł æ»¤ éķľ ĊĠĠ Ġ* Ġ å¦Ĥ : Ġcontent . json çļĦ ç»Ŀ å¯¹ è·¯å¾Ħ ä¸º Ġ/ sd card / Android / com . tr inity . sample / cache / filters / config . json ĊĠĠ Ġ* Ġ ä¼łåħ¥ çļĦ è·¯å¾Ħ åıª éľĢè¦ģ Ġ/ sd card / Android / com . tr inity . sample / cache / filters Ġ åį³åı¯ ĊĠĠ Ġ* Ġå¦Ĥæŀľ å½ĵåīį è·¯å¾Ħ ä¸į åĮħåĲ« config . json åĪĻ æ·»åĬł å¤±è´¥ ĊĠĠ Ġ* Ġ åħ·ä½ĵ json åĨħå®¹ å¦Ĥä¸ĭ : ĊĠĠ Ġ* Ġ{ ĊĠĠ Ġ* Ġ Ġ" type ": Ġ 0 , ĊĠĠ Ġ* Ġ Ġ" intensity ": Ġ 1 . 0 , ĊĠĠ Ġ* Ġ Ġ" lut ": Ġ" lut _ 1 2 4 / lut _ 1 2 4 . png " ĊĠĠ Ġ* Ġ} ĊĠĠ Ġ* ĊĠĠ Ġ* Ġjson ĠåıĤæķ° è§£éĩĬ : ĊĠĠ Ġ* Ġtype : Ġ ä¿ĿçķĻ åŃĹæ®µ , Ġ çĽ®åīį æļĤ æĹł ä½ľçĶ¨ ĊĠĠ Ġ* Ġintensity : Ġæ » ¤ éķľ éĢı æĺİ åº¦ , Ġ 0 . 0 æĹ¶ åĴĮ æĳ Ħ åĥı å¤´ éĩĩ éĽĨ çļĦ æĹł å·® åĪ« ĊĠĠ Ġ* Ġl ut : Ġæ » ¤ éķľ é¢ľèī² è¡¨ çļĦ åľ°åĿĢ , Ġ å¿ħé¡» ä¸º æľ¬åľ° åľ°åĿĢ , Ġ èĢĮä¸Ķ ä¸º çĽ¸ å¯¹ è·¯å¾Ħ ĊĠĠ Ġ* ĠĠĠĠĠ Ġsdk åĨħéĥ¨ ä¼ļ è¿Ľè¡Į è·¯å¾Ħ æĭ ¼ æİ¥ ĊĠĠ Ġ* Ġ@ param Ġconfig Path Ġæ » ¤ éķľ config . json çļĦ çĪ¶ çĽ®å½ķ ĊĠĠ Ġ* Ġ@ return Ġè¿ĶåĽŀ å½ĵåīį æ»¤ éķľ çļĦ åĶ¯ä¸Ģ id ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġfun Ġadd Filter ( config Path : ĠString ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġadd Filter ( m Handle , Ġconfig Path ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠæĽ´æĸ° æ»¤ éķľ ĊĠĠ Ġ* Ġ@ param Ġconfig Path Ġconfig . json çļĦ è·¯å¾Ħ , Ġ çĽ®åīį å¯¹ ç§° add Filter è¯´æĺİ ĊĠĠ Ġ* Ġ@ param ĠstartTime Ġæ » ¤ éķľ çļĦ å¼Ģå§ĭ æĹ¶éĹ´ ĊĠĠ Ġ* Ġ@ param ĠendTime Ġæ » ¤ éķľ çļĦ ç»ĵæĿŁ æĹ¶éĹ´ ĊĠĠ Ġ* Ġ@ param Ġaction Id ĠéľĢè¦ģ æĽ´æĸ° åĵª ä¸ª æ»¤ éķľ , Ġ å¿ħé¡» ä¸º add Filter è¿ĶåĽŀ çļĦ action Id ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġfun Ġupdate Filter ( config Path : ĠString , ĠstartTime : ĠInt , ĠendTime : ĠInt , Ġaction Id : ĠInt ) Ġ{ ĊĠĠĠ Ġupdate Filter ( m Handle , Ġconfig Path , ĠstartTime , ĠendTime , Ġaction Id ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠæĽ´æĸ° æ»¤ éķľ éĢı æĺİ åº¦ ĊĠĠ Ġ* Ġ@ param Ġintensity ĠFloat Ġæ » ¤ éķľ éĢı æĺİ åº¦ Ġ 0 . 0 Ġ~ Ġ 1 . 0 ĊĠĠ Ġ* Ġ@ param Ġaction Id ĠInt Ġadd Action æĹ¶ è¿ĶåĽŀ çļĦ id ĊĠĠ Ġ*/ ĊĠ Ġfun Ġupdate Filter Intensity ( intensity : ĠFloat , Ġaction Id : ĠInt ) Ġ{ ĊĠĠĠ Ġupdate Filter Intensity ( m Handle , Ġintensity , Ġaction Id ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġexternal Ġfun Ġupdate Filter Intensity ( handle : ĠLong , Ġintensity : ĠFloat , Ġaction Id : ĠInt ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠåĪłéĻ¤ æ»¤ éķľ ĊĠĠ Ġ* Ġ@ param Ġaction Id ĠéľĢè¦ģ åĪłéĻ¤ åĵª ä¸ª æ»¤ éķľ , Ġ å¿ħé¡» ä¸º add Filter æĹ¶ è¿ĶåĽŀ çļĦ action Id ĊĠĠ Ġ*/ ĊĠ Ġfun Ġdelete Filter ( action Id : ĠInt ) Ġ{ ĊĠĠĠ Ġdelete Filter ( m Handle , Ġaction Id ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġæ·»åĬł çī¹ æķĪ ĊĠĠ Ġ* Ġ å¦Ĥ : Ġcontent . json çļĦ ç»Ŀ å¯¹ è·¯å¾Ħ ä¸º Ġ/ sd card / Android / com . tr inity . sample / cache / effects / config . json ĊĠĠ Ġ* Ġ ä¼łåħ¥ çļĦ è·¯å¾Ħ åıª éľĢè¦ģ Ġ/ sd card / Android / com . tr inity . sample / cache / effects Ġ åį³åı¯ ĊĠĠ Ġ* Ġå¦Ĥæŀľ å½ĵåīį è·¯å¾Ħ ä¸į åĮħåĲ« config . json åĪĻ æ·»åĬł å¤±è´¥ ĊĠĠ Ġ* Ġ@ param Ġconfig Path Ġæ » ¤ éķľ config . json çļĦ çĪ¶ çĽ®å½ķ ĊĠĠ Ġ* Ġ@ return Ġè¿ĶåĽŀ å½ĵåīį çī¹ æķĪ çļĦ åĶ¯ä¸Ģ id ĊĠĠ Ġ*/ ĊĠ Ġfun Ġadd Effect ( config Path : ĠString ): ĠInt Ġ{ ĊĠĠĠ Ġif Ġ( m Handle Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġadd Effect ( m Handle , Ġconfig Path ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġexternal Ġfun Ġadd Effect ( handle : ĠLong , Ġconfig : ĠString ): ĠInt ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠæĽ´æĸ° æĮĩå®ļ çī¹ æķĪ ĊĠĠ Ġ* Ġ@ param ĠstartTime Ġ çī¹ æķĪ çļĦ å¼Ģå§ĭ æĹ¶éĹ´ ĊĠĠ Ġ* Ġ@ param ĠendTime Ġ çī¹ æķĪ çļĦ ç»ĵæĿŁ æĹ¶éĹ´ ĊĠĠ Ġ* Ġ@ param Ġaction Id ĠéľĢè¦ģ æĽ´æĸ° åĵª ä¸ª çī¹ æķĪ , Ġ å¿ħé¡» ä¸º addAction è¿ĶåĽŀ çļĦ action Id ĊĠĠ Ġ*/ ĊĠ Ġfun Ġupdate Effect Time ( startTime : ĠInt , ĠendTime : ĠInt , Ġaction Id : ĠInt ) Ġ{ ĊĠĠĠ Ġif Ġ( m Handle Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġupdate Effect Time ( m Handle , ĠstartTime , ĠendTime , Ġaction Id ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġexternal Ġfun Ġupdate Effect Time ( handle : ĠLong , ĠstartTime : ĠInt , ĠendTime : ĠInt , Ġaction Id : ĠInt ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠæĽ´æĸ° æĮĩå®ļ çī¹ æķĪ çļĦåıĤæķ° ĊĠĠ Ġ* Ġ@ param Ġaction Id ĠInt ĠéľĢè¦ģ æĽ´æĸ° åĵª ä¸ª çī¹ æķĪ , Ġ å¿ħé¡» ä¸º addAction è¿ĶåĽŀ çļĦ action Id ĊĠĠ Ġ* Ġ@ param Ġeffect Name ĠString ĠéľĢè¦ģ æĽ´æĸ° çī¹ æķĪ çļĦ åĲįåŃĹ , Ġ è¿Ļä¸ª æĺ¯åľ¨ json ä¸Ń å®ļ å¥½çļĦ ĊĠĠ Ġ* Ġ@ param Ġparam Name ĠString ĠæĽ´æĸ° OpenGL Ġshader ä¸ŃçļĦ åıĤæķ° åĢ¼ ĊĠĠ Ġ* Ġ@ param Ġvalue ĠFloat Ġ åħ·ä½ĵ çļĦåıĤæķ° åĢ¼ Ġ 0 . 0 Ġ~ Ġ 1 . 0 ĊĠĠ Ġ*/ ĊĠ Ġfun Ġupdate Effect Param ( action Id : ĠInt , Ġeffect Name : ĠString , Ġparam Name : ĠString , Ġvalue : ĠFloat ) Ġ{ ĊĠĠĠ Ġupdate Effect Param ( m Handle , Ġaction Id , Ġeffect Name , Ġparam Name , Ġvalue ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġexternal Ġfun Ġupdate Effect Param ( handle : ĠLong , Ġaction Id : ĠInt , Ġeffect Name : ĠString , Ġparam Name : ĠString , Ġvalue : ĠFloat ) Ċ Ċ // Ġ Ġ/** Ċ // ĠĠ Ġ* ĠæĽ´æĸ° æĮĩå®ļ çī¹ æķĪ çļĦåıĤæķ° Ċ // ĠĠ Ġ* Ġ@ param Ġaction Id ĠInt ĠéľĢè¦ģ æĽ´æĸ° åĵª ä¸ª çī¹ æķĪ , Ġ å¿ħé¡» ä¸º addAction è¿ĶåĽŀ çļĦ action Id Ċ // ĠĠ Ġ* Ġ@ param Ġeffect Name ĠString ĠéľĢè¦ģ æĽ´æĸ° çī¹ æķĪ çļĦ åĲįåŃĹ , Ġ è¿Ļä¸ª æĺ¯åľ¨ json ä¸Ń å®ļ å¥½çļĦ Ċ // ĠĠ Ġ* Ġ@ param Ġparam Name ĠString ĠæĽ´æĸ° OpenGL Ġshader ä¸ŃçļĦ åıĤæķ° åĢ¼ Ċ // ĠĠ Ġ* Ġ@ param Ġvalue ĠFloat Array Ġ åħ·ä½ĵ çļĦåıĤæķ° åĢ¼ Ġ 0 . 0 Ġ~ Ġ 1 . 0 Ċ // ĠĠ Ġ*/ Ċ // Ġ Ġfun Ġupdate Action Param ( action Id : ĠInt , Ġeffect Name : ĠString , Ġparam Name : ĠString , Ġvalue : ĠFloat Array ) Ġ{ Ċ // ĠĠĠ Ġupdate Action Param ( m Handle , Ġaction Id , Ġeffect Name , Ġparam Name , Ġvalue ) Ċ // Ġ Ġ} Ċ // Ċ // Ġ Ġprivate Ġexternal Ġfun Ġupdate Action Param ( handle : ĠLong , Ġaction Id : ĠInt , Ġeffect Name : ĠString , Ġparam Name : ĠString , Ġvalue : ĠFloat Array ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠåĪłéĻ¤ ä¸Ģä¸ª çī¹ æķĪ ĊĠĠ Ġ* Ġ@ param Ġaction Id ĠéľĢè¦ģ åĪłéĻ¤ åĵª ä¸ª çī¹ æķĪ , Ġ å¿ħé¡» ä¸º addAction è¿ĶåĽŀ çļĦ action Id ĊĠĠ Ġ*/ ĊĠ Ġfun Ġdelete Effect ( action Id : ĠInt ) Ġ{ ĊĠĠĠ Ġif Ġ( m Handle Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġdelete Effect ( m Handle , Ġaction Id ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġexternal Ġfun Ġdelete Effect ( handle : ĠLong , Ġaction Id : ĠInt ) ĊĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè®¾ç½® å½ķ åĪ¶ è§Ĵ åº¦ ĊĠĠ Ġ* Ġ@ param Ġrotation Ġ è§Ĵ åº¦ åĮħåĲ« Ġ 0 Ġ 9 0 Ġ 1 8 0 Ġ 2 7 0 ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġfun Ġset Record Rotation ( rotation : ĠInt ) Ġ{ ĊĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè®¾ç½® éĿĻ éŁ³ å½ķ åĪ¶ ĊĠĠ Ġ* Ġ éĿĻ éŁ³ å½ķ åĪ¶ éľĢè¦ģ æĬĬ éº ¦ åħĭ é£İ éĩĩ éĽĨ åĪ° çļĦæķ°æį® åħ¨éĥ¨ è®¾ç½®ä¸º 0 åį³åı¯ ĊĠĠ Ġ* Ġ@ param Ġmute Ġtrue ä¸º éĿĻ éŁ³ ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġfun Ġset Mute ( mute : ĠBoolean ) Ġ{ ĊĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Now (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( android . os . Build . VERSION . SDK _ INT Ġ>= Ġ 2 4 ){ ĊĠĠĠĠĠ ĠSimpleDateFormat (" yyyy - MM - dd - HH - mm ", ĠLocale . US ). format ( Date ()) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġval Ġt ms Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠ Ġt ms . get ( Calendar . YEAR ). toString () Ġ+ Ġ"-" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ms . get ( Calendar . MONTH ). toString () Ġ+ Ġ"-" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ms . get ( Calendar . DAY _ OF _ MONTH ). toString () Ġ+ Ġ"-" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ms . get ( Calendar . HOUR _ OF _ DAY ). toString () Ġ+ Ġ"-" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ms . get ( Calendar . MINUTE ). toString () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ å¼Ģå§ĭ å½ķ åĪ¶ ä¸Ģ æ®µ è§Ĩé¢ĳ ĊĠĠ Ġ* Ġ@ param Ġpath Ġ å½ķ åĪ¶ çļĦ è§Ĩé¢ĳ ä¿ĿåŃĺ çļĦ åľ°åĿĢ ĊĠĠ Ġ* Ġ@ param Ġwidth Ġ å½ķ åĪ¶ è§Ĩé¢ĳ çļĦ å®½ , ĠSDK ä¸Ń ä¼ļ åģļ 1 6 åĢ į æķ´æķ° çļĦ è¿Ĳç®Ĺ , Ġ åı¯èĥ½ æľĢç»Ī è¾ĵåĩº è§Ĩé¢ĳ çļĦ å®½ åĴĮ è®¾ç½® è¿Ľ åİ» çļĦ ä¸į ä¸Ģèĩ´ ĊĠĠ Ġ* Ġ@ param Ġheight Ġ å½ķ åĪ¶ è§Ĩé¢ĳ çļĦ é«ĺ , ĠSDK ä¸Ń ä¼ļ åģļ 1 6 åĢ į æķ´æķ° çļĦ è¿Ĳç®Ĺ , Ġ åı¯èĥ½ æľĢç»Ī è¾ĵåĩº è§Ĩé¢ĳ çļĦ å®½ åĴĮ è®¾ç½® è¿Ľ åİ» çļĦ ä¸į ä¸Ģèĩ´ ĊĠĠ Ġ* Ġ@ param Ġvideo Bit Rate Ġ è§Ĩé¢ĳ è¾ĵåĩº çļĦ çłģ çİĩ , Ġå¦Ĥæŀľ è®¾ç½® çļĦæĺ¯ 2 0 0 0 , Ġ åĪĻ ä¸º 2 M , Ġ æľĢç»Ī è¾ĵåĩº çļĦ åĴĮ è®¾ç½® çļĦ åı¯èĥ½ æľī å·® åĪ« ĊĠĠ Ġ* Ġ@ param Ġframe Rate Ġ è§Ĩé¢ĳ è¾ĵåĩº çļĦ å¸ § çİĩ ĊĠĠ Ġ* Ġ@ param Ġuse Hard Ware Encode Ġæĺ¯åĲ¦ ä½¿çĶ¨ ç¡¬ ç¼ĸçłģ , Ġå¦Ĥæŀľ è®¾ç½®ä¸º true , Ġ èĢĮ ç¡¬ ç¼ĸçłģ ä¸į æĶ¯æĮģ , åĪĻ èĩªåĬ¨ åĪĩæį¢ åĪ° è½¯ ç¼ĸçłģ ĊĠĠ Ġ* Ġ@ param Ġaudio Sample Rate Ġ éŁ³ é¢ĳ çļĦ éĩĩ æł· çİĩ ĊĠĠ Ġ* Ġ@ param Ġaudio Channel Ġ éŁ³ é¢ĳ çļĦ å£° éģĵ æķ° ĊĠĠ Ġ* Ġ@ param Ġaudio Bit Rate Ġ éŁ³ é¢ĳ çļĦ çłģ çİĩ ĊĠĠ Ġ* Ġ@ param Ġduration ĠéľĢè¦ģ å½ķ åĪ¶ å¤ļå°ĳ æĹ¶éĹ´ ĊĠĠ Ġ* Ġ@ return ĠInt ĠErrorCode . SUCCESS Ġä¸º æĪĲåĬŁ , åħ¶å®ĥ ä¸º å¤±è´¥ ĊĠĠ Ġ* Ġ@ throws ĠInit Recorder Fail Exception ĊĠĠ Ġ*/ ĊĠ Ġ@ Throws ( Init Recorder Fail Exception :: class ) ĊĠ Ġfun Ġstart Recording ( info : ĠVideo Export Info , Ġduration : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( m Recording ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . RECORD ING ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġm Timer . start (( duration Ġ/ Ġm Speed . value ). toInt ()) ĊĠĠĠĠĠ Ġ// ĠTODO Ġm Audio Record Service . sample Rate ĊĠĠĠĠĠ Ġreset Stop State () ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġm Audio Record Service . init ( m Speed . value ) ĊĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠAudio ConfigurationException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġm Music Info ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Music Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġm Audio Player ?. resume () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġm Music Playing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠ Ġm Audio Player ?. start ( it . path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġm Audio Record Service . start () ĊĠĠĠĠĠ Ġset Speed ( m Handle , Ġ 1 . 0 f Ġ/ Ġm Speed . value ) ĊĠĠĠĠĠ Ġval Ġtag Ġ= Ġ" tr inity -" Ġ+ ĠBuild Config . VERSION _ NAME Ġ+ Ġ"-" Ġ+ Ġget Now () ĊĠĠĠĠĠ Ġstart Encode ( ĊĠĠĠĠĠĠĠ Ġm Handle , Ġinfo . path , Ġinfo . width , Ġinfo . height , Ġinfo . video Bit Rate , Ġinfo . frame Rate , ĊĠĠĠĠĠĠĠ Ġinfo . media Codec Encode , ĊĠĠĠĠĠĠĠ Ġinfo . sample Rate , Ġinfo . channel Count , Ġinfo . audio Bit Rate , ĊĠĠĠĠĠĠĠ Ġtag ) ĊĠĠĠĠĠ Ġm Recording Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠErrorCode . SUCCESS ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ åģľæŃ¢ å½ķ åĪ¶ ĊĠĠ Ġ*/ ĊĠ Ġfun Ġstop Recording () Ġ{ ĊĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠ ĠLog . i (" tr inity ", Ġ" stop Encode ") ĊĠĠĠĠĠ Ġif Ġ(! m Recording ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġm Recording Ġ= Ġfalse ĊĠĠĠĠĠ Ġm Timer . stop () ĊĠĠĠĠĠ Ġm Audio Player ?. pause () ĊĠĠĠĠĠ Ġm Player Service ?. pause Ac company () ĊĠĠĠĠĠ Ġm Player Service Ġ= Ġnull ĊĠĠĠĠĠ Ġm Audio Record Service . stop () ĊĠĠĠĠĠ Ġm Audio Record Service . destroy Audio Recorder Processor () ĊĠĠĠĠĠ Ġstop Encode ( m Handle ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġåľ¨ activity Ġon Destroy æĸ¹æ³ķ ä¸Ń è°ĥçĶ¨ , éĩĬæĶ¾ åħ¶å®ĥ èµĦæºĲ ĊĠĠ Ġ*/ ĊĠ Ġfun Ġrelease () Ġ{ ĊĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠ Ġm Audio Player ?. stop () ĊĠĠĠĠĠ Ġm Audio Player ?. release () ĊĠĠĠĠĠ Ġm Timer . release () ĊĠĠĠĠĠ Ġm Player Service ?. stop Ac company () ĊĠĠĠĠĠ Ġm Player Service ?. stop () ĊĠĠĠĠĠ Ġm Orientation Listener . disable () ĊĠĠĠĠĠ Ġm Face Detection ?. release Detection () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġèİ·åıĸ äºº èĦ ¸ ä¿¡æģ¯ , Ġ çĶ± c ++ è°ĥçĶ¨ ĊĠĠ Ġ* Ġ@ return ĠArray < Face Detection Report >? Ġ äºº èĦ ¸ ä¿¡æģ¯ éĽĨåĲĪ ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġprivate Ġfun Ġget Face Detection Reports () Ġ= Ġm Face Detection Reports ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġèİ·åıĸ é¢Ħ è§Ī å®½ ï¼Į çĶ± c ++ è°ĥçĶ¨ ï¼Į åĪĽå»º framebuffer ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġprivate Ġfun Ġget Camera Width (): ĠInt Ġ{ ĊĠĠĠ Ġif Ġ( m Surface Texture Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġm Camera . getWidth () ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġèİ·åıĸ é¢Ħ è§Ī å®½ ï¼Į çĶ± c ++ è°ĥçĶ¨ ï¼Į åĪĽå»º framebuffer ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġprivate Ġfun Ġget Camera Height (): ĠInt Ġ{ ĊĠĠĠ Ġif Ġ( m Surface Texture Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġm Camera . getHeight () ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ çĶ± c ++ åĽŀè°ĥ åĽŀ æĿ¥ ĊĠĠ Ġ* Ġ å¼ĢåĲ¯ é¢Ħ è§Ī ĊĠĠ Ġ* Ġ@ param Ġtexture Id ĠO ES ç±»åŀĭçļĦ id ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġprivate Ġfun Ġstart Preview From Native ( texture Id : ĠInt ) Ġ{ ĊĠĠĠ ĠLog . i ( Constants . TAG , Ġ" enter Ġstart Preview From Native ") ĊĠĠĠ Ġm Surface Texture Ġ= ĠSurface Texture ( texture Id ) ĊĠĠĠ Ġm Surface Texture ?. let Ġ{ Ċ // ĠĠĠĠĠ Ġit . setOn Frame Available Listener Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġon Frame Available ( m Handle ) Ċ // ĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( m Request Preview ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Request Preview Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġm Camera . set AspectRatio ( m AspectRatio ) ĊĠĠĠĠĠĠĠ Ġm Camera . start ( it , Ġm Resolution ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠLog . i ( Constants . TAG , Ġ" leave Ġstart Preview From Native ") ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ çĶ± c ++ åĽŀè°ĥ åĽŀ æĿ¥ ĊĠĠ Ġ* Ġ åĪ·æĸ° çĽ¸ æľº éĩĩ éĽĨ çļĦåĨħå®¹ ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġprivate Ġfun Ġupdate TexImage From Native () Ġ{ ĊĠĠĠ Ġm Surface Texture ?. update TexImage () ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġsurface åĪĽå»º åĽŀè°ĥ ĊĠĠ Ġ* Ġ çĶ± c ++ åĽŀè°ĥ ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġprivate Ġfun Ġon Surface Created () Ġ{ ĊĠĠĠ Ġm On Render Listener ?. on Surface Created () ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġtexture åĽŀè°ĥ ĊĠĠ Ġ* Ġåı¯ä»¥ åģļ çī¹ æķĪ å¤ĦçĲĨ , Ġtexture Id ä¸º TEXTURE _ 2 D ç±»åŀĭ ĊĠĠ Ġ* Ġ@ param Ġtexture Id Ġ çĽ¸ æľº texture Id ĊĠĠ Ġ* Ġ@ param Ġwidth Ġtexture å®½ ĊĠĠ Ġ* Ġ@ param Ġheight Ġtexture é«ĺ ĊĠĠ Ġ* Ġ@ return Ġè¿ĶåĽŀ å¤ĦçĲĨ è¿ĩ çļĦ texture Id , Ġ å¿ħé¡» ä¸º TEXTURE _ 2 D ç±»åŀĭ ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġprivate Ġfun Ġon Draw Frame ( texture Id : ĠInt , Ġwidth : ĠInt , Ġheight : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġm On Render Listener ?. on Draw Frame ( texture Id , Ġwidth , Ġheight , Ġm Texture Matrix ) Ġ?: Ġ- 1 ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġsurface éĶĢ æ¯ ģ åĽŀè°ĥ ĊĠĠ Ġ* Ġ çĶ± c ++ åĽŀè°ĥ ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġprivate Ġfun Ġon Surface Destroy () Ġ{ ĊĠĠĠ Ġm On Render Listener ?. on Surface Destroy () ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ çĶ± c ++ è°ĥçĶ¨ ĊĠĠ Ġ* Ġèİ·åıĸ Texture çŁ©éĺµ ĊĠĠ Ġ* Ġåľ¨ OpenGL æĺ¾ç¤º æĹ¶ ä½¿çĶ¨ ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġprivate Ġfun Ġget Texture Matrix (): ĠFloat Array Ġ{ ĊĠĠĠ Ġm Surface Texture ?. get Transform Matrix ( m Texture Matrix ) ĊĠĠĠ Ġreturn Ġm Texture Matrix ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ çĶ± c ++ åĽŀè°ĥ åĽŀ æĿ¥ ĊĠĠ Ġ* ĠåĪĽå»º ç¡¬ ç¼ĸçłģ ĊĠĠ Ġ* Ġ@ param Ġwidth Ġ å½ķ åĪ¶ è§Ĩé¢ĳ çļĦ å®½ ĊĠĠ Ġ* Ġ@ param Ġheight Ġ å½ķ åĪ¶ è§Ĩé¢ĳ çļĦ é«ĺ ĊĠĠ Ġ* Ġ@ param Ġvideo Bit Rate Ġ å½ķ åĪ¶ è§Ĩé¢ĳ çļĦ çłģ çİĩ ĊĠĠ Ġ* Ġ@ param Ġframe Rate Ġ å½ķ åĪ¶ è§Ĩé¢ĳ çļĦ å¸ § çİĩ ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġprivate Ġfun Ġcreate Media Codec Surface Encoder From Native ( width : ĠInt , Ġheight : ĠInt , Ġvideo Bit Rate : ĠInt , Ġframe Rate : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠ Ġval Ġret Ġ= Ġm Surface Encoder . start ( width , Ġheight , Ġvideo Bit Rate , Ġframe Rate ) ĊĠĠĠĠĠ Ġm Surface Ġ= Ġm Surface Encoder . getInput Surface () ĊĠĠĠĠĠ Ġret ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠ Ġ- 1 ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ çĶ± c ++ åĽŀè°ĥ åĽŀ æĿ¥ ĊĠĠ Ġ* Ġèİ·åıĸ h 2 6 4 æķ°æį® ĊĠĠ Ġ* Ġ@ param Ġdata Ġh 2 6 4 Ġbuffer , Ġ çĶ± c ++ åĪĽå»º ä¼łéĢĴ åĽŀ æĿ¥ ĊĠĠ Ġ* Ġ@ return Ġè¿ĶåĽŀ h 2 6 4 æķ°æį®çļĦ å¤§å°ı , Ġè¿ĶåĽŀ 0 æĹ¶ æķ°æį® æĹł æķĪ ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġprivate Ġfun Ġdrain Encoder From Native ( data : ĠByteArray ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġm Surface Encoder . drain Encoder ( data ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ çĶ± c ++ åĽŀè°ĥ åĽŀ æĿ¥ ĊĠĠ Ġ* Ġèİ·åıĸ å½ĵåīį ç¼ĸçłģ çļĦæĹ¶éĹ´ , Ġæ¯ « ç§Ĵ ĊĠĠ Ġ* Ġ@ return Ġå½ĵåīį ç¼ĸçłģ çļĦæĹ¶éĹ´ Ġm Buffer Info . presentation Time Us ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġprivate Ġfun ĠgetLast Presentation Time Us From Native (): ĠLong Ġ{ ĊĠĠĠ Ġreturn Ġm Surface Encoder . getLast Presentation Time Us () ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ çĶ± c ++ åĽŀè°ĥ åĽŀ æĿ¥ ĊĠĠ Ġ* Ġèİ·åıĸ ç¼ĸçłģ åĻ¨ çļĦ Surface ĊĠĠ Ġ* Ġ@ return Ġ ç¼ĸçłģ åĻ¨ çļĦ Surface Ġmedia Codec . create Input Surface () ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġprivate Ġfun Ġget Encode Surface From Native (): ĠSurface ? Ġ{ ĊĠĠĠ Ġreturn Ġm Surface ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ çĶ± c ++ åĽŀè°ĥ åĽŀ æĿ¥ ĊĠĠ Ġ* Ġ åıĳéĢģ end Ġof Ġstream ä¿¡åı· ç»Ļ ç¼ĸçłģ åĻ¨ ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġprivate Ġfun Ġsignal EndOf InputStream () Ġ{ ĊĠĠĠ Ġm Surface Encoder . signal EndOf InputStream () ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ çĶ± c ++ åĽŀè°ĥ åĽŀ æĿ¥ ĊĠĠ Ġ* Ġ åħ³éĹŃ media Codec ç¼ĸçłģ åĻ¨ ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġprivate Ġfun Ġclose Media Codec Called From Native () Ġ{ ĊĠĠĠ Ġm Surface Encoder . release () ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ çĶ± c ++ åĽŀè°ĥ åĽŀ æĿ¥ ĊĠĠ Ġ* Ġ éĩĬæĶ¾ å½ĵåīį çļĦ camera ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" unused ") ĊĠ Ġprivate Ġfun Ġrelease Camera From Native () Ġ{ ĊĠĠĠ ĠLog . i ( Constants . TAG , Ġ" enter Ġrelease Camera From Native ") ĊĠĠĠ Ġstop Preview () ĊĠĠĠ Ġm Surface Texture ?. setOn Frame Available Listener ( null ) ĊĠĠĠ Ġm Surface Texture Ġ= Ġnull ĊĠĠĠ ĠLog . i ( Constants . TAG , Ġ" leave Ġrelease Camera From Native ") ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠåĪĽå»º c ++ å¯¹è±¡ ĊĠĠ Ġ* Ġ@ return Ġè¿ĶåĽŀ c ++ å¯¹è±¡ åľ°åĿĢ , Ġè¿ĶåĽŀ Ġ<= 0 ĠæĹ¶ åĪĽå»º å¤±è´¥ ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġexternal Ġfun Ġcreate (): ĠLong ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠåĪĿå§ĭåĮĸ OpenGL ä¸Ĭä¸ĭ æĸĩ ĊĠĠ Ġ* Ġ@ param Ġhandle Ġc ++ å¯¹è±¡ æĮĩéĴĪ åľ°åĿĢ ĊĠĠ Ġ* Ġ@ param Ġsurface Ġsurface å¯¹è±¡ , ĠåĪĽå»º EGL Surface éľĢè¦ģ ĊĠĠ Ġ* Ġ@ param Ġwidth Ġsurface Ġ å®½ , ĠåĪĽå»º EGL Surface éľĢè¦ģ ĊĠĠ Ġ* Ġ@ param Ġheight Ġsurface Ġ é«ĺ , ĠåĪĽå»º EGL Surface éľĢè¦ģ ĊĠĠ Ġ* Ġ@ param Ġcamera Facing Id Ġ åīį åĲİ æĳ Ħ åĥı å¤´ id ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġexternal Ġfun Ġprepare EGL Context ( handle : ĠLong , Ġsurface : ĠSurface , Ġwidth : ĠInt , Ġheight : ĠInt ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠåĪĽå»º EGL Surface ĊĠĠ Ġ* Ġ@ param Ġhandle Ġc ++ å¯¹è±¡ æĮĩéĴĪ åľ°åĿĢ ĊĠĠ Ġ* Ġ@ param Ġsurface Ġsurface å¯¹è±¡ ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġexternal Ġfun Ġcreate Window Surface ( handle : ĠLong , Ġsurface : ĠSurface ) ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ éĩįæĸ° è®¾ç½® ç»ĺ åĪ¶ åĮºåŁŁ å¤§å°ı ĊĠĠ Ġ* Ġ@ param Ġhandle Ġc ++ å¯¹è±¡ æĮĩéĴĪ åľ°åĿĢ ĊĠĠ Ġ* Ġ@ param Ġwidth ĠéľĢè¦ģ ç»ĺ åĪ¶ çļĦ å®½ ĊĠĠ Ġ* Ġ@ param Ġheight ĠéľĢè¦ģ ç»ĺ åĪ¶ çļĦ é«ĺ ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġexternal Ġfun Ġset Render Size ( handle : ĠLong , Ġwidth : ĠInt , Ġheight : ĠInt ) ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ ç»ĺ åĪ¶ ä¸Ģ å¸ § åĨħå®¹ ĊĠĠ Ġ* Ġ@ param Ġhandle Ġc ++ å¯¹è±¡ åľ°åĿĢ ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġexternal Ġfun Ġon Frame Available ( handle : ĠLong ) ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè®¾ç½® é¢Ħ è§Ī æĺ¾ç¤º ç±»åŀĭ ĊĠĠ Ġ* Ġ@ param Ġhandle ĠLong ĊĠĠ Ġ* Ġ@ param Ġtype ĠInt Ġ 0 : Ġfix _ xy Ġ 1 : Ġcrop ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġexternal Ġfun Ġset Render Type ( handle : ĠLong , Ġtype : ĠInt ) ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè®¾ç½® å½ķ åĪ¶ éĢŁåº¦ ĊĠĠ Ġ* Ġ@ param Ġhandle Ġc ++ åľ°åĿĢ ĊĠĠ Ġ* Ġ@ param Ġspeed Ġ å½ķ åĪ¶ çļĦ éĢŁåº¦ , Ġ 0 . 2 5 f , Ġ 0 . 5 f , Ġ 1 . 0 f , Ġ 2 . 0 f , Ġ 4 . 0 f ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġexternal Ġfun Ġset Speed ( handle : ĠLong , Ġspeed : ĠFloat ) ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè®¾ç½® çĶ» å¹ ħ åĪ° ç»ĺ åĪ¶ åĴĮ ç¼ĸçłģ ĊĠĠ Ġ* Ġ@ param Ġhandle Ġc ++ å¯¹è±¡ åľ°åĿĢ ĊĠĠ Ġ* Ġ@ param Ġframe Ġ çĶ» å¹ ħ æł·å¼ı Ġ 0 : Ġ åŀ Ĥ çĽ´ Ġ 1 : Ġæ¨ ª åĲĳ Ġ 2 : Ġ æĸ¹ å½¢ ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġexternal Ġfun Ġset Frame ( handle : ĠLong , Ġframe : ĠInt ) ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè®¾ç½® texture çŁ©éĺµ ĊĠĠ Ġ* Ġ@ param Ġhandle Ġc ++ å¯¹è±¡ åľ°åĿĢ ĊĠĠ Ġ* Ġ@ param Ġmatrix Ġ çŁ©éĺµ ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġexternal Ġfun Ġupdate Texture Matrix ( handle : ĠLong , Ġmatrix : ĠFloat Array ) ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ å¼Ģå§ĭ å½ķ åĪ¶ ĊĠĠ Ġ* Ġ@ param Ġhandle Ġc ++ å¯¹è±¡ åľ°åĿĢ ĊĠĠ Ġ* Ġ@ param Ġwidth Ġ å½ķ åĪ¶ è§Ĩé¢ĳ çļĦ å®½ ĊĠĠ Ġ* Ġ@ param Ġheight Ġ å½ķ åĪ¶ è§Ĩé¢ĳ çļĦ é«ĺ ĊĠĠ Ġ* Ġ@ param Ġvideo Bit Rate Ġ å½ķ åĪ¶ è§Ĩé¢ĳ çļĦ çłģ çİĩ ĊĠĠ Ġ* Ġ@ param Ġframe Rate Ġ å½ķ åĪ¶ è§Ĩé¢ĳ çļĦ å¸ § çİĩ ĊĠĠ Ġ* Ġ@ param Ġuse Hard Ware Encode Ġæĺ¯åĲ¦ ä½¿çĶ¨ ç¡¬ ç¼ĸçłģ ĊĠĠ Ġ* Ġ@ param Ġstrategy ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġexternal Ġfun Ġstart Encode ( handle : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Bit Rate : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe Rate : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Hard Ware Encode : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Sample Rate : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Channel : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Bit Rate : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag : ĠString ) ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ åģľæŃ¢ å½ķ åĪ¶ ĊĠĠ Ġ* Ġ@ param Ġhandle Ġc ++ å¯¹è±¡ åľ°åĿĢ ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġexternal Ġfun Ġstop Encode ( handle : ĠLong ) ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ éĶĢ æ¯ ģ EGL Surface ĊĠĠ Ġ* Ġ@ param Ġhandle Ġc ++ å¯¹è±¡ åľ°åĿĢ ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġexternal Ġfun Ġdestroy Window Surface ( handle : ĠLong ) ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ éĶĢ æ¯ ģ OpenGL Ġä¸Ĭ ä¸ĭ æĸĩ , Ġ éĶĢ æ¯ ģ ä¹ĭåĲİ , Ġ ä¸įèĥ½ åľ¨ è°ĥçĶ¨ ç»ĺ åĪ¶ åĩ½æķ° , Ġä¸į çĦ¶ ä¼ļ åĩº éĶĻ æĪĸèĢħ é»ĳ å±ı ĊĠĠ Ġ* Ġ@ param Ġhandle Ġc ++ å¯¹è±¡ åľ°åĿĢ ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġexternal Ġfun Ġdestroy EGL Context ( handle : ĠLong ) ĊĊĠ Ġprivate Ġexternal Ġfun Ġswitch Camera ( handle : ĠLong ) ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġæ·»åĬł ä¸Ģä¸ª æ»¤ éķľ ĊĠĠ Ġ* Ġ@ param Ġhandle ĠLong Ġc ++ Ġå¯¹è±¡ åľ°åĿĢ ĊĠĠ Ġ* Ġ@ param Ġconfig Path ĠString Ġæ » ¤ éķľ éħįç½® åľ°åĿĢ ĊĠĠ Ġ* Ġ@ return ĠInt Ġè¿ĶåĽŀ å½ĵåīį æ»¤ éķľ çļĦ åĶ¯ä¸Ģ id ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġexternal Ġfun Ġadd Filter ( handle : ĠLong , Ġconfig Path : ĠString ): ĠInt ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠæĽ´æĸ° ä¸Ģä¸ª æ»¤ éķľ ĊĠĠ Ġ* Ġ@ param Ġhandle ĠLong Ġc ++ å¯¹è±¡ åľ°åĿĢ ĊĠĠ Ġ* Ġ@ param Ġconfig Path ĠString Ġæ » ¤ éķľ éħįç½® åľ°åĿĢ ĊĠĠ Ġ* Ġ@ param ĠstartTime ĠInt Ġæ » ¤ éķľ å¼Ģå§ĭ æĹ¶éĹ´ ĊĠĠ Ġ* Ġ@ param ĠendTime ĠInt Ġæ » ¤ éķľ ç»ĵæĿŁ æĹ¶éĹ´ , Ġå¦Ĥæŀľ ä¸ĢçĽ´ æĺ¾ç¤º , åı¯ä»¥ ä¼łåħ¥ Int . MAX ĊĠĠ Ġ* Ġ@ param Ġaction Id ĠInt ĠéľĢè¦ģ æĽ´æĸ° åĵª ä¸ª æ»¤ éķľ , Ġ å¿ħé¡» ä¸º add Filter è¿ĶåĽŀ çļĦ action Id ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġexternal Ġfun Ġupdate Filter ( handle : ĠLong , Ġconfig Path : ĠString , ĠstartTime : ĠInt , ĠendTime : ĠInt , Ġaction Id : ĠInt ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠåĪłéĻ¤ ä¸Ģä¸ª æ»¤ éķľ ĊĠĠ Ġ* Ġ@ param Ġhandle ĠLong Ġc ++ å¯¹è±¡ åľ°åĿĢ ĊĠĠ Ġ* Ġ@ param Ġaction Id ĠInt ĠéľĢè¦ģ æĽ´æĸ° åĵª ä¸ª æ»¤ éķľ , Ġ å¿ħé¡» ä¸º add Filter è¿ĶåĽŀ çļĦ action Id ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġexternal Ġfun Ġdelete Filter ( handle : ĠLong , Ġaction Id : ĠInt ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠåĪłéĻ¤ c ++ å¯¹è±¡ ĊĠĠ Ġ* Ġ@ param Ġhandle Ġc ++ å¯¹è±¡ åľ°åĿĢ ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġexternal Ġfun Ġrelease ( handle : ĠLong ) Ċ } Ċ