4#ifndef QANDROIDCAPTURESESSION_H
5#define QANDROIDCAPTURESESSION_H
19#include <qmediarecorder.h>
21#include <qelapsedtimer.h>
23#include "wrappers/jni/androidmediarecorder_p.h"
47 void start(QMediaEncoderSettings &settings,
const QUrl &outputLocation);
48 void stop(
bool error =
false);
58 m_mediaEncoder->stateChanged(state);
63 m_mediaEncoder->durationChanged(position);
68 m_mediaEncoder->actualLocationChanged(location);
73 m_mediaEncoder->updateError(QMediaRecorder::Error(error), errorString);
78 void onCameraOpened();
80 void onError(
int what,
int extra);
81 void onInfo(
int what,
int extra);
84 void applySettings(QMediaEncoderSettings &settings);
86 struct CaptureProfile {
88 QString outputFileExtension;
90 AndroidMediaRecorder::AudioEncoder audioEncoder;
98 QSize videoResolution;
104 , outputFileExtension(QLatin1String(
"mp4"))
105 , audioEncoder(AndroidMediaRecorder::DefaultAudioEncoder)
106 , audioBitRate(128000)
108 , audioSampleRate(44100)
112 , videoResolution(1280, 720)
117 CaptureProfile getProfile(
int id);
119 void restartViewfinder();
120 void updateStreamingState();
123 std::shared_ptr<AndroidMediaRecorder> m_mediaRecorder;
126 QPlatformAudioInput *m_audioInput =
nullptr;
127 QPlatformAudioOutput *m_audioOutput =
nullptr;
129 QElapsedTimer m_elapsedTime;
130 QTimer m_notifyTimer;
134 QUrl m_usedOutputLocation;
135 bool m_outputLocationIsStandard =
false;
137 CaptureProfile m_defaultSettings;
139 QMediaEncoderSettings m_encoderSettings;
141 AndroidMediaRecorder::AudioEncoder m_audioEncoder;
144 QList<QSize> m_supportedResolutions;
145 QList<qreal> m_supportedFramerates;
147 QMetaObject::Connection m_audioInputChanged;
148 QMetaObject::Connection m_audioOutputChanged;
149 QMetaObject::Connection m_connOpenCamera;
150 QMetaObject::Connection m_connActiveChangedCamera;
152 void setKeepAlive(
bool keepAlive);
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 stateChanged(QMediaRecorder::RecorderState state)
QList< QSize > supportedResolutions() const
QMediaEncoderSettings encoderSettings()
void start(QMediaEncoderSettings &settings, const QUrl &outputLocation)
void actualLocationChanged(const QUrl &location)
void setAudioInput(QPlatformAudioInput *input)
void stop(bool error=false)
void setAudioOutput(QPlatformAudioOutput *output)
void durationChanged(qint64 position)
QList< qreal > supportedFrameRates() const
void updateError(int error, const QString &errorString)
~QAndroidCaptureSession()
void setMediaEncoder(QAndroidMediaEncoder *encoder)
void setCameraSession(QAndroidCameraSession *cameraSession=0)
The QCamera class provides interface for system camera devices.
Combined button and popup list for selecting options.
virtual void onFrameAvailable(const QVideoFrame &frame)=0