/** Ċ Ġ* ĠCopyright Ġ 2 0 2 0 . ĠHu awei ĠTechnologies ĠCo ., ĠLtd . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* Ġ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 . hu awei . ml kit . sample . util Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġkotlin . jvm . Synchron ized Ċ import Ġkotlin . Throws Ċ import Ġandroid . hardware . Camera . Picture Callback Ċ import Ġandroid . graphics . Image Format Ċ import Ġandroid . hardware . Camera . Preview Callback Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . hardware . Camera . Camera Info Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . Surface View Ċ import Ġandroid . graphics . Surface Texture Ċ import Ġandroid . view . Surface Holder Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . hardware . Camera . Auto Focus Callback Ċ import Ġandroid . graphics . Rect F Ċ import Ġcom . hu awei . h ms . ml sdk . common . ML Frame Ċ import Ġcom . hu awei . h mf . tasks . On Success Listener Ċ import Ġcom . hu awei . h mf . tasks . On Failure Listener Ċ import Ġcom . hu awei . ml kit . sample . trans actor . Local Object Trans actor Ċ import Ġcom . hu awei . ml kit . sample . views . graphic . Local Object Graphic Ċ import Ġcom . hu awei . ml kit . sample . trans actor . Remote Land mark Trans actor Ċ import Ġcom . hu awei . ml kit . sample . views . graphic . Remote Land mark Graphic Ċ import Ġcom . hu awei . h ms . ml sdk . sc d . ML Scene Detection Analyzer Ċ import Ġcom . hu awei . h ms . ml sdk . sc d . ML Scene Detection Analyzer Setting Ċ import Ġcom . hu awei . h ms . ml sdk . sc d . ML Scene Detection Analyzer Factory Ċ import Ġcom . hu awei . ml kit . sample . views . graphic . Scene Detection Graphic Ċ import Ġcom . hu awei . ml kit . sample . trans actor . Scene Detection Trans actor Ċ import Ġandroid . rend erscript . Render Script Ċ import Ġcom . hu awei . ml kit . sample . trans actor . Image Segmentation Trans actor Ċ import Ġandroid . util . Sparse Array Ċ import Ġandroid . widget . Toast Ċ import Ġandroid . rend erscript . Allocation Ċ import Ġandroid . rend erscript . Script Intr insic Blur Ċ import Ġcom . hu awei . ml kit . sample . trans actor . Still Image Segmentation Trans actor Ċ import Ġcom . hu awei . ml kit . sample . trans actor . Local Image Classification Trans actor Ċ import Ġcom . hu awei . ml kit . sample . views . graphic . Local Image Classification Graphic Ċ import Ġcom . hu awei . ml kit . sample . trans actor . Remote Image Classification Trans actor Ċ import Ġcom . hu awei . ml kit . sample . views . graphic . Remote Image Classification Graphic Ċ import Ġcom . hu awei . ml kit . sample . R Ċ import Ġandroid . os . Build Ċ import Ġandroid . provider . Documents Contract Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . content . Content U ris Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Environment Ċ import Ġandroid . media . Media Scanner Connection Ċ import Ġandroid . media . Media Scanner Connection . On Scan Completed Listener Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Y uv Image Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . os . Parcel FileDescriptor Ċ import Ġandroid . rend erscript . Script Intr insic Y uv To RGB Ċ import Ġandroid . content . SharedPreferences Ċ import Ġkotlin . jvm . Jvm Over loads Ċ import Ġandroid . content . res . Typed Array Ċ import Ġandroid . view . View . Measure Spec Ċ import Ġandroid . graphics . Shader Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . os . Parcel Ċ import Ġandroid . graphics . X fer mode Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . graphics . Port er D uff X fer mode Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . graphics . Dash Path Effect Ċ import Ġandroid . widget . GridView Ċ import Ġandroid . widget . Abs ListView Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . util . Log Ċ import Ġjava . lang . Exception Ċ import Ġjava . nio . ByteBuffer Ċ Ċ object ĠCommon Utils Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Common Utils " ĊĠĠĠ Ġconst Ġval ĠPER MISSION _ CODE _ STORAGE Ġ= Ġ 1 ĊĠĠĠ Ġconst Ġval ĠPER MISSION _ CODE _ CAMERA Ġ= Ġ 2 ĊĠĠĠ Ġconst Ġval ĠREQUEST _ PIC Ġ= Ġ 3 ĊĠĠĠ Ġconst Ġval ĠREQUEST _ TA KE _ PH OTO _ CODE Ġ= Ġ 4 ĊĠĠĠ Ġconst Ġval ĠSTORAGE _ PERMISSION Ġ= ĠManifest . permission . WRITE _ EXTERNAL _ STORAGE ĊĠĠĠ Ġconst Ġval ĠCAM ERA _ PERMISSION Ġ= ĠManifest . permission . CAMERA ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandle ĠByteBuffer ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġsrc ĠHigh Ġresolution ĠByteBuffer ĊĠĠĠĠ Ġ* Ġ@ param Ġdst ĠLow Ġresolution ĠByteBuffer ĊĠĠĠĠ Ġ* Ġ@ param Ġsrc Width ĠHigh Ġresolution Ġwide ĊĠĠĠĠ Ġ* Ġ@ param Ġsrc Height ĠHigh Ġresolution Ġheight ĊĠĠĠĠ Ġ* Ġ@ param Ġdst Width ĠLow Ġresolution Ġwide ĊĠĠĠĠ Ġ* Ġ@ param Ġdst Height ĠLow Ġresolution Ġheight ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhandle ByteBuffer ( ĊĠĠĠĠĠĠĠ Ġsrc : ĠByteBuffer , Ġdst : ĠByteBuffer , ĊĠĠĠĠĠĠĠ Ġsrc Width : ĠInt , Ġsrc Height : ĠInt , Ġdst Width : ĠInt , Ġdst Height : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġy : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġx : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġsrc Y : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġsrc X : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġsrc Index : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġxr Int Float Ġ= Ġ( src Width Ġshl Ġ 1 6 ) Ġ/ Ġdst Width Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġy r Int Float Ġ= Ġ( src Height Ġshl Ġ 1 6 ) Ġ/ Ġdst Height Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġdst Uv Ġ= Ġdst Height Ġ* Ġdst Width ĊĠĠĠĠĠĠĠ Ġval Ġsrc Uv Ġ= Ġsrc Height Ġ* Ġsrc Width ĊĠĠĠĠĠĠĠ Ġvar Ġdst Uv Y Scan line Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġsrc Uv Y Scan line Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġdst Y Slice Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġsrc Y Slice : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġsp : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġdp : ĠInt ĊĠĠĠĠĠĠĠ Ġy Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( y Ġ< Ġdst Height Ġand Ġ 7 . inv ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsrc Y Ġ= Ġy Ġ* Ġy r Int Float Ġshr Ġ 1 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsrc Y Slice Ġ= Ġsrc Y Ġ* Ġsrc Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( y Ġand Ġ 1 Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst Uv Y Scan line Ġ= Ġdst Uv Ġ+ Ġy Ġ/ Ġ 2 Ġ* Ġdst Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsrc Uv Y Scan line Ġ= Ġsrc Uv Ġ+ Ġsrc Y Ġ/ Ġ 2 Ġ* Ġsrc Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( x Ġ< Ġdst Width Ġand Ġ 7 . inv ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsrc X Ġ= Ġx Ġ* Ġxr Int Float Ġshr Ġ 1 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst . put ( x Ġ+ Ġdst Y Slice , Ġsrc [ src Y Slice Ġ+ Ġsrc X ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" nv 1 2 _ Resize ĠException 1 " Ġ+ Ġe . message ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( y Ġand Ġ 1 Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x Ġand Ġ 1 Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsrc Index Ġ= Ġsrc X Ġ/ Ġ 2 Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsp Ġ= Ġdst Uv Y Scan line Ġ+ Ġx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdp Ġ= Ġsrc Uv Y Scan line Ġ+ Ġsrc Index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst . put ( sp , Ġsrc [ dp ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" nv 1 2 _ Resize ĠException 2 " Ġ+ Ġe . message ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ sp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ dp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst . put ( sp , Ġsrc [ dp ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" nv 1 2 _ Resize ĠException 3 " Ġ+ Ġe . message ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdst Y Slice Ġ+= Ġdst Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ y ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdp 2 px ( context : ĠContext , Ġdip Value : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdip Value Ġ* Ġcontext . resources . display Metrics . density Ġ+ Ġ 0 . 5 f ĊĠĠĠ Ġ} Ċ }