summaryrefslogtreecommitdiffstats
path: root/src/plugins/android/src/wrappers/jcamera.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/android/src/wrappers/jcamera.cpp')
-rw-r--r--src/plugins/android/src/wrappers/jcamera.cpp29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/plugins/android/src/wrappers/jcamera.cpp b/src/plugins/android/src/wrappers/jcamera.cpp
index 0c7455fae..d24a59a38 100644
--- a/src/plugins/android/src/wrappers/jcamera.cpp
+++ b/src/plugins/android/src/wrappers/jcamera.cpp
@@ -111,6 +111,21 @@ static void notifyPictureCaptured(JNIEnv *env, jobject, int id, jbyteArray data)
}
}
+static void notifyFrameFetched(JNIEnv *env, jobject, int id, jbyteArray data)
+{
+ g_objectMapMutex.lock();
+ JCamera *obj = g_objectMap.value(id, 0);
+ g_objectMapMutex.unlock();
+ if (obj) {
+ QByteArray bytes;
+ int arrayLength = env->GetArrayLength(data);
+ bytes.resize(arrayLength);
+ env->GetByteArrayRegion(data, 0, arrayLength, (jbyte*)bytes.data());
+
+ Q_EMIT obj->frameFetched(bytes);
+ }
+}
+
class JCameraInstantiator : public QObject
{
Q_OBJECT
@@ -201,6 +216,7 @@ class JCameraWorker : public QObject, public QJNIObjectPrivate
Q_INVOKABLE void startPreview();
Q_INVOKABLE void stopPreview();
+ Q_INVOKABLE void fetchEachFrame(bool fetch);
Q_INVOKABLE void fetchLastPreviewFrame();
Q_INVOKABLE void applyParameters();
@@ -571,6 +587,11 @@ void JCamera::takePicture()
QMetaObject::invokeMethod(d, "callVoidMethod", Q_ARG(QByteArray, "takePicture"));
}
+void JCamera::fetchEachFrame(bool fetch)
+{
+ QMetaObject::invokeMethod(d, "fetchEachFrame", Q_ARG(bool, fetch));
+}
+
void JCamera::fetchLastPreviewFrame()
{
QMetaObject::invokeMethod(d, "fetchLastPreviewFrame");
@@ -1165,6 +1186,11 @@ void JCameraWorker::stopPreview()
emit previewStopped();
}
+void JCameraWorker::fetchEachFrame(bool fetch)
+{
+ callMethod<void>("fetchEachFrame", "(Z)V", fetch);
+}
+
void JCameraWorker::fetchLastPreviewFrame()
{
QJNIEnvironmentPrivate env;
@@ -1224,7 +1250,8 @@ void JCameraWorker::callVoidMethod(const QByteArray &methodName)
static JNINativeMethod methods[] = {
{"notifyAutoFocusComplete", "(IZ)V", (void *)notifyAutoFocusComplete},
{"notifyPictureExposed", "(I)V", (void *)notifyPictureExposed},
- {"notifyPictureCaptured", "(I[B)V", (void *)notifyPictureCaptured}
+ {"notifyPictureCaptured", "(I[B)V", (void *)notifyPictureCaptured},
+ {"notifyFrameFetched", "(I[B)V", (void *)notifyFrameFetched}
};
bool JCamera::initJNI(JNIEnv *env)