Skip to content

Instantly share code, notes, and snippets.

Last active October 22, 2018 18:51
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
What would you like to do?
class MainActivity : AppCompatActivity() {
private lateinit var renderScript: RenderScript
private lateinit var yuvToRGB: ScriptIntrinsicYuvToRGB
private var yuvDataLength: Int = 0
private lateinit var allocationIn: Allocation
private lateinit var allocationOut: Allocation
private lateinit var bitmapOut: Bitmap
override fun onCreate(savedInstanceState: Bundle?) {
cameraView.addFrameProcessor { frame ->
if (yuvDataLength == 0) {
//Run this only once
//Camera Preview returns NV21, so convert it to Bitmap :
allocationIn.copyFrom( //Take the NV21 format
yuvToRGB.forEach(allocationOut) //Convert it to Bitmap readable format
allocationOut.copyTo(bitmapOut) //Set it to the empty Bitmap created earlier
private fun initializeData(){
yuvDataLength = cameraView.previewSize?.height!! * cameraView.previewSize?.width!! * 3 / 2
renderScript = RenderScript.create(baseContext)
yuvToRGB = ScriptIntrinsicYuvToRGB.create(renderScript, Element.U8_4(renderScript))
allocationIn = Allocation.createSized(renderScript, Element.U8(renderScript), yuvDataLength)
bitmapOut = Bitmap.createBitmap(cameraView.previewSize?.width!!, cameraView.previewSize?.height!!, Bitmap.Config.ARGB_8888)
allocationOut = Allocation.createFromBitmap(renderScript, bitmapOut)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment