5#ifndef QANDROIDCAMERASESSION_H
6#define QANDROIDCAMERASESSION_H
20#include <QImageCapture>
23#include <private/qplatformimagecapture_p.h>
24#include "wrappers/jni/androidcamera_p.h"
28class QAndroidVideoOutput;
48 void applyResolution(
const QSize &captureSize = QSize(),
bool restartPreview =
true);
64 int capture(
const QString &fileName);
86 void error(
int error,
const QString &errorString);
99 void updateOrientation();
101 void onApplicationStateChanged();
103 void onCameraTakePictureFailed();
104 void onCameraPictureExposed();
105 void onCameraPictureCaptured(
const QByteArray &bytes, QVideoFrameFormat::PixelFormat format, QSize size,
int bytesPerLine);
106 void onLastPreviewFrameFetched(
const QVideoFrame &frame);
107 void onNewPreviewFrame(
const QVideoFrame &frame);
108 void onCameraPreviewStarted();
109 void onCameraPreviewFailedToStart();
110 void onCameraPreviewStopped();
113 static void updateAvailableCameras();
121 void applyImageSettings();
123 void processPreviewImage(
int id,
const QVideoFrame &frame,
int rotation);
124 void processCapturedImage(
int id,
const QByteArray &bytes,
const QString &fileName);
125 void processCapturedImageToBuffer(
int id,
const QByteArray &bytes,
126 QVideoFrameFormat::PixelFormat format, QSize size,
int bytesPerLine);
128 void setActiveHelper(
bool active);
132 QSize getDefaultResolution()
const;
134 int m_selectedCamera;
136 QAndroidVideoOutput *m_videoOutput;
138 bool m_active =
false;
139 bool m_isStateSaved =
false;
140 bool m_savedState =
false;
141 bool m_previewStarted;
143 bool m_rotationEnabled =
false;
145 QVideoSink *m_sink =
nullptr;
148 QImageEncoderSettings m_requestedImageSettings;
149 QImageEncoderSettings m_actualImageSettings;
153 bool m_readyForCapture;
154 int m_currentImageCaptureId;
155 QString m_currentImageCaptureFileName;
156 bool m_imageCaptureToBuffer;
158 QMutex m_videoFrameCallbackMutex;
161 QMetaObject::Connection m_retryPreviewConnection;
void setExposureCompensation(int value)
int getMaxNumFocusAreas()
int getMinExposureCompensation()
int getMaxExposureCompensation()
QAndroidVideoOutput * videoOutput() const
void setVideoSink(QVideoSink *surface)
void imageMetadataAvailable(int id, const QMediaMetaData &key)
int currentCameraRotation() const
void setImageSettings(const QImageEncoderSettings &settings)
void setActive(bool active)
void imageCaptured(int id, const QImage &preview)
void error(int error, const QString &errorString)
int getSelectedCameraId()
QList< AndroidCamera::FpsRange > getSupportedPreviewFpsRange() const
void setCameraFormat(const QCameraFormat &format)
int capture(const QString &fileName)
void readyForCaptureChanged(bool)
void imageCaptureError(int id, int error, const QString &errorString)
void setVideoOutput(QAndroidVideoOutput *output)
QImageEncoderSettings imageSettings() const
bool isReadyForCapture() const
void imageAvailable(int id, const QVideoFrame &buffer)
void setSelectedCameraId(int cameraId)
void applyResolution(const QSize &captureSize=QSize(), bool restartPreview=true)
AndroidCamera * camera() const
QList< QVideoFrameFormat::PixelFormat > getSupportedPixelFormats() const
QList< QSize > getSupportedPreviewSizes() const
void setKeepAlive(bool keepAlive)
void imageSaved(int id, const QString &fileName)
static const QList< QCameraDevice > & availableCameras()
void setPreviewFormat(AndroidCamera::ImageFormat format)
void imageExposed(int id)
void setReadyForCapture(bool ready)
void setPreviewCallback(PreviewCallback *callback)
void setCaptureSession(QPlatformMediaCaptureSession *session) override
void setExposureCompensation(float bias) override
void setFocusMode(QCamera::FocusMode mode) override
void setExposureMode(QCamera::ExposureMode mode) override
bool isTorchModeSupported(QCamera::TorchMode mode) const override
void setFlashMode(QCamera::FlashMode mode) override
bool isWhiteBalanceModeSupported(QCamera::WhiteBalanceMode mode) const override
void zoomTo(float factor, float rate) override
void setCamera(const QCameraDevice &camera) override
bool isFocusModeSupported(QCamera::FocusMode mode) const override
bool setCameraFormat(const QCameraFormat &format) override
bool isFlashReady() const override
void setWhiteBalanceMode(QCamera::WhiteBalanceMode mode) override
bool isFlashModeSupported(QCamera::FlashMode mode) const override
virtual ~QAndroidCamera()
void setActive(bool active) override
bool isActive() const override
bool isExposureModeSupported(QCamera::ExposureMode mode) const override
void setTorchMode(QCamera::TorchMode mode) override
void stop(bool error=false)
The QCamera class provides interface for system camera devices.
Combined button and popup list for selecting options.
virtual void onFrameAvailable(const QVideoFrame &frame)=0