package Ġio . github . c row _ mis ia . li by uv Ċ Ċ import Ġjava . nio . ByteBuffer Ċ import Ġkotlin . math . min Ċ Ċ /** Ċ Ġ* ĠJ 4 0 0 Ġ( jpeg Ġgrey ) ĠY UV ĠFormat . Ġ 4 : 0 : 0 Ġ 8 bpp Ċ Ġ*/ Ċ class ĠJ 4 0 0 Buffer Ġprivate Ġconstructor ( ĊĠĠĠ Ġbuffer : ĠByteBuffer ?, ĊĠĠĠ Ġoverride Ġval Ġplane Y : ĠPlane , ĊĠĠĠ Ġoverride Ġval Ġwidth : ĠInt , ĊĠĠĠ Ġoverride Ġval Ġheight : ĠInt , ĊĠĠĠ Ġrelease Callback : ĠRunnable ?, Ċ ) Ġ: ĠAbstract Buffer ( buffer , ĠarrayOf ( plane Y ), Ġrelease Callback ), ĠBuffer X 4 0 0 < J 4 0 0 Buffer , ĠJ 4 2 0 Buffer >, ĠBuffer Y < J 4 0 0 Buffer > Ġ{ ĊĠĠĠ Ġfun ĠconvertTo ( dst : ĠArg b Buffer ) Ġ{ ĊĠĠĠĠĠĠĠ ĠY uv . convert J 4 0 0 To ARGB ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsrc Y Ġ= Ġplane Y . buffer , Ġsrc Stride Y Ġ= Ġplane Y . row Stride , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdst ARGB Ġ= Ġdst . plane . buffer , Ġdst Stride ARGB Ġ= Ġdst . plane . row Stride , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġmin ( width , Ġdst . width ), Ġheight Ġ= Ġmin ( height , Ġdst . height ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject ĠFactory Ġ: ĠBuffer Factory < J 4 0 0 Buffer > Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Stride With Capacity ( width : ĠInt , Ġheight : ĠInt ): ĠInt Array Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġint ArrayOf ( width , Ġwidth Ġ* Ġheight ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġallocate ( width : ĠInt , Ġheight : ĠInt ): ĠJ 4 0 0 Buffer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( stride Y , Ġcapacity ) Ġ= Ġget Stride With Capacity ( width , Ġheight ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Y Ġ= Ġcreate ByteBuffer ( capacity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠJ 4 0 0 Buffer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer Ġ= Ġbuffer Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplane Y Ġ= ĠPlane Primitive ( stride Y , Ġbuffer Y ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġwidth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġheight , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠY uv . free Native Buffer ( buffer Y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġwrap ( buffer : ĠByteBuffer , Ġwidth : ĠInt , Ġheight : ĠInt ): ĠJ 4 0 0 Buffer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( buffer . is Direct ) Ġ{ Ġ" Unsupported Ġnon - direct ĠByteBuffer ." Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( stride Y , Ġcapacity ) Ġ= Ġget Stride With Capacity ( width , Ġheight ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Y Ġ= Ġbuffer . slice Range ( 0 , Ġcapacity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠJ 4 0 0 Buffer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer Ġ= Ġbuffer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplane Y Ġ= ĠPlane Primitive ( stride Y , Ġbuffer Y ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġwidth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġheight , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Callback Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġwrap ( plane Y J : ĠPlane , Ġwidth : ĠInt , Ġheight : ĠInt ): ĠJ 4 0 0 Buffer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠJ 4 0 0 Buffer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer Ġ= Ġplane Y J . buffer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplane Y Ġ= Ġplane Y J , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġwidth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġheight , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Callback Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ