Usando funciones nativas en Android con OpenCV

Quiero usar OpenCV + Android, usando funciones nativas. Sin embargo, estoy un poco confundido sobre cómo usar mapas de bits como parámetros y cómo devolver un valor de un mapa de bits editado (o Mat).

Así, por ejemplo, tengo una función nativa:

#include <jni.h>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>


JNIEXPORT ??? JNICALL Java_com_my_package_name_and_javaclass_myFunction(JNIEnv* env, jobject javaThis, cv::Mat mat1){
    //here will be code to perform filtering, blurring, canny edge detection or similar things.
        //so I want to input a bitmap, edit it and send it back to the Android class.

return ???
    }

Así que aquí estoy usando cv :: Mat como parámetro. Sé que esto está mal, pero no estoy seguro de qué debería ser, y qué debería estar en la clase java correspondiente. ¿Debería ser un ByteArray? ¿Y luego en la función nativa anterior el parámetro sería jByteArray (o similar)?

Y para el objeto devuelto, ¿qué debo poner? ¿Debería esto ser una matriz?

Básicamente, lo que busco es en la clase de Java. Tengo un Mat (o Bitmap). Lo envío a la función nativa para editar y devolver un bitmap bien editado.

Respuestas a la pregunta(2)

Su respuesta a la pregunta