summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorBartlomiej Moskal <bartlomiej.moskal@qt.io>2023-01-19 13:20:35 +0100
committerBartlomiej Moskal <bartlomiej.moskal@qt.io>2023-02-03 11:48:27 +0100
commitdc714637d95c775b1b35f1b4e12ccef140dc60a1 (patch)
tree001fb2f1426683fa4bbc9a05b82322d980655551 /src/plugins
parentf27ba7f8759db070525ef4cbaae757a34d80a306 (diff)
Android: don't change Camera State for each frame
onCaptureStarted, onCaptureCompleted and onCaptureFailed methods are called for each frame. Camera state (camera activity relies on it) should not be updated with such frequency. Remove onCaptureSessionCompleted and onCaptureSessionStarted handling, as the only purpose of them were to set a camera state. Remove camera status change for onCaptureFailed, as other requests are unaffected with this failure Instead of CaptureCallback start to use StateCallback for Camera state updates (onActive and onClosed methods) Fixes: QTBUG-110317 Change-Id: I9af1399033e24dbbf395f55ae23e1696aa4d42ce Reviewed-by: Samuel Mira <samuel.mira@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/multimedia/ffmpeg/qandroidcamera.cpp35
-rw-r--r--src/plugins/multimedia/ffmpeg/qandroidcamera_p.h4
2 files changed, 16 insertions, 23 deletions
diff --git a/src/plugins/multimedia/ffmpeg/qandroidcamera.cpp b/src/plugins/multimedia/ffmpeg/qandroidcamera.cpp
index d6f8bc84b..e66c685f4 100644
--- a/src/plugins/multimedia/ffmpeg/qandroidcamera.cpp
+++ b/src/plugins/multimedia/ffmpeg/qandroidcamera.cpp
@@ -352,21 +352,15 @@ void QAndroidCamera::onCameraError(int reason)
QString("Capture error with Camera %1. Camera2 Api error code: %2")
.arg(m_cameraDevice.description())
.arg(reason));
- setState(State::Closed);
}
-void QAndroidCamera::onCaptureSessionStarted(long timestamp, long frameNumber)
+void QAndroidCamera::onSessionActive()
{
- Q_UNUSED(timestamp);
- Q_UNUSED(frameNumber);
-
setState(State::Started);
}
-void QAndroidCamera::onCaptureSessionCompleted(long frameNumber)
+void QAndroidCamera::onSessionClosed()
{
- Q_UNUSED(frameNumber);
-
setState(State::Closed);
}
@@ -453,37 +447,36 @@ static void onCaptureSessionConfigureFailed(JNIEnv *env, jobject obj, jstring ca
}
Q_DECLARE_JNI_NATIVE_METHOD(onCaptureSessionConfigureFailed)
-static void onCaptureSessionStarted(JNIEnv *env, jobject obj, jstring cameraId, jlong timestamp,
- jlong framenumber)
+static void onSessionActive(JNIEnv *env, jobject obj, jstring cameraId)
{
Q_UNUSED(env);
Q_UNUSED(obj);
GET_CAMERA(cameraId);
- camera->onCaptureSessionStarted(timestamp, framenumber);
+ camera->onSessionActive();
}
-Q_DECLARE_JNI_NATIVE_METHOD(onCaptureSessionStarted)
+Q_DECLARE_JNI_NATIVE_METHOD(onSessionActive)
-static void onCaptureSessionFailed(JNIEnv *env, jobject obj, jstring cameraId, jint reason,
- jlong framenumber)
+static void onSessionClosed(JNIEnv *env, jobject obj, jstring cameraId)
{
Q_UNUSED(env);
Q_UNUSED(obj);
GET_CAMERA(cameraId);
- camera->onCaptureSessionFailed(reason, framenumber);
+ camera->onSessionClosed();
}
-Q_DECLARE_JNI_NATIVE_METHOD(onCaptureSessionFailed)
+Q_DECLARE_JNI_NATIVE_METHOD(onSessionClosed)
-static void onCaptureSessionCompleted(JNIEnv *env, jobject obj, jstring cameraId, jlong framenumber)
+static void onCaptureSessionFailed(JNIEnv *env, jobject obj, jstring cameraId, jint reason,
+ jlong framenumber)
{
Q_UNUSED(env);
Q_UNUSED(obj);
GET_CAMERA(cameraId);
- camera->onCaptureSessionCompleted(framenumber);
+ camera->onCaptureSessionFailed(reason, framenumber);
}
-Q_DECLARE_JNI_NATIVE_METHOD(onCaptureSessionCompleted)
+Q_DECLARE_JNI_NATIVE_METHOD(onCaptureSessionFailed)
bool QAndroidCamera::registerNativeMethods()
{
@@ -496,10 +489,10 @@ bool QAndroidCamera::registerNativeMethods()
Q_JNI_NATIVE_METHOD(onCameraError),
Q_JNI_NATIVE_METHOD(onCaptureSessionConfigured),
Q_JNI_NATIVE_METHOD(onCaptureSessionConfigureFailed),
- Q_JNI_NATIVE_METHOD(onCaptureSessionStarted),
Q_JNI_NATIVE_METHOD(onCaptureSessionFailed),
- Q_JNI_NATIVE_METHOD(onCaptureSessionCompleted),
Q_JNI_NATIVE_METHOD(onFrameAvailable),
+ Q_JNI_NATIVE_METHOD(onSessionActive),
+ Q_JNI_NATIVE_METHOD(onSessionClosed),
});
}();
diff --git a/src/plugins/multimedia/ffmpeg/qandroidcamera_p.h b/src/plugins/multimedia/ffmpeg/qandroidcamera_p.h
index 829de14cb..7a2152ebf 100644
--- a/src/plugins/multimedia/ffmpeg/qandroidcamera_p.h
+++ b/src/plugins/multimedia/ffmpeg/qandroidcamera_p.h
@@ -43,9 +43,9 @@ public slots:
void onFrameAvailable(QJniObject frame);
void onCaptureSessionConfigured();
void onCaptureSessionConfigureFailed();
- void onCaptureSessionStarted(long timestamp, long frameNumber);
- void onCaptureSessionCompleted(long frameNumber);
void onCaptureSessionFailed(int reason, long frameNumber);
+ void onSessionActive();
+ void onSessionClosed();
private:
void setState(State newState);