5#ifndef QANDROIDCAMERASESSION_H
6#define QANDROIDCAMERASESSION_H
20#include <QImageCapture>
23#include <private/qplatformimagecapture_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;
150 AndroidCamera::FpsRange m_requestedFpsRange;
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;
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)
virtual void onFrameAvailable(const QVideoFrame &frame)=0