package Ġme . anno . video . formats . cpu Ċ Ċ import Ġme . anno . image . Image Ċ import Ġme . anno . utils . Color . rgba Ċ import Ġjava . io . InputStream Ċ Ċ abstract Ġclass ĠCPU Frame Ġ{ ĊĊĠĠĠ Ġabstract Ġfun Ġload ( w : ĠInt , Ġh : ĠInt , Ġinput : ĠInputStream ): ĠImage ĊĊĠĠĠ Ġfun Ġy uv 2 rgb ( y : ĠByte , Ġu : ĠInt , Ġv : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġy uv 2 rgb ( y . toInt (). and ( 2 5 5 ), Ġu , Ġv ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġy uv 2 rgb ( y : ĠByte , Ġu : ĠByte , Ġv : ĠByte ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġy uv 2 rgb ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy . toInt (). and ( 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . toInt (). and ( 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . toInt (). and ( 2 5 5 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġy uv 2 rgb ( y : ĠByte , Ġu : ĠFloat , Ġv : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġy uv 2 rgb ( y . toInt (). and ( 2 5 5 ) Ġ/ Ġ 2 5 5 f , Ġu , Ġv ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġy uv 2 rgb ( y : ĠFloat , Ġu : ĠFloat , Ġv : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġy 2 Ġ= Ġ 1 . 1 6 4 f Ġ* Ġ( y Ġ- Ġ 1 6 f Ġ/ Ġ 2 5 5 f ) ĊĠĠĠĠĠĠĠ Ġval Ġu 2 Ġ= Ġu Ġ- Ġ 0 . 5 f ĊĠĠĠĠĠĠĠ Ġval Ġv 2 Ġ= Ġv Ġ- Ġ 0 . 5 f ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġy 2 Ġ+ Ġ 1 . 5 9 6 f Ġ* Ġv 2 ĊĠĠĠĠĠĠĠ Ġval Ġg Ġ= Ġy 2 Ġ- Ġ 0 . 3 9 2 f Ġ* Ġu 2 Ġ- Ġ 0 . 8 1 3 f Ġ* Ġv 2 ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġy 2 Ġ+ Ġ 2 . 0 1 7 f Ġ* Ġu 2 ĊĠĠĠĠĠĠĠ Ġreturn Ġrgba ( r , Ġg , Ġb , Ġ 1 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġy uv 2 rgb ( y : ĠInt , Ġu : ĠInt , Ġv : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 0 2 4 Ġ* Ġall Ġvalues ĊĠĠĠĠĠĠĠ Ġval Ġy 2 Ġ= Ġ 1 1 9 2 Ġ* Ġ( y Ġ- Ġ 1 6 ) Ġ+ Ġ 5 1 2 Ġ// Ġ[ 0 , 2 5 5 ] Ġ* Ġ 1 0 2 4 , Ġ+ 5 1 2 Ġfor Ġrounding ĊĠĠĠĠĠĠĠ Ġval Ġu 2 Ġ= Ġu . sh l ( 1 ) Ġ- Ġ 2 5 5 Ġ// Ġ[ 0 , 2 5 5 ] Ġ* Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġv 2 Ġ= Ġv . sh l ( 1 ) Ġ- Ġ 2 5 5 Ġ// Ġ[ 0 , 2 5 5 ] Ġ* Ġ 2 ĊĠĠĠĠĠĠĠ Ġvar Ġr Ġ= Ġ( y 2 Ġ+ Ġ 8 1 7 Ġ* Ġv 2 ). shr ( 1 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġg Ġ= Ġ( y 2 Ġ- Ġ 2 0 1 Ġ* Ġu 2 Ġ- Ġ 4 1 6 Ġ* Ġv 2 ). shr ( 1 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġb Ġ= Ġ( y 2 Ġ+ Ġ 1 0 3 3 Ġ* Ġu 2 ). shr ( 1 0 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( r Ġ< Ġ 0 ) Ġr Ġ= Ġ 0 Ġelse Ġif Ġ( r Ġ> Ġ 2 5 5 ) Ġr Ġ= Ġ 2 5 5 ĊĠĠĠĠĠĠĠ Ġif Ġ( g Ġ< Ġ 0 ) Ġg Ġ= Ġ 0 Ġelse Ġif Ġ( g Ġ> Ġ 2 5 5 ) Ġg Ġ= Ġ 2 5 5 ĊĠĠĠĠĠĠĠ Ġif Ġ( b Ġ< Ġ 0 ) Ġb Ġ= Ġ 0 Ġelse Ġif Ġ( b Ġ> Ġ 2 5 5 ) Ġb Ġ= Ġ 2 5 5 ĊĠĠĠĠĠĠĠ Ġreturn Ġr . sh l ( 1 6 ) Ġor Ġg . sh l ( 8 ) Ġor Ġb Ġor Ġ( 2 5 5 . sh l ( 2 4 )) ĊĠĠĠ Ġ} Ċ Ċ }