I was trying to process the live camera feed from flutter so I needed to send the byte data to nativve Android for processing.

I was concatenating the 3 planes as suggested by flutterfire. I needed the data to create an InputImage for the google ml kit.

Concatenate Plane method

static Uint8List _concatenatePlanes(List<Plane> planes) {
    final WriteBuffer allBytes = WriteBuffer();
    for (Plane plane in planes) {
      allBytes.putUint8List(plane.bytes);
    }
    return allBytes.done().buffer.asUint8List();
  }

Input Image created from the image data in native Android

public void fromByteBuffer(Map<String, Object> imageData, final MethodChannel.Result result) {
  byte[] bytes = (byte[]) imageData.get("bytes");

  int rotationCompensation = ((int) imageData.get("rotation")) % 360;

//Create an input image
  InputImage inputImage = InputImage.fromByteArray(bytes,
                (int) imageData.get("width"),
                (int) imageData.get("height"),
                 rotationCompensation,
                InputImage.IMAGE_FORMAT_NV21);
}

I am not getting any results after processing a frame from camera stream, but if the same frame is captured, stored and then processed by creating the Input Image from file path the image is being processed properly.

Is there anything wrong in the way I am creating the input image. Any help is appreciated.