Android Camera2 API YUV_420_888 a JPEG

Estoy obteniendo marcos de vista previa usandoOnImageAvailableListener:

@Override
public void onImageAvailable(ImageReader reader) {
    Image image = null;
    try {
        image = reader.acquireLatestImage();
        Image.Plane[] planes = image.getPlanes();
        ByteBuffer buffer = planes[0].getBuffer();
        byte[] data = new byte[buffer.capacity()];
        buffer.get(data);
        //data.length=332803; width=3264; height=2448
        Log.e(TAG, "data.length=" + data.length + "; width=" + image.getWidth() + "; height=" + image.getHeight());
        //TODO data processing
    } catch (Exception e) {
        e.printStackTrace();
    }
    if (image != null) {
        image.close();
    }
}

Cada vez que la longitud de los datos es diferente, el ancho y la altura de la imagen son iguales.
Problema principal:data.length es demasiado pequeño para una resolución como 3264x2448.
El tamaño de la matriz de datos debe ser 3264 * 2448 = 7,990,272, no 300,000 - 600,000.
¿Qué está mal?

imageReader = ImageReader.newInstance(3264, 2448, ImageFormat.JPEG, 5);

Respuestas a la pregunta(3)

Su respuesta a la pregunta