summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2021-06-16 12:41:04 +0200
committerLars Knoll <lars.knoll@qt.io>2021-06-16 12:41:04 +0200
commit1f61939866de0ead1771a2e07f2e2f1d393643a5 (patch)
treea7a4e78126f603e931df651d6837f15d9ffc0dfe
parent60b3c6f54d65d03bb028ecade8fd130cfe1ba5c7 (diff)
parent36fbb6ab08734aff1a73ea4ed255e06bd5aa99f8 (diff)
Merge remote-tracking branch 'origin/dev' into 6.2
-rw-r--r--examples/multimedia/audiorecorder/audiorecorder.cpp25
-rw-r--r--examples/multimedia/audiorecorder/doc/src/audiorecorder.qdoc22
-rw-r--r--examples/multimedia/declarative-camera/PhotoCaptureControls.qml2
-rw-r--r--examples/multimedia/declarative-camera/VideoCaptureControls.qml2
-rw-r--r--examples/multimedia/devices/main.cpp18
-rw-r--r--examples/multimediawidgets/camera/camera.cpp21
-rw-r--r--examples/multimediawidgets/camera/camera.h3
-rw-r--r--examples/multimediawidgets/camera/imagesettings.cpp2
-rw-r--r--examples/multimediawidgets/camera/imagesettings.h1
-rw-r--r--examples/multimediawidgets/camera/videosettings.cpp66
-rw-r--r--examples/multimediawidgets/camera/videosettings.h4
-rw-r--r--examples/multimediawidgets/player/player.cpp1
-rw-r--r--src/multimedia/CMakeLists.txt1
-rw-r--r--src/multimedia/audio/qaudio.cpp59
-rw-r--r--src/multimedia/audio/qaudio.h14
-rw-r--r--src/multimedia/audio/qaudiodevice.h1
-rw-r--r--src/multimedia/audio/qaudiooutput.cpp28
-rw-r--r--src/multimedia/audio/qaudiooutput.h6
-rw-r--r--src/multimedia/audio/qaudiosink.cpp20
-rw-r--r--src/multimedia/audio/qaudiosink.h3
-rw-r--r--src/multimedia/audio/qaudiosystem.cpp5
-rw-r--r--src/multimedia/audio/qaudiosystem_p.h4
-rw-r--r--src/multimedia/audio/qsoundeffect.cpp65
-rw-r--r--src/multimedia/audio/qsoundeffect.h16
-rw-r--r--src/multimedia/camera/qcamera.cpp61
-rw-r--r--src/multimedia/camera/qcamera.h16
-rw-r--r--src/multimedia/camera/qcamera_p.h2
-rw-r--r--src/multimedia/camera/qcameraimagecapture.cpp1
-rw-r--r--src/multimedia/camera/qcameraimagecapture.h1
-rw-r--r--src/multimedia/doc/snippets/multimedia-snippets/camera.cpp45
-rw-r--r--src/multimedia/doc/snippets/multimedia-snippets/media.cpp52
-rw-r--r--src/multimedia/doc/src/cameraoverview.qdoc6
-rw-r--r--src/multimedia/doc/src/changes.qdoc8
-rw-r--r--src/multimedia/platform/android/audio/qandroidaudiosink.cpp37
-rw-r--r--src/multimedia/platform/android/audio/qandroidaudiosink_p.h2
-rw-r--r--src/multimedia/platform/android/common/qandroidaudiooutput_p.h13
-rw-r--r--src/multimedia/platform/android/mediacapture/qandroidcamerasession_p.h1
-rw-r--r--src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol.cpp6
-rw-r--r--src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol_p.h1
-rw-r--r--src/multimedia/platform/android/wrappers/jni/androidmediaplayer.cpp2
-rw-r--r--src/multimedia/platform/android/wrappers/jni/androidmediaplayer_p.h1
-rw-r--r--src/multimedia/platform/darwin/camera/avfcamera.mm10
-rw-r--r--src/multimedia/platform/darwin/camera/avfcamera_p.h2
-rw-r--r--src/multimedia/platform/darwin/camera/avfcamerasession.mm14
-rw-r--r--src/multimedia/platform/darwin/camera/avfcamerasession_p.h4
-rw-r--r--src/multimedia/platform/darwin/camera/avfmediaencoder.mm40
-rw-r--r--src/multimedia/platform/gstreamer/mediacapture/qgstreamercamera.cpp10
-rw-r--r--src/multimedia/platform/gstreamer/mediacapture/qgstreamercamera_p.h2
-rw-r--r--src/multimedia/platform/pulseaudio/qpulseaudiosink.cpp8
-rw-r--r--src/multimedia/platform/qnx/camera/bbcamerasession.cpp10
-rw-r--r--src/multimedia/platform/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp10
-rw-r--r--src/multimedia/platform/qnx/mediaplayer/mmrenderermediaplayercontrol_p.h3
-rw-r--r--src/multimedia/platform/qnx/mediaplayer/mmrendererutil.cpp75
-rw-r--r--src/multimedia/platform/qnx/mediaplayer/mmrendererutil_p.h3
-rw-r--r--src/multimedia/platform/qplatformaudiooutput_p.h3
-rw-r--r--src/multimedia/platform/qplatformcamera_p.h12
-rw-r--r--src/multimedia/platform/qplatformmediaencoder_p.h70
-rw-r--r--src/multimedia/platform/qplatformmediaformatinfo_p.h2
-rw-r--r--src/multimedia/platform/qplatformmediaplayer.cpp18
-rw-r--r--src/multimedia/platform/windows/mediacapture/qwindowsmediadevicesession.cpp34
-rw-r--r--src/multimedia/platform/windows/mediacapture/qwindowsmediadevicesession_p.h6
-rw-r--r--src/multimedia/playback/qmediaplayer.cpp70
-rw-r--r--src/multimedia/playback/qmediaplayer.h15
-rw-r--r--src/multimedia/playback/qmediaplayer_p.h3
-rw-r--r--src/multimedia/qmediaformat.h1
-rw-r--r--src/multimedia/recording/qmediaencodersettings.cpp347
-rw-r--r--src/multimedia/recording/qmediaencodersettings.h134
-rw-r--r--src/multimedia/recording/qmediarecorder.cpp289
-rw-r--r--src/multimedia/recording/qmediarecorder.h65
-rw-r--r--src/multimedia/recording/qmediarecorder_p.h1
-rw-r--r--src/multimediaquick/qquickimagecapture_p.h1
-rw-r--r--src/multimediaquick/qtmultimediaquicktypes_p.h7
-rw-r--r--tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp24
-rw-r--r--tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp2
-rw-r--r--tests/auto/unit/mockbackend/qmockaudiooutput.h10
-rw-r--r--tests/auto/unit/mockbackend/qmockcamera.h4
-rw-r--r--tests/auto/unit/multimedia/qcamera/CMakeLists.txt2
-rw-r--r--tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp46
-rw-r--r--tests/auto/unit/multimedia/qcameradevice/tst_qcameradevice.cpp12
-rw-r--r--tests/auto/unit/multimedia/qmediaplayer/tst_qmediaplayer.cpp42
-rw-r--r--tests/auto/unit/multimedia/qmediarecorder/tst_qmediarecorder.cpp698
81 files changed, 845 insertions, 1908 deletions
diff --git a/examples/multimedia/audiorecorder/audiorecorder.cpp b/examples/multimedia/audiorecorder/audiorecorder.cpp
index 4983fa97c..63efc4ba8 100644
--- a/examples/multimedia/audiorecorder/audiorecorder.cpp
+++ b/examples/multimedia/audiorecorder/audiorecorder.cpp
@@ -59,6 +59,7 @@
#include <QMediaRecorder>
#include <QStandardPaths>
#include <qmediadevices.h>
+#include <qmediaformat.h>
#include <qaudiodevice.h>
#include <qaudiobuffer.h>
#include <qaudioinput.h>
@@ -194,18 +195,18 @@ void AudioRecorder::toggleRecord()
if (m_audioEncoder->recorderState() == QMediaRecorder::StoppedState) {
m_captureSession.audioInput()->setDevice(boxValue(ui->audioDeviceBox).value<QAudioDevice>());
- QMediaEncoderSettings settings;
- settings.setFileFormat(boxValue(ui->containerBox).value<QMediaFormat::FileFormat>());
- settings.setAudioCodec(boxValue(ui->audioCodecBox).value<QMediaFormat::AudioCodec>());
- settings.setAudioSampleRate(ui->sampleRateBox->value());
- settings.setAudioBitRate(boxValue(ui->bitrateBox).toInt());
- settings.setAudioChannelCount(boxValue(ui->channelsBox).toInt());
- settings.setQuality(QMediaEncoderSettings::Quality(ui->qualitySlider->value()));
- settings.setEncodingMode(ui->constantQualityRadioButton->isChecked() ?
- QMediaEncoderSettings::ConstantQualityEncoding :
- QMediaEncoderSettings::ConstantBitRateEncoding);
-
- m_audioEncoder->setEncoderSettings(settings);
+ QMediaFormat format;
+ format.setFileFormat(boxValue(ui->containerBox).value<QMediaFormat::FileFormat>());
+ format.setAudioCodec(boxValue(ui->audioCodecBox).value<QMediaFormat::AudioCodec>());
+ m_audioEncoder->setMediaFormat(format);
+ m_audioEncoder->setAudioSampleRate(ui->sampleRateBox->value());
+ m_audioEncoder->setAudioBitRate(boxValue(ui->bitrateBox).toInt());
+ m_audioEncoder->setAudioChannelCount(boxValue(ui->channelsBox).toInt());
+ m_audioEncoder->setQuality(QMediaRecorder::Quality(ui->qualitySlider->value()));
+ m_audioEncoder->setEncodingMode(ui->constantQualityRadioButton->isChecked() ?
+ QMediaRecorder::ConstantQualityEncoding :
+ QMediaRecorder::ConstantBitRateEncoding);
+
m_audioEncoder->record();
}
else {
diff --git a/examples/multimedia/audiorecorder/doc/src/audiorecorder.qdoc b/examples/multimedia/audiorecorder/doc/src/audiorecorder.qdoc
index d5d49e723..723f7742f 100644
--- a/examples/multimedia/audiorecorder/doc/src/audiorecorder.qdoc
+++ b/examples/multimedia/audiorecorder/doc/src/audiorecorder.qdoc
@@ -51,8 +51,8 @@
\l{QAudioRecorder::supportedContainers()}{supportedContainers()}, and
\l{QAudioRecorder::supportedAudioSampleRates()}{supportedAudioSampleRates()}
methods. The quality slider is setup from 0 (zero) to
- \l{QMediaEncoderSettings::VeryHighQuality} with a default value of
- \l{QMediaEncoderSettings::NormalQuality}, while the bitrates are hardcoded
+ \l{QMediaRecorder::VeryHighQuality} with a default value of
+ \l{QMediaRecorder::NormalQuality}, while the bitrates are hardcoded
into the list.
\section1 Recording Audio
@@ -79,18 +79,18 @@
\l{QMediaRecorder::record()}{record()} method.
\code
- QAudioEncoderSettings settings;
- settings.setCodec(boxValue(ui->audioCodecBox).toString());
- settings.setSampleRate(boxValue(ui->sampleRateBox).toInt());
- settings.setBitRate(boxValue(ui->bitrateBox).toInt());
- settings.setQuality(QMediaEncoderSettings::EncodingQuality(ui->qualitySlider->value()));
- settings.setEncodingMode(ui->constantQualityRadioButton->isChecked() ?
- QMediaEncoderSettings::ConstantQualityEncoding :
- QMediaEncoderSettings::ConstantBitRateEncoding);
+ QMediaFormat format;
+ format.setCodec(boxValue(ui->audioCodecBox).toString());
+ audioRecorder->setMediaFormat(format);
+ audioRecorder->setSampleRate(boxValue(ui->sampleRateBox).toInt());
+ audioRecorder->setBitRate(boxValue(ui->bitrateBox).toInt());
+ audioRecorder->setQuality(QMediaRecorder::EncodingQuality(ui->qualitySlider->value()));
+ audioRecorder->setEncodingMode(ui->constantQualityRadioButton->isChecked() ?
+ QMediaRecorder::ConstantQualityEncoding :
+ QMediaRecorder::ConstantBitRateEncoding);
QString container = boxValue(ui->containerBox).toString();
- audioRecorder->setEncodingSettings(settings, QVideoEncoderSettings(), container);
audioRecorder->record();
\endcode
diff --git a/examples/multimedia/declarative-camera/PhotoCaptureControls.qml b/examples/multimedia/declarative-camera/PhotoCaptureControls.qml
index bfe539468..72a502684 100644
--- a/examples/multimedia/declarative-camera/PhotoCaptureControls.qml
+++ b/examples/multimedia/declarative-camera/PhotoCaptureControls.qml
@@ -137,7 +137,7 @@ FocusScope {
CameraListButton {
model: MediaDevices.videoInputs
- onValueChanged: captureSession.camera.cameraInfo = value
+ onValueChanged: captureSession.camera.cameraDevice = value
}
CameraButton {
diff --git a/examples/multimedia/declarative-camera/VideoCaptureControls.qml b/examples/multimedia/declarative-camera/VideoCaptureControls.qml
index ac3cbe3e0..3fc787d30 100644
--- a/examples/multimedia/declarative-camera/VideoCaptureControls.qml
+++ b/examples/multimedia/declarative-camera/VideoCaptureControls.qml
@@ -112,7 +112,7 @@ FocusScope {
CameraListButton {
model: MediaDevices.videoInputs
- onValueChanged: captureSession.camera.cameraInfo = value
+ onValueChanged: captureSession.camera.cameraDevice = value
}
CameraButton {
diff --git a/examples/multimedia/devices/main.cpp b/examples/multimedia/devices/main.cpp
index a9d1537d3..a07e7c468 100644
--- a/examples/multimedia/devices/main.cpp
+++ b/examples/multimedia/devices/main.cpp
@@ -119,18 +119,18 @@ void printAudioDeviceInfo(QTextStream &out, const QAudioDevice &deviceInfo)
out << Qt::endl;
}
-void printVideoDeviceInfo(QTextStream &out, const QCameraDevice &cameraInfo)
+void printVideoDeviceInfo(QTextStream &out, const QCameraDevice &cameraDevice)
{
- const auto isDefault = cameraInfo.isDefault() ? "Yes" : "No";
- const auto position = cameraInfo.position();
- const auto photoResolutions = cameraInfo.photoResolutions();
- const auto videoFormats = cameraInfo.videoFormats();
+ const auto isDefault = cameraDevice.isDefault() ? "Yes" : "No";
+ const auto position = cameraDevice.position();
+ const auto photoResolutions = cameraDevice.photoResolutions();
+ const auto videoFormats = cameraDevice.videoFormats();
out.setFieldWidth(30);
out.setFieldAlignment(QTextStream::AlignLeft);
- out << "Name: " << cameraInfo.description() << qSetFieldWidth(0) << Qt::endl;
+ out << "Name: " << cameraDevice.description() << qSetFieldWidth(0) << Qt::endl;
out.setFieldWidth(30);
- out << "Id: " << QString::fromLatin1(cameraInfo.id()) << qSetFieldWidth(0) << Qt::endl;
+ out << "Id: " << QString::fromLatin1(cameraDevice.id()) << qSetFieldWidth(0) << Qt::endl;
out.setFieldWidth(30);
out << "Default: " << isDefault << qSetFieldWidth(0) << Qt::endl;
out.setFieldWidth(30);
@@ -173,8 +173,8 @@ int main()
printAudioDeviceInfo(out, deviceInfo);
out << Qt::endl << "Video devices detected: " << Qt::endl;
- for (auto &cameraInfo: videoInputDevices)
- printVideoDeviceInfo(out, cameraInfo);
+ for (auto &cameraDevice : videoInputDevices)
+ printVideoDeviceInfo(out, cameraDevice);
return 0;
}
diff --git a/examples/multimediawidgets/camera/camera.cpp b/examples/multimediawidgets/camera/camera.cpp
index f45971e9f..043afeb29 100644
--- a/examples/multimediawidgets/camera/camera.cpp
+++ b/examples/multimediawidgets/camera/camera.cpp
@@ -93,9 +93,9 @@ Camera::Camera()
setCamera(QMediaDevices::defaultVideoInput());
}
-void Camera::setCamera(const QCameraDevice &cameraInfo)
+void Camera::setCamera(const QCameraDevice &cameraDevice)
{
- m_camera.reset(new QCamera(cameraInfo));
+ m_camera.reset(new QCamera(cameraDevice));
m_captureSession.setCamera(m_camera.data());
connect(m_camera.data(), &QCamera::activeChanged, this, &Camera::updateCameraActive);
@@ -192,13 +192,8 @@ void Camera::configureVideoSettings()
VideoSettings settingsDialog(m_mediaEncoder.data());
settingsDialog.setWindowFlags(settingsDialog.windowFlags() & ~Qt::WindowContextHelpButtonHint);
- settingsDialog.setEncoderSettings(m_encoderSettings);
-
- if (settingsDialog.exec()) {
- m_encoderSettings = settingsDialog.encoderSettings();
-
- m_mediaEncoder->setEncoderSettings(m_encoderSettings);
- }
+ if (settingsDialog.exec())
+ settingsDialog.applySettings();
}
void Camera::configureImageSettings()
@@ -363,11 +358,11 @@ void Camera::updateCameras()
{
ui->menuDevices->clear();
const QList<QCameraDevice> availableCameras = QMediaDevices::videoInputs();
- for (const QCameraDevice &cameraInfo : availableCameras) {
- QAction *videoDeviceAction = new QAction(cameraInfo.description(), videoDevicesGroup);
+ for (const QCameraDevice &cameraDevice : availableCameras) {
+ QAction *videoDeviceAction = new QAction(cameraDevice.description(), videoDevicesGroup);
videoDeviceAction->setCheckable(true);
- videoDeviceAction->setData(QVariant::fromValue(cameraInfo));
- if (cameraInfo == QMediaDevices::defaultVideoInput())
+ videoDeviceAction->setData(QVariant::fromValue(cameraDevice));
+ if (cameraDevice == QMediaDevices::defaultVideoInput())
videoDeviceAction->setChecked(true);
ui->menuDevices->addAction(videoDeviceAction);
diff --git a/examples/multimediawidgets/camera/camera.h b/examples/multimediawidgets/camera/camera.h
index 6a55f42b3..c165aa201 100644
--- a/examples/multimediawidgets/camera/camera.h
+++ b/examples/multimediawidgets/camera/camera.h
@@ -80,7 +80,7 @@ public slots:
void saveMetaData();
private slots:
- void setCamera(const QCameraDevice &cameraInfo);
+ void setCamera(const QCameraDevice &cameraDevice);
void startCamera();
void stopCamera();
@@ -138,7 +138,6 @@ private:
QCameraImageCapture *m_imageCapture;
QScopedPointer<QMediaRecorder> m_mediaEncoder;
- QMediaEncoderSettings m_encoderSettings;
bool m_isCapturingImage = false;
bool m_applicationExiting = false;
bool m_doImageCapture = true;
diff --git a/examples/multimediawidgets/camera/imagesettings.cpp b/examples/multimediawidgets/camera/imagesettings.cpp
index 8e58fc7d4..fa619638d 100644
--- a/examples/multimediawidgets/camera/imagesettings.cpp
+++ b/examples/multimediawidgets/camera/imagesettings.cpp
@@ -75,7 +75,7 @@ ImageSettings::ImageSettings(QCameraImageCapture *imageCapture, QWidget *parent)
ui->imageQualitySlider->setRange(0, int(QCameraImageCapture::VeryHighQuality));
ui->imageResolutionBox->addItem(tr("Default Resolution"));
- const QList<QSize> supportedResolutions = imagecapture->captureSession()->camera()->cameraInfo().photoResolutions();
+ const QList<QSize> supportedResolutions = imagecapture->captureSession()->camera()->cameraDevice().photoResolutions();
for (const QSize &resolution : supportedResolutions) {
ui->imageResolutionBox->addItem(QString("%1x%2").arg(resolution.width()).arg(resolution.height()),
QVariant(resolution));
diff --git a/examples/multimediawidgets/camera/imagesettings.h b/examples/multimediawidgets/camera/imagesettings.h
index cb7691045..c155c5531 100644
--- a/examples/multimediawidgets/camera/imagesettings.h
+++ b/examples/multimediawidgets/camera/imagesettings.h
@@ -52,7 +52,6 @@
#define IMAGESETTINGS_H
#include <QDialog>
-#include <QMediaEncoderSettings>
QT_BEGIN_NAMESPACE
class QComboBox;
diff --git a/examples/multimediawidgets/camera/videosettings.cpp b/examples/multimediawidgets/camera/videosettings.cpp
index 9bc0d0ea0..03c4f74c1 100644
--- a/examples/multimediawidgets/camera/videosettings.cpp
+++ b/examples/multimediawidgets/camera/videosettings.cpp
@@ -92,7 +92,7 @@ VideoSettings::VideoSettings(QMediaRecorder *mediaRecorder, QWidget *parent)
ui->videoResolutionBox->addItem(tr("Default"));
- auto supportedResolutions = mediaRecorder->captureSession()->camera()->cameraInfo().photoResolutions(); // ### Should use resolutions from video formats
+ auto supportedResolutions = mediaRecorder->captureSession()->camera()->cameraDevice().photoResolutions(); // ### Should use resolutions from video formats
for (const QSize &resolution : supportedResolutions) {
ui->videoResolutionBox->addItem(QString("%1x%2").arg(resolution.width()).arg(resolution.height()),
QVariant(resolution));
@@ -113,7 +113,26 @@ VideoSettings::VideoSettings(QMediaRecorder *mediaRecorder, QWidget *parent)
QVariant::fromValue(format));
}
- ui->qualitySlider->setRange(0, int(QMediaEncoderSettings::VeryHighQuality));
+ ui->qualitySlider->setRange(0, int(QMediaRecorder::VeryHighQuality));
+
+ QMediaFormat format = mediaRecorder->mediaFormat();
+ selectComboBoxItem(ui->containerFormatBox, QVariant::fromValue(format.fileFormat()));
+ selectComboBoxItem(ui->audioCodecBox, QVariant::fromValue(format.audioCodec()));
+ selectComboBoxItem(ui->videoCodecBox, QVariant::fromValue(format.videoCodec()));
+
+ ui->qualitySlider->setValue(mediaRecorder->quality());
+ ui->audioSampleRateBox->setValue(mediaRecorder->audioSampleRate());
+ selectComboBoxItem(ui->videoResolutionBox, QVariant(mediaRecorder->videoResolution()));
+
+ //special case for frame rate
+ for (int i = 0; i < ui->videoFramerateBox->count(); ++i) {
+ qreal itemRate = ui->videoFramerateBox->itemData(i).value<qreal>();
+ if (qFuzzyCompare(itemRate, mediaRecorder->videoFrameRate())) {
+ ui->videoFramerateBox->setCurrentIndex(i);
+ break;
+ }
+ }
+
}
VideoSettings::~VideoSettings()
@@ -133,40 +152,17 @@ void VideoSettings::changeEvent(QEvent *e)
}
}
-QMediaEncoderSettings VideoSettings::encoderSettings() const
-{
- QMediaEncoderSettings settings = mediaRecorder->encoderSettings();
- settings.setQuality(QMediaEncoderSettings::Quality(ui->qualitySlider->value()));
- settings.setFileFormat(boxValue(ui->containerFormatBox).value<QMediaFormat::FileFormat>());
-
- settings.setAudioCodec(boxValue(ui->audioCodecBox).value<QMediaFormat::AudioCodec>());
- settings.setAudioSampleRate(ui->audioSampleRateBox->value());
-
- settings.setVideoCodec(boxValue(ui->videoCodecBox).value<QMediaFormat::VideoCodec>());
- settings.setVideoResolution(boxValue(ui->videoResolutionBox).toSize());
- settings.setVideoFrameRate(boxValue(ui->videoFramerateBox).value<qreal>());
- return settings;
-}
-
-void VideoSettings::setEncoderSettings(const QMediaEncoderSettings &encoderSettings)
+void VideoSettings::applySettings()
{
- selectComboBoxItem(ui->containerFormatBox, QVariant::fromValue(encoderSettings.fileFormat()));
- ui->qualitySlider->setValue(encoderSettings.quality());
-
- selectComboBoxItem(ui->audioCodecBox, QVariant::fromValue(encoderSettings.audioCodec()));
- ui->audioSampleRateBox->setValue(encoderSettings.audioSampleRate());
-
- selectComboBoxItem(ui->videoCodecBox, QVariant::fromValue(encoderSettings.videoCodec()));
- selectComboBoxItem(ui->videoResolutionBox, QVariant(encoderSettings.videoResolution()));
-
- //special case for frame rate
- for (int i = 0; i < ui->videoFramerateBox->count(); ++i) {
- qreal itemRate = ui->videoFramerateBox->itemData(i).value<qreal>();
- if (qFuzzyCompare(itemRate, encoderSettings.videoFrameRate())) {
- ui->videoFramerateBox->setCurrentIndex(i);
- break;
- }
- }
+ QMediaFormat format;
+ format.setFileFormat(boxValue(ui->containerFormatBox).value<QMediaFormat::FileFormat>());
+ format.setAudioCodec(boxValue(ui->audioCodecBox).value<QMediaFormat::AudioCodec>());
+ format.setVideoCodec(boxValue(ui->videoCodecBox).value<QMediaFormat::VideoCodec>());
+
+ mediaRecorder->setQuality(QMediaRecorder::Quality(ui->qualitySlider->value()));
+ mediaRecorder->setAudioSampleRate(ui->audioSampleRateBox->value());
+ mediaRecorder->setVideoResolution(boxValue(ui->videoResolutionBox).toSize());
+ mediaRecorder->setVideoFrameRate(boxValue(ui->videoFramerateBox).value<qreal>());
}
QVariant VideoSettings::boxValue(const QComboBox *box) const
diff --git a/examples/multimediawidgets/camera/videosettings.h b/examples/multimediawidgets/camera/videosettings.h
index 2cb690d27..28f8ce8a7 100644
--- a/examples/multimediawidgets/camera/videosettings.h
+++ b/examples/multimediawidgets/camera/videosettings.h
@@ -52,7 +52,6 @@
#define VIDEOSETTINGS_H
#include <QDialog>
-#include <QMediaEncoderSettings>
QT_BEGIN_NAMESPACE
class QComboBox;
@@ -68,8 +67,7 @@ public:
explicit VideoSettings(QMediaRecorder *mediaRecorder, QWidget *parent = nullptr);
~VideoSettings();
- QMediaEncoderSettings encoderSettings() const;
- void setEncoderSettings(const QMediaEncoderSettings&);
+ void applySettings();
protected:
void changeEvent(QEvent *e) override;
diff --git a/examples/multimediawidgets/player/player.cpp b/examples/multimediawidgets/player/player.cpp
index a5a0922ba..03420f3f1 100644
--- a/examples/multimediawidgets/player/player.cpp
+++ b/examples/multimediawidgets/player/player.cpp
@@ -70,7 +70,6 @@ Player::Player(QWidget *parent)
m_player = new QMediaPlayer(this);
m_audioOutput = new QAudioOutput(this);
m_player->setAudioOutput(m_audioOutput);
- m_audioOutput->setAudioRole(QAudio::VideoRole);
//! [create-objs]
//! [2]
diff --git a/src/multimedia/CMakeLists.txt b/src/multimedia/CMakeLists.txt
index 7e979863b..f60e13be7 100644
--- a/src/multimedia/CMakeLists.txt
+++ b/src/multimedia/CMakeLists.txt
@@ -56,7 +56,6 @@ qt_internal_add_module(Multimedia
qtmultimediaglobal.h qtmultimediaglobal_p.h
recording/qmediacapturesession.cpp recording/qmediacapturesession.h
recording/qmediarecorder.cpp recording/qmediarecorder.h recording/qmediarecorder_p.h
- recording/qmediaencodersettings.cpp recording/qmediaencodersettings.h
video/qabstractvideobuffer.cpp video/qabstractvideobuffer_p.h
video/qmemoryvideobuffer.cpp video/qmemoryvideobuffer_p.h
video/qvideoframe.cpp video/qvideoframe.h
diff --git a/src/multimedia/audio/qaudio.cpp b/src/multimedia/audio/qaudio.cpp
index e45a67868..0d7fd8dea 100644
--- a/src/multimedia/audio/qaudio.cpp
+++ b/src/multimedia/audio/qaudio.cpp
@@ -87,26 +87,6 @@ QT_BEGIN_NAMESPACE
*/
/*!
- \enum QAudio::Role
-
- This enum describes the role of an audio stream.
-
- \value UnknownRole The role is unknown or undefined
- \value MusicRole Music
- \value VideoRole Soundtrack from a movie or a video
- \value VoiceCommunicationRole Voice communications, such as telephony
- \value AlarmRole Alarm
- \value NotificationRole Notification, such as an incoming e-mail or a chat request
- \value RingtoneRole Ringtone
- \value AccessibilityRole For accessibility, such as with a screen reader
- \value SonificationRole Sonification, such as with user interface sounds
- \value GameRole Game audio
-
- \since 5.6
- \sa QMediaPlayer::setAudioRole()
-*/
-
-/*!
\enum QAudio::VolumeScale
This enum defines the different audio volume scales.
@@ -280,45 +260,6 @@ QDebug operator<<(QDebug dbg, QAudio::State state)
return dbg;
}
-QDebug operator<<(QDebug dbg, QAudio::Role role)
-{
- QDebugStateSaver saver(dbg);
- dbg.nospace();
- switch (role) {
- case QAudio::UnknownRole:
- dbg << "UnknownRole";
- break;
- case QAudio::AccessibilityRole:
- dbg << "AccessibilityRole";
- break;
- case QAudio::AlarmRole:
- dbg << "AlarmRole";
- break;
- case QAudio::GameRole:
- dbg << "GameRole";
- break;
- case QAudio::MusicRole:
- dbg << "MusicRole";
- break;
- case QAudio::NotificationRole:
- dbg << "NotificationRole";
- break;
- case QAudio::RingtoneRole:
- dbg << "RingtoneRole";
- break;
- case QAudio::SonificationRole:
- dbg << "SonificationRole";
- break;
- case QAudio::VideoRole:
- dbg << "VideoRole";
- break;
- case QAudio::VoiceCommunicationRole:
- dbg << "VoiceCommunicationRole";
- break;
- }
- return dbg;
-}
-
QDebug operator<<(QDebug dbg, QAudio::VolumeScale scale)
{
QDebugStateSaver saver(dbg);
diff --git a/src/multimedia/audio/qaudio.h b/src/multimedia/audio/qaudio.h
index c7852ecfc..ad824761d 100644
--- a/src/multimedia/audio/qaudio.h
+++ b/src/multimedia/audio/qaudio.h
@@ -56,19 +56,6 @@ namespace QAudio
enum Error { NoError, OpenError, IOError, UnderrunError, FatalError };
enum State { ActiveState, SuspendedState, StoppedState, IdleState };
- enum Role {
- UnknownRole,
- MusicRole,
- VideoRole,
- VoiceCommunicationRole,
- AlarmRole,
- NotificationRole,
- RingtoneRole,
- AccessibilityRole,
- SonificationRole,
- GameRole,
- };
-
enum VolumeScale {
LinearVolumeScale,
CubicVolumeScale,
@@ -82,7 +69,6 @@ namespace QAudio
#ifndef QT_NO_DEBUG_STREAM
Q_MULTIMEDIA_EXPORT QDebug operator<<(QDebug dbg, QAudio::Error error);
Q_MULTIMEDIA_EXPORT QDebug operator<<(QDebug dbg, QAudio::State state);
-Q_MULTIMEDIA_EXPORT QDebug operator<<(QDebug dbg, QAudio::Role role);
Q_MULTIMEDIA_EXPORT QDebug operator<<(QDebug dbg, QAudio::VolumeScale role);
#endif
diff --git a/src/multimedia/audio/qaudiodevice.h b/src/multimedia/audio/qaudiodevice.h
index 4541f60bc..367733c77 100644
--- a/src/multimedia/audio/qaudiodevice.h
+++ b/src/multimedia/audio/qaudiodevice.h
@@ -63,6 +63,7 @@ class Q_MULTIMEDIA_EXPORT QAudioDevice
Q_PROPERTY(QByteArray id READ id CONSTANT)
Q_PROPERTY(QString description READ description CONSTANT)
Q_PROPERTY(bool isDefault READ isDefault CONSTANT)
+ Q_PROPERTY(Mode mode READ mode CONSTANT)
public:
enum Mode {
Input,
diff --git a/src/multimedia/audio/qaudiooutput.cpp b/src/multimedia/audio/qaudiooutput.cpp
index 2f03f78b2..95cdc02e7 100644
--- a/src/multimedia/audio/qaudiooutput.cpp
+++ b/src/multimedia/audio/qaudiooutput.cpp
@@ -152,23 +152,6 @@ bool QAudioOutput::isMuted() const
return d->muted;
}
-QAudio::Role QAudioOutput::audioRole() const
-{
- return d->role;
-}
-
-/*!
- Returns a list of supported audio roles.
-
- If setting the audio role is not supported, an empty list is returned.
-
- \sa audioRole
-*/
-QList<QAudio::Role> QAudioOutput::supportedAudioRoles() const
-{
- return d->supportedAudioRoles();
-}
-
void QAudioOutput::setMuted(bool muted)
{
if (d->muted == muted)
@@ -178,15 +161,4 @@ void QAudioOutput::setMuted(bool muted)
emit mutedChanged(muted);
}
-void QAudioOutput::setAudioRole(QAudio::Role audioRole)
-{
- if (d->role == audioRole)
- return;
- if (!d->supportedAudioRoles().contains(audioRole))
- return;
- d->role = audioRole;
- d->setAudioRole(d->role);
- emit audioRoleChanged(d->role);
-}
-
#include "moc_qaudiooutput.cpp"
diff --git a/src/multimedia/audio/qaudiooutput.h b/src/multimedia/audio/qaudiooutput.h
index 9a4cf3998..0f1461a55 100644
--- a/src/multimedia/audio/qaudiooutput.h
+++ b/src/multimedia/audio/qaudiooutput.h
@@ -55,7 +55,6 @@ class Q_MULTIMEDIA_EXPORT QAudioOutput : public QObject
Q_PROPERTY(QAudioDevice device READ device WRITE setDevice NOTIFY deviceChanged)
Q_PROPERTY(float volume READ volume WRITE setVolume NOTIFY volumeChanged)
Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged)
- Q_PROPERTY(QAudio::Role audioRole READ audioRole WRITE setAudioRole NOTIFY audioRoleChanged)
public:
explicit QAudioOutput(QObject *parent = nullptr);
@@ -65,21 +64,16 @@ public:
QAudioDevice device() const;
float volume() const;
bool isMuted() const;
- QAudio::Role audioRole() const;
-
- QList<QAudio::Role> supportedAudioRoles() const;
public Q_SLOTS:
void setDevice(const QAudioDevice &device);
void setVolume(float volume);
void setMuted(bool muted);
- void setAudioRole(QAudio::Role audioRole);
Q_SIGNALS:
void deviceChanged();
void volumeChanged(float volume);
void mutedChanged(bool muted);
- void audioRoleChanged(QAudio::Role role);
public:
QPlatformAudioOutput *handle() const { return d; }
diff --git a/src/multimedia/audio/qaudiosink.cpp b/src/multimedia/audio/qaudiosink.cpp
index 10ee5e470..33630306b 100644
--- a/src/multimedia/audio/qaudiosink.cpp
+++ b/src/multimedia/audio/qaudiosink.cpp
@@ -334,26 +334,6 @@ qreal QAudioSink::volume() const
}
/*!
- \property QMediaPlayer::audioRole
- \brief the role of the audio stream played by the media player.
-
- It can be set to specify the type of audio being played, allowing the system to make
- appropriate decisions when it comes to volume, routing or post-processing.
-
- The audio role must be set before calling setMedia().
-*/
-
-QAudio::Role QAudioSink::audioRole() const
-{
- return d->role();
-}
-
-void QAudioSink::setAudioRole(QAudio::Role role)
-{
- d->setRole(role);
-}
-
-/*!
\fn QAudioSink::stateChanged(QAudio::State state)
This signal is emitted when the device \a state has changed.
This is the current state of the audio output.
diff --git a/src/multimedia/audio/qaudiosink.h b/src/multimedia/audio/qaudiosink.h
index c3fc30bf0..049011e98 100644
--- a/src/multimedia/audio/qaudiosink.h
+++ b/src/multimedia/audio/qaudiosink.h
@@ -91,9 +91,6 @@ public:
void setVolume(qreal);
qreal volume() const;
- QAudio::Role audioRole() const;
- void setAudioRole(QAudio::Role role);
-
Q_SIGNALS:
void stateChanged(QAudio::State state);
diff --git a/src/multimedia/audio/qaudiosystem.cpp b/src/multimedia/audio/qaudiosystem.cpp
index 36f4abcb0..5c43b68f6 100644
--- a/src/multimedia/audio/qaudiosystem.cpp
+++ b/src/multimedia/audio/qaudiosystem.cpp
@@ -141,11 +141,6 @@ QT_BEGIN_NAMESPACE
Returns the volume in the range 0.0 and 1.0.
*/
-void QPlatformAudioSink::setRole(QAudio::Role role)
-{
- m_role = role;
-}
-
/*!
\fn QPlatformAudioSink::errorChanged(QAudio::Error error)
This signal is emitted when the \a error state has changed.
diff --git a/src/multimedia/audio/qaudiosystem_p.h b/src/multimedia/audio/qaudiosystem_p.h
index 2adfcd0f2..ae1c54dde 100644
--- a/src/multimedia/audio/qaudiosystem_p.h
+++ b/src/multimedia/audio/qaudiosystem_p.h
@@ -84,16 +84,12 @@ public:
virtual QAudioFormat format() const = 0;
virtual void setVolume(qreal) {}
virtual qreal volume() const { return 1.0; }
- QAudio::Role role() const { return m_role; }
- virtual void setRole(QAudio::Role role);
QElapsedTimer elapsedTime;
Q_SIGNALS:
void errorChanged(QAudio::Error error);
void stateChanged(QAudio::State state);
-protected:
- QAudio::Role m_role = QAudio::UnknownRole;
};
class QPlatformAudioSource : public QObject
diff --git a/src/multimedia/audio/qsoundeffect.cpp b/src/multimedia/audio/qsoundeffect.cpp
index 126d8a727..80fcef9c6 100644
--- a/src/multimedia/audio/qsoundeffect.cpp
+++ b/src/multimedia/audio/qsoundeffect.cpp
@@ -96,10 +96,9 @@ public:
QAudioSink *m_audioOutput = nullptr;
QSample *m_sample = nullptr;
bool m_muted = false;
- qreal m_volume = 1.0;
+ float m_volume = 1.0;
bool m_sampleReady = false;
qint64 m_offset = 0;
- QAudio::Role m_role;
QAudioDevice m_audioDevice;
};
@@ -108,7 +107,6 @@ QSoundEffectPrivate::QSoundEffectPrivate(QSoundEffect *q, const QAudioDevice &au
, q_ptr(q)
, m_audioDevice(audioDevice)
{
- m_role = QAudio::UnknownRole;
open(QIODevice::ReadOnly);
}
@@ -485,6 +483,20 @@ void QSoundEffect::setLoopCount(int loopCount)
emit loopCountChanged();
}
+QAudioDevice QSoundEffect::audioDevice()
+{
+ return d->m_audioDevice;
+}
+
+void QSoundEffect::setAudioDevice(const QAudioDevice &device)
+{
+ if (d->m_audioDevice == device)
+ return;
+ // ### recreate the QAudioSink if needed
+ d->m_audioDevice = device;
+ emit audioDeviceChanged();
+}
+
/*!
\qmlproperty int QtMultimedia::SoundEffect::loopsRemaining
@@ -527,7 +539,7 @@ int QSoundEffect::loopsRemaining() const
/*!
Returns the current volume of this sound effect, from 0.0 (silent) to 1.0 (maximum volume).
*/
-qreal QSoundEffect::volume() const
+float QSoundEffect::volume() const
{
if (d->m_audioOutput && !d->m_muted)
return d->m_audioOutput->volume();
@@ -547,9 +559,9 @@ qreal QSoundEffect::volume() const
will produce linear changes in perceived loudness, which is what a user would normally expect
from a volume control. See QAudio::convertVolume() for more details.
*/
-void QSoundEffect::setVolume(qreal volume)
+void QSoundEffect::setVolume(float volume)
{
- volume = qBound(qreal(0.0), volume, qreal(1.0));
+ volume = qBound(0.0f, volume, 1.0f);
if (d->m_volume == volume)
return;
@@ -724,47 +736,6 @@ QSoundEffect::Status QSoundEffect::status() const
This setting will be ignored on platforms that do not
support audio categories.
*/
-/*!
- Returns the audio role for this sound effect.
-
- Some platforms can perform different audio routing
- for different roles, or may allow the user to
- set different volume levels for different roles.
-
- This setting will be ignored on platforms that do not
- support audio roles.
-
- \sa setRole()
-*/
-QAudio::Role QSoundEffect::audioRole() const
-{
- return d->m_role;
-}
-
-/*!
- Sets the \e category of this sound effect to \a category.
-
- Some platforms can perform different audio routing
- for different categories, or may allow the user to
- set different volume levels for different categories.
-
- This setting will be ignored on platforms that do not
- support audio categories.
-
- If this setting is changed while a sound effect is playing
- it will only take effect when the sound effect has stopped
- playing.
-
- \sa category()
- */
-void QSoundEffect::setAudioRole(QAudio::Role role)
-{
- if (d->m_role != role && !d->m_playing) {
- d->m_role = role;
- emit audioRoleChanged();
- }
-}
-
/*!
\qmlmethod QtMultimedia::SoundEffect::stop()
diff --git a/src/multimedia/audio/qsoundeffect.h b/src/multimedia/audio/qsoundeffect.h
index fef49fb34..5b806b382 100644
--- a/src/multimedia/audio/qsoundeffect.h
+++ b/src/multimedia/audio/qsoundeffect.h
@@ -60,11 +60,11 @@ class Q_MULTIMEDIA_EXPORT QSoundEffect : public QObject
Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged)
Q_PROPERTY(int loops READ loopCount WRITE setLoopCount NOTIFY loopCountChanged)
Q_PROPERTY(int loopsRemaining READ loopsRemaining NOTIFY loopsRemainingChanged)
- Q_PROPERTY(qreal volume READ volume WRITE setVolume NOTIFY volumeChanged)
+ Q_PROPERTY(float volume READ volume WRITE setVolume NOTIFY volumeChanged)
Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged)
Q_PROPERTY(bool playing READ isPlaying NOTIFY playingChanged)
Q_PROPERTY(Status status READ status NOTIFY statusChanged)
- Q_PROPERTY(QAudio::Role audioRole READ audioRole WRITE setAudioRole NOTIFY audioRoleChanged)
+ Q_PROPERTY(QAudioDevice audioDevice READ audioDevice WRITE setAudioDevice NOTIFY audioDeviceChanged)
public:
enum Loop
@@ -95,8 +95,11 @@ public:
int loopsRemaining() const;
void setLoopCount(int loopCount);
- qreal volume() const;
- void setVolume(qreal volume);
+ QAudioDevice audioDevice();
+ void setAudioDevice(const QAudioDevice &device);
+
+ float volume() const;
+ void setVolume(float volume);
bool isMuted() const;
void setMuted(bool muted);
@@ -106,9 +109,6 @@ public:
bool isPlaying() const;
Status status() const;
- QAudio::Role audioRole() const;
- void setAudioRole(QAudio::Role);
-
Q_SIGNALS:
void sourceChanged();
void loopCountChanged();
@@ -118,7 +118,7 @@ Q_SIGNALS:
void loadedChanged();
void playingChanged();
void statusChanged();
- void audioRoleChanged();
+ void audioDeviceChanged();
public Q_SLOTS:
void play();
diff --git a/src/multimedia/camera/qcamera.cpp b/src/multimedia/camera/qcamera.cpp
index 9358e8c0d..4a7ef70d6 100644
--- a/src/multimedia/camera/qcamera.cpp
+++ b/src/multimedia/camera/qcamera.cpp
@@ -119,9 +119,9 @@ void QCameraPrivate::init()
return;
}
- if (cameraInfo.isNull())
+ if (cameraDevice.isNull())
_q_error(QCamera::CameraError, QString::fromUtf8("Invalid camera specified"));
- control->setCamera(cameraInfo);
+ control->setCamera(cameraDevice);
q->connect(control, SIGNAL(activeChanged(bool)), q, SIGNAL(activeChanged(bool)));
q->connect(control, SIGNAL(error(int,QString)), q, SLOT(_q_error(int,QString)));
}
@@ -140,17 +140,17 @@ QCamera::QCamera(QObject *parent)
/*!
\since 5.3
- Construct a QCamera from a camera description \a cameraInfo and \a parent.
+ Construct a QCamera from a camera description \a cameraDevice and \a parent.
*/
-QCamera::QCamera(const QCameraDevice &cameraInfo, QObject *parent)
+QCamera::QCamera(const QCameraDevice &cameraDevice, QObject *parent)
: QObject(*new QCameraPrivate, parent)
{
Q_D(QCamera);
- d->cameraInfo = cameraInfo;
+ d->cameraDevice = cameraDevice;
d->init();
- setCameraInfo(cameraInfo);
+ setCameraDevice(cameraDevice);
}
/*!
@@ -180,7 +180,7 @@ QCamera::QCamera(QCameraDevice::Position position, QObject *parent)
}
if (info.isNull())
info = QMediaDevices::defaultVideoInput();
- d->cameraInfo = info;
+ d->cameraDevice = info;
d->init();
}
@@ -204,7 +204,7 @@ QCamera::~QCamera()
bool QCamera::isAvailable() const
{
Q_D(const QCamera);
- return d->control && !d->cameraInfo.isNull();
+ return d->control && !d->cameraDevice.isNull();
}
/*!
@@ -316,29 +316,29 @@ void QCamera::setCaptureSession(QMediaCaptureSession *session)
/*!
Returns the QCameraDevice object associated with this camera.
*/
-QCameraDevice QCamera::cameraInfo() const
+QCameraDevice QCamera::cameraDevice() const
{
Q_D(const QCamera);
- return d->cameraInfo;
+ return d->cameraDevice;
}
/*!
Sets the camera object to use the physical camera described by
- \a cameraInfo.
+ \a cameraDevice.
*/
-void QCamera::setCameraInfo(const QCameraDevice &cameraInfo)
+void QCamera::setCameraDevice(const QCameraDevice &cameraDevice)
{
Q_D(QCamera);
- if (d->cameraInfo == cameraInfo)
+ if (d->cameraDevice == cameraDevice)
return;
- d->cameraInfo = cameraInfo;
- if (d->cameraInfo.isNull())
+ d->cameraDevice = cameraDevice;
+ if (d->cameraDevice.isNull())
d->_q_error(QCamera::CameraError, QString::fromUtf8("Invalid camera specified"));
else
d->_q_error(QCamera::NoError, QString());
if (d->control)
- d->control->setCamera(d->cameraInfo);
- emit cameraInfoChanged();
+ d->control->setCamera(d->cameraDevice);
+ emit cameraDeviceChanged();
setCameraFormat({});
}
@@ -819,29 +819,35 @@ int QCamera::maximumIsoSensitivity() const
return d->control ? d->control->maxIso() : -1;
}
-float QCamera::minimumShutterSpeed() const
+/*!
+ The minimal exposure time in seconds.
+*/
+float QCamera::minimumExposureTime() const
{
Q_D(const QCamera);
- return d->control ? d->control->minShutterSpeed() : -1.;
+ return d->control ? d->control->minExposureTime() : -1.;
}
-float QCamera::maximumShutterSpeed() const
+/*!
+ The maximal exposure time in seconds.
+*/
+float QCamera::maximumExposureTime() const
{
Q_D(const QCamera);
- return d->control ? d->control->maxShutterSpeed() : -1.;
+ return d->control ? d->control->maxExposureTime() : -1.;
}
/*!
\property QCamera::exposureTime
- \brief Camera's shutter speed in seconds.
+ \brief Camera's exposure time in seconds.
- \sa supportedShutterSpeeds(), setAutoShutterSpeed(), setManualExposureTime()
+ \sa minimumExposureTime(), maximumExposureTime(), setManualExposureTime()
*/
/*!
- \fn QCamera::exposureTimeChanged(qreal speed)
+ \fn QCamera::exposureTimeChanged(float time)
- Signals that a camera's shutter \a speed has changed.
+ Signals that a camera's exposure \a time has changed.
*/
/*!
@@ -883,9 +889,8 @@ float QCamera::manualExposureTime() const
}
/*!
- Turn on auto shutter speed
+ Use automatically calculated exposure time
*/
-
void QCamera::setAutoExposureTime()
{
Q_D(QCamera);
@@ -946,7 +951,7 @@ void QCamera::setAutoExposureTime()
/*!
\fn void QCamera::exposureTimeRangeChanged()
- Signal emitted when the shutter speed range has changed.
+ Signal emitted when the exposure time range has changed.
*/
diff --git a/src/multimedia/camera/qcamera.h b/src/multimedia/camera/qcamera.h
index 881579ae0..2dccb1080 100644
--- a/src/multimedia/camera/qcamera.h
+++ b/src/multimedia/camera/qcamera.h
@@ -65,7 +65,7 @@ class Q_MULTIMEDIA_EXPORT QCamera : public QObject
Q_OBJECT
Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged)
Q_PROPERTY(QCamera::Status status READ status NOTIFY statusChanged)
- Q_PROPERTY(QCameraDevice cameraInfo READ cameraInfo WRITE setCameraInfo NOTIFY cameraInfoChanged)
+ Q_PROPERTY(QCameraDevice cameraDevice READ cameraDevice WRITE setCameraDevice NOTIFY cameraDeviceChanged)
Q_PROPERTY(Error error READ error NOTIFY errorChanged)
Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged)
Q_PROPERTY(QCameraFormat cameraFormat READ cameraFormat WRITE setCameraFormat NOTIFY cameraFormatChanged)
@@ -175,7 +175,7 @@ public:
Q_DECLARE_FLAGS(Features, Feature)
explicit QCamera(QObject *parent = nullptr);
- explicit QCamera(const QCameraDevice& cameraInfo, QObject *parent = nullptr);
+ explicit QCamera(const QCameraDevice& cameraDevice, QObject *parent = nullptr);
explicit QCamera(QCameraDevice::Position position, QObject *parent = nullptr);
~QCamera();
@@ -186,8 +186,8 @@ public:
QMediaCaptureSession *captureSession() const;
- QCameraDevice cameraInfo() const;
- void setCameraInfo(const QCameraDevice &cameraInfo);
+ QCameraDevice cameraDevice() const;
+ void setCameraDevice(const QCameraDevice &cameraDevice);
QCameraFormat cameraFormat() const;
void setCameraFormat(const QCameraFormat &format);
@@ -235,8 +235,8 @@ public:
int minimumIsoSensitivity() const;
int maximumIsoSensitivity() const;
- float minimumShutterSpeed() const;
- float maximumShutterSpeed() const;
+ float minimumExposureTime() const;
+ float maximumExposureTime() const;
WhiteBalanceMode whiteBalanceMode() const;
Q_INVOKABLE bool isWhiteBalanceModeSupported(WhiteBalanceMode mode) const;
@@ -270,7 +270,7 @@ Q_SIGNALS:
void statusChanged(QCamera::Status status);
void errorChanged();
void errorOccurred(QCamera::Error error, const QString &errorString);
- void cameraInfoChanged();
+ void cameraDeviceChanged();
void cameraFormatChanged();
void supportedFeaturesChanged();
@@ -285,7 +285,7 @@ Q_SIGNALS:
void flashModeChanged();
void torchModeChanged();
- void exposureTimeChanged(qreal speed);
+ void exposureTimeChanged(float speed);
void isoSensitivityChanged(int);
void exposureCompensationChanged(qreal);
void exposureModeChanged();
diff --git a/src/multimedia/camera/qcamera_p.h b/src/multimedia/camera/qcamera_p.h
index 58f041d29..cb940eed2 100644
--- a/src/multimedia/camera/qcamera_p.h
+++ b/src/multimedia/camera/qcamera_p.h
@@ -79,7 +79,7 @@ public:
QCamera::Error error;
QString errorString;
- QCameraDevice cameraInfo;
+ QCameraDevice cameraDevice;
QCameraFormat cameraFormat;
void _q_error(int error, const QString &errorString);
diff --git a/src/multimedia/camera/qcameraimagecapture.cpp b/src/multimedia/camera/qcameraimagecapture.cpp
index 0a503479b..107688600 100644
--- a/src/multimedia/camera/qcameraimagecapture.cpp
+++ b/src/multimedia/camera/qcameraimagecapture.cpp
@@ -38,7 +38,6 @@
****************************************************************************/
#include <qcameraimagecapture.h>
#include <private/qplatformcameraimagecapture_p.h>
-#include <qmediaencodersettings.h>
#include <qmediametadata.h>
#include <private/qplatformmediacapture_p.h>
#include <private/qplatformmediaintegration_p.h>
diff --git a/src/multimedia/camera/qcameraimagecapture.h b/src/multimedia/camera/qcameraimagecapture.h
index 015b7f0a3..20b2bd6d1 100644
--- a/src/multimedia/camera/qcameraimagecapture.h
+++ b/src/multimedia/camera/qcameraimagecapture.h
@@ -41,7 +41,6 @@
#define QCAMERAIMAGECAPTURE_H
#include <QtCore/qobject.h>
-#include <QtMultimedia/qmediaencodersettings.h>
#include <QtMultimedia/qvideoframe.h>
#include <QtMultimedia/qmediaenumdebug.h>
diff --git a/src/multimedia/doc/snippets/multimedia-snippets/camera.cpp b/src/multimedia/doc/snippets/multimedia-snippets/camera.cpp
index 2306265b7..0407be1aa 100644
--- a/src/multimedia/doc/snippets/multimedia-snippets/camera.cpp
+++ b/src/multimedia/doc/snippets/multimedia-snippets/camera.cpp
@@ -53,7 +53,7 @@
/* Globals so that everything is consistent. */
QCamera *camera = 0;
-QMediaRecorder *encoder = 0;
+QMediaRecorder *recorder = 0;
QCameraImageCapture *imageCapture = 0;
//! [Camera overview check]
@@ -110,18 +110,18 @@ void overview_viewfinder_orientation()
//! [Camera overview viewfinder orientation]
// Assuming a QImage has been created from the QVideoFrame that needs to be presented
QImage videoFrame;
- QCameraDevice cameraInfo(camera); // needed to get the camera sensor position and orientation
+ QCameraDevice cameraDevice(camera); // needed to get the camera sensor position and orientation
// Get the current display orientation
const QScreen *screen = QGuiApplication::primaryScreen();
const int screenAngle = screen->angleBetween(screen->nativeOrientation(), screen->orientation());
int rotation;
- if (cameraInfo.position() == QCameraDevice::BackFace) {
- rotation = (cameraInfo.orientation() - screenAngle) % 360;
+ if (cameraDevice.position() == QCameraDevice::BackFace) {
+ rotation = (cameraDevice.orientation() - screenAngle) % 360;
} else {
// Front position, compensate the mirror
- rotation = (360 - cameraInfo.orientation() + screenAngle) % 360;
+ rotation = (360 - cameraDevice.orientation() + screenAngle) % 360;
}
// Rotate the frame so it always shows in the correct orientation
@@ -151,23 +151,22 @@ void overview_movie()
QMediaCaptureSession captureSession;
camera = new QCamera;
captureSession.setCamera(camera);
- encoder = new QMediaRecorder(camera);
- captureSession.setEncoder(encoder);
+ recorder = new QMediaRecorder(camera);
+ captureSession.setMediaEncoder(recorder);
camera->start();
- // setup output format for the encoder
+ // setup output format for the recorder
QMediaFormat format(QMediaFormat::MPEG4);
- format.setVideoCodec(QMediaEncoderSettings::VideoCodec::H264);
- format.setAudioCodec(QMediaEncoderSettings::AudioCodec::MP3);
- QMediaEncoderSettings settings(format);
- encoder->setEncoderSettings(settings);
+ format.setVideoCodec(QMediaRecorder::VideoCodec::H264);
+ format.setAudioCodec(QMediaRecorder::AudioCodec::MP3);
+ recorder->setMediaFormat(settings);
//on shutter button pressed
- encoder->record();
+ recorder->record();
// sometime later, or on another press
- encoder->stop();
+ recorder->stop();
//! [Camera overview movie]
}
@@ -175,8 +174,8 @@ void camera_listing()
{
//! [Camera listing]
const QList<QCameraDevice> cameras = QMediaDevices::videoInputs();
- for (const QCameraDevice &cameraInfo : cameras)
- qDebug() << cameraInfo.description();
+ for (const QCameraDevice &cameraDevice : cameras)
+ qDebug() << cameraDevice.description();
//! [Camera listing]
}
@@ -184,9 +183,9 @@ void camera_selection()
{
//! [Camera selection]
const QList<QCameraDevice> cameras = QMediaDevices::videoInputs();
- for (const QCameraDevice &cameraInfo : cameras) {
- if (cameraInfo.description() == "mycamera")
- camera = new QCamera(cameraInfo);
+ for (const QCameraDevice &cameraDevice : cameras) {
+ if (cameraDevice.description() == "mycamera")
+ camera = new QCamera(cameraDevice);
}
//! [Camera selection]
}
@@ -195,14 +194,14 @@ void camera_info()
{
//! [Camera info]
QCamera myCamera;
- QCameraDevice cameraInfo = camera->cameraInfo();
+ QCameraDevice cameraDevice = camera->cameraDevice();
- if (cameraInfo.position() == QCameraDevice::FrontFace)
+ if (cameraDevice.position() == QCameraDevice::FrontFace)
qDebug() << "The camera is on the front face of the hardware system.";
- else if (cameraInfo.position() == QCameraDevice::BackFace)
+ else if (cameraDevice.position() == QCameraDevice::BackFace)
qDebug() << "The camera is on the back face of the hardware system.";
- qDebug() << "The camera sensor orientation is " << cameraInfo.orientation() << " degrees.";
+ qDebug() << "The camera sensor orientation is " << cameraDevice.orientation() << " degrees.";
//! [Camera info]
}
diff --git a/src/multimedia/doc/snippets/multimedia-snippets/media.cpp b/src/multimedia/doc/snippets/multimedia-snippets/media.cpp
index f2ed71cf7..fd76e679e 100644
--- a/src/multimedia/doc/snippets/multimedia-snippets/media.cpp
+++ b/src/multimedia/doc/snippets/multimedia-snippets/media.cpp
@@ -59,10 +59,9 @@ class MediaExample : public QObject {
void MediaControl();
void MediaPlayer();
- void MediaRecorder();
void AudioRecorder();
- void EncoderSettings();
- void ImageEncoderSettings();
+ void recorderSettings();
+ void imageSettings();
private:
// Common naming
@@ -87,26 +86,22 @@ void MediaExample::MediaControl()
}
-void MediaExample::EncoderSettings()
+void MediaExample::recorderSettings()
{
//! [Media encoder settings]
QMediaFormat format(QMediaFormat::MPEG4);
- format.setVideoCodec(QMediaEncoderSettings::VideoCodec::H264);
- format.setAudioCodec(QMediaEncoderSettings::AudioCodec::MP3);
- QMediaEncoderSettings settings(format);
+ format.setVideoCodec(QMediaRecorder::VideoCodec::H264);
+ format.setAudioCodec(QMediaRecorder::AudioCodec::MP3);
- recorder->setEncoderSettings(settings);
+ recorder->setMediaFormat(settings);
//! [Media encoder settings]
}
-void MediaExample::ImageEncoderSettings()
+void MediaExample::imageSettings()
{
//! [Image encoder settings]
- QImageEncoderSettings imageSettings;
- imageSettings.setFormat(QCameraImageCapture::JPEG);
- imageSettings.setResolution(1600, 1200);
-
- imageCapture->setEncodingSettings(imageSettings);
+ imageCapture->setFileFormat(QCameraImageCapture::JPEG);
+ imageCapture->setResolution(1600, 1200);
//! [Image encoder settings]
}
@@ -129,33 +124,16 @@ void MediaExample::MediaPlayer()
//! [Local playback]
}
-void MediaExample::MediaRecorder()
-{
- //! [Media recorder]
- recorder = new QMediaRecorder(camera);
-
- QMediaEncoderSettings audioSettings(QMediaFormat::MP3);
- audioSettings.setQuality(QMediaEncoderSettings::HighQuality);
-
- recorder->setAudioSettings(audioSettings);
-
- recorder->setOutputLocation(QUrl::fromLocalFile(fileName));
- recorder->record();
- //! [Media recorder]
-}
-
void MediaExample::AudioRecorder()
{
//! [Audio recorder]
+ QMediaCaptureSession session;
+ QAudioInput audioInput;
+ session.setAudioInput(&input);
QMediaRecorder recorder;
- recorder.setCaptureMode(QMediaRecorder::AudioOnly);
-
- QMediaEncoderSettings audioSettings(QMediaFormat::MP3);
- audioSettings.setQuality(QMediaEncoderSettings::HighQuality);
-
- recorder.setEncoderSettings(audioSettings);
-
- recorder.setOutputLocation(QUrl::fromLocalFile("test.amr"));
+ session.setMediaEncoder(&recorder);
+ recorder.setQuality(QMediaRecorder::HighQuality);
+ recorder.setOutputLocation(QUrl::fromLocalFile("test.mp3"));
recorder.record();
//! [Audio recorder]
}
diff --git a/src/multimedia/doc/src/cameraoverview.qdoc b/src/multimedia/doc/src/cameraoverview.qdoc
index f1f33d79a..001ca1832 100644
--- a/src/multimedia/doc/src/cameraoverview.qdoc
+++ b/src/multimedia/doc/src/cameraoverview.qdoc
@@ -116,12 +116,12 @@ In C++:
\snippet multimedia-snippets/camera.cpp Camera selection
-In QML, you can set the \c Camera \l{Camera::cameraInfo}{cameraInfo} property. All available cameras can
+In QML, you can set the \c Camera \l{Camera::cameraDevice}{cameraDevice} property. All available cameras can
be retrieved from \l{QtMultimedia::MediaDevices::availableCameras}{MediaDevices.availableCameras}:
\qml
Camera {
- cameraInfo: QtMultimedia.availableCameras[0]
+ cameraDevice: QtMultimedia.availableCameras[0]
}
\endqml
@@ -140,7 +140,7 @@ Camera {
}
\endqml
-If neither cameraInfo nor position is specified, the default camera will be used. On desktop
+If neither cameraDevice nor position is specified, the default camera will be used. On desktop
platforms, the default camera is set by the user in the system settings. On a mobile device, the
back-facing camera is usually the default camera. You can get information about the default camera
using \l QCameraDevice::defaultCamera() in C++ or
diff --git a/src/multimedia/doc/src/changes.qdoc b/src/multimedia/doc/src/changes.qdoc
index 4855620a4..cab8c3b15 100644
--- a/src/multimedia/doc/src/changes.qdoc
+++ b/src/multimedia/doc/src/changes.qdoc
@@ -67,7 +67,7 @@ QMediaEncoderSettings for details
and video outputs may be added in a future release.
\row
\li QAudioRecorder and the Audio QML type
- \li QMediaRecorder and the MediaRecorder QML type provide the same functionality
+ \li Use a QMediaCaptureSession or the CaptureSession QML type
\row
\li QMediaObject and QMediaBindableInterface
\li These classes have been removed in favor of a more direct API for setting up connections
@@ -125,11 +125,11 @@ changed in ways that may affect previously written code. This table highlights s
to enum based keys, and reducing the set of supported keys to the ones that
can be supported on most platforms.
\row
- \li QMediaFormat and QMediaEncoderSettings
- \li Handling of formats for encoded media and the settings for the media encoder have
+ \li QMediaFormat
+ \li Handling of formats for encoded media and the settings for the media recorder have
changed significantly. While Qt 5 provided a string based API and separated file format,
audio and video codecs into 3 classes, Qt 6 does unify the formats in the QMediaFormat class,
- and encoder settings in QMediaEncoderSettings. Setting up of file formats and codecs is now
+ and other settings in QMediaRecorder. Setting up of file formats and codecs is now
enum based and doesn't use strings anymore. This puts some limitations on the set of codecs
that can be used, but helps provide a consistent cross-platform API and reduces the changes
for inconsistencies.
diff --git a/src/multimedia/platform/android/audio/qandroidaudiosink.cpp b/src/multimedia/platform/android/audio/qandroidaudiosink.cpp
index 48a536819..1a0b622a3 100644
--- a/src/multimedia/platform/android/audio/qandroidaudiosink.cpp
+++ b/src/multimedia/platform/android/audio/qandroidaudiosink.cpp
@@ -270,43 +270,6 @@ qreal QAndroidAudioSink::volume() const
return m_volume;
}
-void QAndroidAudioSink::setRole(QAudio::Role role)
-{
- QPlatformAudioSink::setRole(role);
-#ifdef ANDROID
- switch (role) {
- case QAudio::MusicRole:
- Q_FALLTHROUGH();
- case QAudio::VideoRole:
- m_streamType = SL_ANDROID_STREAM_MEDIA;
- break;
- case QAudio::VoiceCommunicationRole:
- m_streamType = SL_ANDROID_STREAM_VOICE;
- case QAudio::NotificationRole:
- m_streamType = SL_ANDROID_STREAM_NOTIFICATION;
- break;
- case QAudio::AlarmRole:
- m_streamType = SL_ANDROID_STREAM_ALARM;
- break;
- case QAudio::RingtoneRole:
- m_streamType = SL_ANDROID_STREAM_RING;
- break;
- case QAudio::AccessibilityRole:
-#define STREAM_ACCESSIBILITY 0xa // AudioManager.STREAM_ACCESSIBILITY
- m_streamType = STREAM_ACCESSIBILITY;
- case QAudio::SonificationRole:
- Q_FALLTHROUGH();
- case QAudio::GameRole:
- Q_FALLTHROUGH();
- case QAudio::UnknownRole:
- m_streamType = -1;
- break;
- }
-
- m_startRequiresInit = true;
-#endif // ANDROID
-}
-
void QAndroidAudioSink::onEOSEvent()
{
if (m_state != QAudio::ActiveState)
diff --git a/src/multimedia/platform/android/audio/qandroidaudiosink_p.h b/src/multimedia/platform/android/audio/qandroidaudiosink_p.h
index c8cf2b91a..40b964dc2 100644
--- a/src/multimedia/platform/android/audio/qandroidaudiosink_p.h
+++ b/src/multimedia/platform/android/audio/qandroidaudiosink_p.h
@@ -86,8 +86,6 @@ public:
void setVolume(qreal volume) override;
qreal volume() const override;
- void setRole(QAudio::Role role) override;
-
private:
friend class SLIODevicePrivate;
diff --git a/src/multimedia/platform/android/common/qandroidaudiooutput_p.h b/src/multimedia/platform/android/common/qandroidaudiooutput_p.h
index 65e40a300..e17f158fc 100644
--- a/src/multimedia/platform/android/common/qandroidaudiooutput_p.h
+++ b/src/multimedia/platform/android/common/qandroidaudiooutput_p.h
@@ -58,19 +58,6 @@ class Q_MULTIMEDIA_EXPORT QAndroidAudioOutput : public QPlatformAudioOutput
{
public:
QAndroidAudioOutput(QAudioOutput *qq) : QPlatformAudioOutput(qq) {}
-
- virtual QList<QAudio::Role> supportedAudioRoles() const {
- return QList<QAudio::Role>()
- << QAudio::VoiceCommunicationRole
- << QAudio::MusicRole
- << QAudio::VideoRole
- << QAudio::SonificationRole
- << QAudio::AlarmRole
- << QAudio::NotificationRole
- << QAudio::RingtoneRole
- << QAudio::AccessibilityRole
- << QAudio::GameRole;
- }
};
QT_END_NAMESPACE
diff --git a/src/multimedia/platform/android/mediacapture/qandroidcamerasession_p.h b/src/multimedia/platform/android/mediacapture/qandroidcamerasession_p.h
index 75929b489..5513e5399 100644
--- a/src/multimedia/platform/android/mediacapture/qandroidcamerasession_p.h
+++ b/src/multimedia/platform/android/mediacapture/qandroidcamerasession_p.h
@@ -53,7 +53,6 @@
//
#include <qcamera.h>
-#include <qmediaencodersettings.h>
#include <QCameraImageCapture>
#include <QSet>
#include <QMutex>
diff --git a/src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol.cpp b/src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol.cpp
index 85b4e3df4..7aff61200 100644
--- a/src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol.cpp
+++ b/src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol.cpp
@@ -220,11 +220,6 @@ void QAndroidMediaPlayerControl::setMuted(bool muted)
mPendingMute = -1;
}
-void QAndroidMediaPlayerControl::setAudioRole(QAudio::Role role)
-{
- mMediaPlayer->setAudioRole(role);
-}
-
QMediaMetaData QAndroidMediaPlayerControl::metaData() const
{
return QAndroidMetaData::extractMetadata(mMediaContent);
@@ -400,7 +395,6 @@ void QAndroidMediaPlayerControl::setAudioOutput(QPlatformAudioOutput *output)
// #### Implement device changes: connect(m_audioOutput->q, &QAudioOutput::deviceChanged, this, XXXX);
connect(m_audioOutput->q, &QAudioOutput::volumeChanged, this, &QAndroidMediaPlayerControl::setVolume);
connect(m_audioOutput->q, &QAudioOutput::mutedChanged, this, &QAndroidMediaPlayerControl::setMuted);
- connect(m_audioOutput->q, &QAudioOutput::audioRoleChanged, this, &QAndroidMediaPlayerControl::setAudioRole);
}
}
diff --git a/src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol_p.h b/src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol_p.h
index 3bbc20260..cf5553a7e 100644
--- a/src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol_p.h
+++ b/src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol_p.h
@@ -99,7 +99,6 @@ public:
private Q_SLOTS:
void setVolume(float volume);
void setMuted(bool muted);
- void setAudioRole(QAudio::Role role);
void onVideoOutputReady(bool ready);
void onError(qint32 what, qint32 extra);
void onInfo(qint32 what, qint32 extra);
diff --git a/src/multimedia/platform/android/wrappers/jni/androidmediaplayer.cpp b/src/multimedia/platform/android/wrappers/jni/androidmediaplayer.cpp
index d60702cc0..26da7ed3d 100644
--- a/src/multimedia/platform/android/wrappers/jni/androidmediaplayer.cpp
+++ b/src/multimedia/platform/android/wrappers/jni/androidmediaplayer.cpp
@@ -241,6 +241,7 @@ void AndroidMediaPlayer::setDisplay(AndroidSurfaceTexture *surfaceTexture)
surfaceTexture ? surfaceTexture->surfaceHolder() : 0);
}
+#if 0
void AndroidMediaPlayer::setAudioRole(QAudio::Role role)
{
QString r;
@@ -320,6 +321,7 @@ void AndroidMediaPlayer::setAudioRole(QAudio::Role role)
mMediaPlayer.callMethod<void>("setAudioAttributes", "(II)V", jint(type), jint(usage));
}
+#endif
static void onErrorNative(JNIEnv *env, jobject thiz, jint what, jint extra, jlong id)
{
diff --git a/src/multimedia/platform/android/wrappers/jni/androidmediaplayer_p.h b/src/multimedia/platform/android/wrappers/jni/androidmediaplayer_p.h
index 7fb6094a1..2d1e645c4 100644
--- a/src/multimedia/platform/android/wrappers/jni/androidmediaplayer_p.h
+++ b/src/multimedia/platform/android/wrappers/jni/androidmediaplayer_p.h
@@ -129,7 +129,6 @@ public:
void setVolume(int volume);
bool setPlaybackRate(qreal rate);
void setDisplay(AndroidSurfaceTexture *surfaceTexture);
- void setAudioRole(QAudio::Role role);
static bool registerNativeMethods();
diff --git a/src/multimedia/platform/darwin/camera/avfcamera.mm b/src/multimedia/platform/darwin/camera/avfcamera.mm
index 89c8aa0de..b52ee7743 100644
--- a/src/multimedia/platform/darwin/camera/avfcamera.mm
+++ b/src/multimedia/platform/darwin/camera/avfcamera.mm
@@ -176,7 +176,7 @@ void AVFCamera::setActive(bool active)
{
if (m_active == active)
return;
- if (m_cameraInfo.isNull() && active)
+ if (m_cameraDevice.isNull() && active)
return;
m_active = active;
@@ -204,9 +204,9 @@ QCamera::Status AVFCamera::status() const
void AVFCamera::setCamera(const QCameraDevice &camera)
{
- if (m_cameraInfo == camera)
+ if (m_cameraDevice == camera)
return;
- m_cameraInfo = camera;
+ m_cameraDevice = camera;
if (m_session)
m_session->setActiveCamera(camera);
}
@@ -229,7 +229,7 @@ void AVFCamera::setCaptureSession(QPlatformMediaCaptureSession *session)
m_session->setActiveCamera(QCameraDevice());
m_session->setActive(m_active);
- m_session->setActiveCamera(m_cameraInfo);
+ m_session->setActiveCamera(m_cameraDevice);
}
void AVFCamera::updateStatus()
@@ -254,7 +254,7 @@ AVCaptureConnection *AVFCamera::videoConnection() const
AVCaptureDevice *AVFCamera::device() const
{
AVCaptureDevice *device = nullptr;
- QByteArray deviceId = m_cameraInfo.id();
+ QByteArray deviceId = m_cameraDevice.id();
if (!deviceId.isEmpty()) {
device = [AVCaptureDevice deviceWithUniqueID:
[NSString stringWithUTF8String:
diff --git a/src/multimedia/platform/darwin/camera/avfcamera_p.h b/src/multimedia/platform/darwin/camera/avfcamera_p.h
index 42999b917..296ef0350 100644
--- a/src/multimedia/platform/darwin/camera/avfcamera_p.h
+++ b/src/multimedia/platform/darwin/camera/avfcamera_p.h
@@ -127,7 +127,7 @@ private:
AVFCameraService *m_service = nullptr;
AVFCameraSession *m_session = nullptr;
- QCameraDevice m_cameraInfo;
+ QCameraDevice m_cameraDevice;
bool m_active;
QCamera::Status m_lastStatus;
diff --git a/src/multimedia/platform/darwin/camera/avfcamerasession.mm b/src/multimedia/platform/darwin/camera/avfcamerasession.mm
index 61dd83459..7febe567f 100644
--- a/src/multimedia/platform/darwin/camera/avfcamerasession.mm
+++ b/src/multimedia/platform/darwin/camera/avfcamerasession.mm
@@ -177,13 +177,13 @@ AVFCameraSession::~AVFCameraSession()
void AVFCameraSession::setActiveCamera(const QCameraDevice &info)
{
- if (m_activeCameraInfo != info) {
- m_activeCameraInfo = info;
+ if (m_activeCameraDevice != info) {
+ m_activeCameraDevice = info;
[m_captureSession beginConfiguration];
attachVideoInputDevice();
- if (!m_activeCameraInfo.isNull() && !m_videoOutput)
+ if (!m_activeCameraDevice.isNull() && !m_videoOutput)
setVideoOutput(new AVFCameraRenderer(this));
[m_captureSession commitConfiguration];
@@ -254,7 +254,7 @@ void AVFCameraSession::setActive(bool active)
attachAudioInputDevice();
setAudioOutput();
}
- if (!m_activeCameraInfo.isNull()) {
+ if (!m_activeCameraDevice.isNull()) {
attachVideoInputDevice();
Q_EMIT readyToConfigureConnections();
m_defaultCodec = 0;
@@ -309,7 +309,7 @@ AVCaptureDevice *AVFCameraSession::createVideoCaptureDevice()
{
AVCaptureDevice *device = nullptr;
- QByteArray deviceId = m_activeCameraInfo.id();
+ QByteArray deviceId = m_activeCameraDevice.id();
if (!deviceId.isEmpty()) {
device = [AVCaptureDevice deviceWithUniqueID:
[NSString stringWithUTF8String:
@@ -330,7 +330,7 @@ void AVFCameraSession::attachVideoInputDevice()
AVCaptureDevice *videoDevice = createVideoCaptureDevice();
if (!videoDevice) {
- m_activeCameraInfo = QCameraDevice();
+ m_activeCameraDevice = QCameraDevice();
return;
}
@@ -347,7 +347,7 @@ void AVFCameraSession::attachVideoInputDevice()
[m_captureSession addInput:m_videoInput];
} else {
qWarning() << "Failed to connect video device input";
- m_activeCameraInfo = QCameraDevice();
+ m_activeCameraDevice = QCameraDevice();
}
}
}
diff --git a/src/multimedia/platform/darwin/camera/avfcamerasession_p.h b/src/multimedia/platform/darwin/camera/avfcamerasession_p.h
index 9d863e7fa..fee807c21 100644
--- a/src/multimedia/platform/darwin/camera/avfcamerasession_p.h
+++ b/src/multimedia/platform/darwin/camera/avfcamerasession_p.h
@@ -75,7 +75,7 @@ public:
AVFCameraSession(AVFCameraService *service, QObject *parent = nullptr);
~AVFCameraSession();
- QCameraDevice activeCameraInfo() const { return m_activeCameraInfo; }
+ QCameraDevice activecameraDevice() const { return m_activeCameraDevice; }
void setActiveCamera(const QCameraDevice &info);
AVFCameraRenderer *videoOutput() const { return m_videoOutput; }
@@ -116,7 +116,7 @@ private:
bool applyImageEncoderSettings();
bool applyEncoderSettings();
- QCameraDevice m_activeCameraInfo;
+ QCameraDevice m_activeCameraDevice;
AVFCameraService *m_service;
AVCaptureSession *m_captureSession;
diff --git a/src/multimedia/platform/darwin/camera/avfmediaencoder.mm b/src/multimedia/platform/darwin/camera/avfmediaencoder.mm
index 916d9fe7e..6f881f986 100644
--- a/src/multimedia/platform/darwin/camera/avfmediaencoder.mm
+++ b/src/multimedia/platform/darwin/camera/avfmediaencoder.mm
@@ -166,22 +166,22 @@ static NSDictionary *avfAudioSettings(const QMediaEncoderSettings &encoderSettin
#ifdef Q_OS_MACOS
// Setting AVEncoderQualityKey is not allowed when format ID is alac or lpcm
if (codecId != kAudioFormatAppleLossless && codecId != kAudioFormatLinearPCM
- && encoderSettings.encodingMode() == QMediaEncoderSettings::ConstantQualityEncoding) {
+ && encoderSettings.encodingMode() == QMediaRecorder::ConstantQualityEncoding) {
int quality;
switch (encoderSettings.quality()) {
- case QMediaEncoderSettings::VeryLowQuality:
+ case QMediaRecorder::VeryLowQuality:
quality = AVAudioQualityMin;
break;
- case QMediaEncoderSettings::LowQuality:
+ case QMediaRecorder::LowQuality:
quality = AVAudioQualityLow;
break;
- case QMediaEncoderSettings::HighQuality:
+ case QMediaRecorder::HighQuality:
quality = AVAudioQualityHigh;
break;
- case QMediaEncoderSettings::VeryHighQuality:
+ case QMediaRecorder::VeryHighQuality:
quality = AVAudioQualityMax;
break;
- case QMediaEncoderSettings::NormalQuality:
+ case QMediaRecorder::NormalQuality:
default:
quality = AVAudioQualityMedium;
break;
@@ -300,7 +300,7 @@ NSDictionary *avfVideoSettings(QMediaEncoderSettings &encoderSettings, AVCapture
[videoSettings setObject:[NSNumber numberWithInt:w] forKey:AVVideoWidthKey];
[videoSettings setObject:[NSNumber numberWithInt:h] forKey:AVVideoHeightKey];
- encoderSettings.setVideoResolution(w, h);
+ encoderSettings.setVideoResolution(QSize(w, h));
} else {
encoderSettings.setVideoResolution(qt_device_format_resolution(device.activeFormat));
}
@@ -319,22 +319,22 @@ NSDictionary *avfVideoSettings(QMediaEncoderSettings &encoderSettings, AVCapture
int bitrate = -1;
float quality = -1.f;
- if (encoderSettings.encodingMode() == QMediaEncoderSettings::ConstantQualityEncoding) {
- if (encoderSettings.quality() != QMediaEncoderSettings::NormalQuality) {
+ if (encoderSettings.encodingMode() == QMediaRecorder::ConstantQualityEncoding) {
+ if (encoderSettings.quality() != QMediaRecorder::NormalQuality) {
if (codec != QMediaFormat::VideoCodec::MotionJPEG) {
qWarning("ConstantQualityEncoding is not supported for MotionJPEG");
} else {
switch (encoderSettings.quality()) {
- case QMediaEncoderSettings::VeryLowQuality:
+ case QMediaRecorder::VeryLowQuality:
quality = 0.f;
break;
- case QMediaEncoderSettings::LowQuality:
+ case QMediaRecorder::LowQuality:
quality = 0.25f;
break;
- case QMediaEncoderSettings::HighQuality:
+ case QMediaRecorder::HighQuality:
quality = 0.75f;
break;
- case QMediaEncoderSettings::VeryHighQuality:
+ case QMediaRecorder::VeryHighQuality:
quality = 1.f;
break;
default:
@@ -343,7 +343,7 @@ NSDictionary *avfVideoSettings(QMediaEncoderSettings &encoderSettings, AVCapture
}
}
}
- } else if (encoderSettings.encodingMode() == QMediaEncoderSettings::AverageBitRateEncoding){
+ } else if (encoderSettings.encodingMode() == QMediaRecorder::AverageBitRateEncoding){
if (codec != QMediaFormat::VideoCodec::H264 && codec != QMediaFormat::VideoCodec::H265)
qWarning() << "AverageBitRateEncoding is not supported for codec" << QMediaFormat::videoCodecName(codec);
else
@@ -371,7 +371,7 @@ void AVFMediaEncoder::applySettings()
if (m_state != QMediaRecorder::StoppedState)
return;
- const auto flag = (session->activeCameraInfo().isNull())
+ const auto flag = (session->activecameraDevice().isNull())
? QMediaFormat::NoFlags
: QMediaFormat::RequiresVideo;
@@ -413,7 +413,7 @@ void AVFMediaEncoder::setEncoderSettings(const QMediaEncoderSettings &settings)
QMediaEncoderSettings AVFMediaEncoder::encoderSettings() const
{
QMediaEncoderSettings s = m_settings;
- const auto flag = (m_service->session()->activeCameraInfo().isNull())
+ const auto flag = (m_service->session()->activecameraDevice().isNull())
? QMediaFormat::NoFlags
: QMediaFormat::RequiresVideo;
s.resolveFormat(flag);
@@ -483,14 +483,14 @@ void AVFMediaEncoder::record()
// Make sure the video is recorded in device orientation.
// The top of the video will match the side of the device which is on top
// when recording starts (regardless of the UI orientation).
- // QCameraDevice cameraInfo = m_service->session()->activeCameraInfo();
+ // QCameraDevice cameraDevice = m_service->session()->activecameraDevice();
// int screenOrientation = 360 - m_orientationHandler.currentOrientation();
// ###
- // if (cameraInfo.position() == QCameraDevice::FrontFace)
- // rotation = (screenOrientation + cameraInfo.orientation()) % 360;
+ // if (cameraDevice.position() == QCameraDevice::FrontFace)
+ // rotation = (screenOrientation + cameraDevice.orientation()) % 360;
// else
- // rotation = (screenOrientation + (360 - cameraInfo.orientation())) % 360;
+ // rotation = (screenOrientation + (360 - cameraDevice.orientation())) % 360;
}
const QString path(m_outputLocation.scheme() == QLatin1String("file") ?
diff --git a/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamera.cpp b/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamera.cpp
index 521a1338f..c58ecaaf1 100644
--- a/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamera.cpp
+++ b/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamera.cpp
@@ -85,7 +85,7 @@ void QGstreamerCamera::setActive(bool active)
{
if (m_active == active)
return;
- if (m_cameraInfo.isNull() && active)
+ if (m_cameraDevice.isNull() && active)
return;
m_active = active;
@@ -96,11 +96,11 @@ void QGstreamerCamera::setActive(bool active)
void QGstreamerCamera::setCamera(const QCameraDevice &camera)
{
- if (m_cameraInfo == camera)
+ if (m_cameraDevice == camera)
return;
// qDebug() << "setCamera" << camera;
- m_cameraInfo = camera;
+ m_cameraDevice = camera;
bool havePipeline = !gstPipeline.isNull();
@@ -141,7 +141,7 @@ void QGstreamerCamera::setCameraFormatInternal(const QCameraFormat &format)
{
QCameraFormat f = format;
if (f.isNull())
- f = findBestCameraFormat(m_cameraInfo);
+ f = findBestCameraFormat(m_cameraDevice);
// add jpeg decoder where required
gstDecode.setStateSync(GST_STATE_NULL);
@@ -169,7 +169,7 @@ void QGstreamerCamera::setCameraFormatInternal(const QCameraFormat &format)
bool QGstreamerCamera::setCameraFormat(const QCameraFormat &format)
{
- if (!m_cameraInfo.videoFormats().contains(format))
+ if (!m_cameraDevice.videoFormats().contains(format))
return false;
bool havePipeline = !gstPipeline.isNull();
auto state = havePipeline ? gstPipeline.state() : GST_STATE_NULL;
diff --git a/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamera_p.h b/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamera_p.h
index a87855049..51037119e 100644
--- a/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamera_p.h
+++ b/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamera_p.h
@@ -125,7 +125,7 @@ private:
QGstreamerMediaCapture *m_session = nullptr;
- QCameraDevice m_cameraInfo;
+ QCameraDevice m_cameraDevice;
QGstPipeline gstPipeline;
diff --git a/src/multimedia/platform/pulseaudio/qpulseaudiosink.cpp b/src/multimedia/platform/pulseaudio/qpulseaudiosink.cpp
index 59543874b..99f2dc09b 100644
--- a/src/multimedia/platform/pulseaudio/qpulseaudiosink.cpp
+++ b/src/multimedia/platform/pulseaudio/qpulseaudiosink.cpp
@@ -305,6 +305,7 @@ bool QPulseAudioSink::open()
qint64 bytesPerSecond = m_format.sampleRate() * m_format.bytesPerFrame();
+#if 0
static const char *mediaRoleFromAudioRole[] = {
nullptr, // UnknownRole
"music", // MusicRole
@@ -322,6 +323,7 @@ bool QPulseAudioSink::open()
const char *r = mediaRoleFromAudioRole[m_role];
if (r)
pa_proplist_sets(propList, PA_PROP_MEDIA_ROLE, r);
+#endif
static const auto mapName = qEnvironmentVariable("QT_PA_CHANNEL_MAP");
pa_channel_map_def_t mapDef = PA_CHANNEL_MAP_DEFAULT;
@@ -360,8 +362,8 @@ bool QPulseAudioSink::open()
pa_stream_set_overflow_callback(m_stream, outputStreamOverflowCallback, this);
pa_stream_set_latency_update_callback(m_stream, outputStreamLatencyCallback, this);
- if (m_bufferSize <= 0 && m_role == QAudio::GameRoleRole)
- m_bufferSize = bytesPerSecond * LowLatencyBufferSizeMs / qint64(1000);
+// if (m_bufferSize <= 0 && m_role == QAudio::GameRoleRole)
+// m_bufferSize = bytesPerSecond * LowLatencyBufferSizeMs / qint64(1000);
pa_buffer_attr requestedBuffer;
requestedBuffer.fragsize = (uint32_t)-1;
@@ -385,7 +387,7 @@ bool QPulseAudioSink::open()
pa_threaded_mainloop_wait(pulseEngine->mainloop());
const pa_buffer_attr *buffer = pa_stream_get_buffer_attr(m_stream);
- m_periodTime = (m_role == QAudio::GameRole) ? LowLatencyPeriodTimeMs : PeriodTimeMs;
+ m_periodTime = /*(m_role == QAudio::GameRole) ? LowLatencyPeriodTimeMs :*/ PeriodTimeMs;
m_periodSize = pa_usec_to_bytes(m_periodTime*1000, &m_spec);
m_bufferSize = buffer->tlength;
m_maxBufferSize = buffer->maxlength;
diff --git a/src/multimedia/platform/qnx/camera/bbcamerasession.cpp b/src/multimedia/platform/qnx/camera/bbcamerasession.cpp
index 1856fa48c..699c8f9ef 100644
--- a/src/multimedia/platform/qnx/camera/bbcamerasession.cpp
+++ b/src/multimedia/platform/qnx/camera/bbcamerasession.cpp
@@ -936,19 +936,19 @@ void BbCameraSession::applyConfiguration()
int jpegQuality = 100;
switch (m_imageEncoderSettings.quality()) {
- case QMediaEncoderSettings::VeryLowQuality:
+ case QMediaRecorder::VeryLowQuality:
jpegQuality = 20;
break;
- case QMediaEncoderSettings::LowQuality:
+ case QMediaRecorder::LowQuality:
jpegQuality = 40;
break;
- case QMediaEncoderSettings::NormalQuality:
+ case QMediaRecorder::NormalQuality:
jpegQuality = 60;
break;
- case QMediaEncoderSettings::HighQuality:
+ case QMediaRecorder::HighQuality:
jpegQuality = 80;
break;
- case QMediaEncoderSettings::VeryHighQuality:
+ case QMediaRecorder::VeryHighQuality:
jpegQuality = 100;
break;
}
diff --git a/src/multimedia/platform/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp b/src/multimedia/platform/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp
index c78f515ef..4eff994e4 100644
--- a/src/multimedia/platform/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp
+++ b/src/multimedia/platform/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp
@@ -558,16 +558,6 @@ void MmRendererMediaPlayerControl::stop()
stopInternal(StopMmRenderer);
}
-void MmRendererMediaPlayerControl::setAudioRole(QAudio::Role role)
-{
- m_role = role;
-}
-
-QList<QAudio::Role> MmRendererMediaPlayerControl::supportedAudioRoles() const
-{
- return qnxSupportedAudioRoles();
-}
-
MmRendererPlayerVideoRendererControl *MmRendererMediaPlayerControl::videoRendererControl() const
{
return m_videoRendererControl;
diff --git a/src/multimedia/platform/qnx/mediaplayer/mmrenderermediaplayercontrol_p.h b/src/multimedia/platform/qnx/mediaplayer/mmrenderermediaplayercontrol_p.h
index 62d7373a4..63ae3c407 100644
--- a/src/multimedia/platform/qnx/mediaplayer/mmrenderermediaplayercontrol_p.h
+++ b/src/multimedia/platform/qnx/mediaplayer/mmrenderermediaplayercontrol_p.h
@@ -108,9 +108,6 @@ public:
void pause() override;
void stop() override;
- void setAudioRole(QAudio::Role role) override;
- QList<QAudio::Role> supportedAudioRoles() const override;
-
MmRendererPlayerVideoRendererControl *videoRendererControl() const;
void setVideoRendererControl(MmRendererPlayerVideoRendererControl *videoControl);
diff --git a/src/multimedia/platform/qnx/mediaplayer/mmrendererutil.cpp b/src/multimedia/platform/qnx/mediaplayer/mmrendererutil.cpp
index 8ded95bcd..89cf8489b 100644
--- a/src/multimedia/platform/qnx/mediaplayer/mmrendererutil.cpp
+++ b/src/multimedia/platform/qnx/mediaplayer/mmrendererutil.cpp
@@ -100,11 +100,6 @@ constexpr size_t countof(T (&)[N])
return N;
}
-constexpr bool inBounds(QAudio::Role r)
-{
- return r >= 0 && r < countof(roleMap);
-}
-
QString keyValueMapsLocation()
{
QByteArray qtKeyValueMaps = qgetenv("QT_KEY_VALUE_MAPS");
@@ -128,53 +123,6 @@ QJsonObject loadMapObject(const QString &keyValueMapPath)
return QJsonObject();
}
-static void loadRoleMap()
-{
- QMutexLocker locker(&roleMapMutex);
-
- if (!roleMapInitialized) {
- QJsonObject mapObject = loadMapObject("/QAudio/Role.json");
- if (!mapObject.isEmpty()) {
- // Wrapping the loads in a switch like this ensures that anyone adding
- // a new enumerator will be notified that this code must be updated. A
- // compile error will occur because the enumerator is missing from the
- // switch. A compile error will also occur if the enumerator used to
- // size the mapping table isn't updated when a new enumerator is added.
- // One or more enumerators will be outside the bounds of the array when
- // the wrong enumerator is used to size the array.
- //
- // The code loads a mapping for each enumerator because role is set
- // to UnknownRole and all the cases drop through to the next case.
-#pragma GCC diagnostic push
-#pragma GCC diagnostic error "-Wswitch"
-#define loadRoleMapping(r) \
- case QAudio::r: \
- static_assert(inBounds(QAudio::r), #r " out-of-bounds." \
- " Do you need to change the enumerator used to size the mapping table" \
- " because you added new QAudio::Role enumerators?"); \
- roleMap[QAudio::r] = mapObject.value(QLatin1String(#r)).toString();
-
- QAudio::Role role = QAudio::UnknownRole;
- switch (role) {
- loadRoleMapping(UnknownRole);
- loadRoleMapping(MusicRole);
- loadRoleMapping(VideoRole);
- loadRoleMapping(VoiceCommunicationRole);
- loadRoleMapping(AlarmRole);
- loadRoleMapping(NotificationRole);
- loadRoleMapping(RingtoneRole);
- loadRoleMapping(AccessibilityRole);
- loadRoleMapping(SonificationRole);
- loadRoleMapping(GameRole);
- }
-#undef loadRoleMapping
-#pragma GCC diagnostic pop
- }
-
- roleMapInitialized = true;
- }
-}
-
QString mmErrorMessage(const QString &msg, mmr_context_t *context, int *errorCode)
{
const mmr_error_info_t * const mmError = mmr_error_info(context);
@@ -214,27 +162,4 @@ bool checkForDrmPermission()
return false;
}
-QString qnxAudioType(QAudio::Role role)
-{
- loadRoleMap();
-
- if (role >= 0 && role < countof(roleMap))
- return roleMap[role];
- else
- return QString();
-}
-
-QList<QAudio::Role> qnxSupportedAudioRoles()
-{
- loadRoleMap();
-
- QList<QAudio::Role> result;
- for (size_t i = 0; i < countof(roleMap); ++i) {
- if (!roleMap[i].isEmpty() || (i == QAudio::UnknownRole))
- result.append(static_cast<QAudio::Role>(i));
- }
-
- return result;
-}
-
QT_END_NAMESPACE
diff --git a/src/multimedia/platform/qnx/mediaplayer/mmrendererutil_p.h b/src/multimedia/platform/qnx/mediaplayer/mmrendererutil_p.h
index 9bba99487..e1f972840 100644
--- a/src/multimedia/platform/qnx/mediaplayer/mmrendererutil_p.h
+++ b/src/multimedia/platform/qnx/mediaplayer/mmrendererutil_p.h
@@ -63,9 +63,6 @@ QString mmErrorMessage(const QString &msg, mmr_context_t *context, int * errorCo
bool checkForDrmPermission();
-QString qnxAudioType(QAudio::Role role);
-QList<QAudio::Role> qnxSupportedAudioRoles();
-
QT_END_NAMESPACE
#endif
diff --git a/src/multimedia/platform/qplatformaudiooutput_p.h b/src/multimedia/platform/qplatformaudiooutput_p.h
index 9979a6d5e..594d59ed0 100644
--- a/src/multimedia/platform/qplatformaudiooutput_p.h
+++ b/src/multimedia/platform/qplatformaudiooutput_p.h
@@ -66,14 +66,11 @@ public:
virtual void setAudioDevice(const QAudioDevice &/*device*/) {}
virtual void setMuted(bool /*muted*/) {}
virtual void setVolume(float /*volume*/) {}
- virtual void setAudioRole(QAudio::Role /*role*/) {}
- virtual QList<QAudio::Role> supportedAudioRoles() const { return {}; }
QAudioOutput *q = nullptr;
QAudioDevice device;
float volume = 1.;
bool muted = false;
- QAudio::Role role = QAudio::UnknownRole;
};
QT_END_NAMESPACE
diff --git a/src/multimedia/platform/qplatformcamera_p.h b/src/multimedia/platform/qplatformcamera_p.h
index 6039422a1..990943d2d 100644
--- a/src/multimedia/platform/qplatformcamera_p.h
+++ b/src/multimedia/platform/qplatformcamera_p.h
@@ -122,8 +122,8 @@ public:
int minIso() const { return m_minIso; }
int maxIso() const { return m_maxIso; }
float manualExposureTime() const { return m_exposureTime; }
- float minShutterSpeed() const { return m_minShutterSpeed; }
- float maxShutterSpeed() const { return m_maxShutterSpeed; }
+ float minExposureTime() const { return m_minExposureTime; }
+ float maxExposureTime() const { return m_maxExposureTime; }
QCamera::WhiteBalanceMode whiteBalanceMode() const { return m_whiteBalance; }
int colorTemperature() const { return m_colorTemperature; }
@@ -145,8 +145,8 @@ public:
void minIsoChanged(int iso) { m_minIso = iso; }
void maxIsoChanged(int iso) { m_maxIso = iso; }
void exposureTimeChanged(float speed);
- void minShutterSpeedChanged(float secs) { m_minShutterSpeed = secs; }
- void maxShutterSpeedChanged(float secs) { m_maxShutterSpeed = secs; }
+ void minExposureTimeChanged(float secs) { m_minExposureTime = secs; }
+ void maxExposureTimeChanged(float secs) { m_maxExposureTime = secs; }
void whiteBalanceModeChanged(QCamera::WhiteBalanceMode mode);
void colorTemperatureChanged(int temperature);
@@ -181,8 +181,8 @@ private:
int m_minIso = -1;
int m_maxIso = -1;
float m_exposureTime = -1.;
- float m_minShutterSpeed = -1.;
- float m_maxShutterSpeed = -1.;
+ float m_minExposureTime = -1.;
+ float m_maxExposureTime = -1.;
QCamera::WhiteBalanceMode m_whiteBalance = QCamera::WhiteBalanceAuto;
int m_colorTemperature = 0;
};
diff --git a/src/multimedia/platform/qplatformmediaencoder_p.h b/src/multimedia/platform/qplatformmediaencoder_p.h
index 102842dc1..2661718d9 100644
--- a/src/multimedia/platform/qplatformmediaencoder_p.h
+++ b/src/multimedia/platform/qplatformmediaencoder_p.h
@@ -52,9 +52,12 @@
#define QPLATFORMMEDIAENCODER_H
#include <QtCore/qurl.h>
+#include <QtCore/qsize.h>
+#include <QtCore/qmimetype.h>
#include <QtMultimedia/qmediarecorder.h>
#include <QtMultimedia/qmediametadata.h>
+#include <QtMultimedia/qmediaformat.h>
QT_BEGIN_NAMESPACE
@@ -63,8 +66,71 @@ QT_END_NAMESPACE
QT_BEGIN_NAMESPACE
-// Required for QDoc workaround
-class QString;
+class Q_MULTIMEDIA_EXPORT QMediaEncoderSettings
+{
+ QMediaRecorder::EncodingMode m_encodingMode = QMediaRecorder::ConstantQualityEncoding;
+ QMediaRecorder::Quality m_quality = QMediaRecorder::NormalQuality;
+
+ QMediaFormat m_format;
+ int m_audioBitrate = -1;
+ int m_audioSampleRate = -1;
+ int m_audioChannels = -1;
+
+ QSize m_videoResolution = QSize(-1, -1);
+ int m_videoFrameRate = -1;
+ int m_videoBitRate = -1;
+public:
+
+ QMediaFormat mediaFormat() const { return m_format; }
+ void setMediaFormat(const QMediaFormat &format) { m_format = format; }
+ void resolveFormat(QMediaFormat::ResolveFlags flags = QMediaFormat::NoFlags)
+ { m_format.resolveForEncoding(flags); }
+
+ QMediaFormat::FileFormat fileFormat() const { return mediaFormat().fileFormat(); }
+ QMediaFormat::VideoCodec videoCodec() const { return mediaFormat().videoCodec(); }
+ QMediaFormat::AudioCodec audioCodec() const { return mediaFormat().audioCodec(); }
+ QMimeType mimeType() const { return mediaFormat().mimeType(); }
+
+ QMediaRecorder::EncodingMode encodingMode() const { return m_encodingMode; }
+ void setEncodingMode(QMediaRecorder::EncodingMode mode) { m_encodingMode = mode; }
+
+ QMediaRecorder::Quality quality() const { return m_quality; }
+ void setQuality(QMediaRecorder::Quality quality) { m_quality = quality; }
+
+ QSize videoResolution() const { return m_videoResolution; }
+ void setVideoResolution(const QSize &size) { m_videoResolution = size; }
+
+ qreal videoFrameRate() const { return m_videoFrameRate; }
+ void setVideoFrameRate(qreal rate) { m_videoFrameRate = rate; }
+
+ int videoBitRate() const { return m_videoBitRate; }
+ void setVideoBitRate(int bitrate) { m_videoBitRate = bitrate; }
+
+ int audioBitRate() const { return m_audioBitrate; }
+ void setAudioBitRate(int bitrate) { m_audioBitrate = bitrate; }
+
+ int audioChannelCount() const { return m_audioChannels; }
+ void setAudioChannelCount(int channels) { m_audioChannels = channels; }
+
+ int audioSampleRate() const { return m_audioSampleRate; }
+ void setAudioSampleRate(int rate) { m_audioSampleRate = rate; }
+
+ bool operator==(const QMediaEncoderSettings &other) const
+ {
+ return m_format == other.m_format &&
+ m_encodingMode == other.m_encodingMode &&
+ m_quality == other.m_quality &&
+ m_audioBitrate == other.m_audioBitrate &&
+ m_audioSampleRate == other.m_audioSampleRate &&
+ m_audioChannels == other.m_audioChannels &&
+ m_videoResolution == other.m_videoResolution &&
+ m_videoFrameRate == other.m_videoFrameRate &&
+ m_videoBitRate == other.m_videoBitRate;
+ }
+
+ bool operator!=(const QMediaEncoderSettings &other) const
+ { return !operator==(other); }
+};
class Q_MULTIMEDIA_EXPORT QPlatformMediaEncoder
{
diff --git a/src/multimedia/platform/qplatformmediaformatinfo_p.h b/src/multimedia/platform/qplatformmediaformatinfo_p.h
index 984065b17..9e56bee41 100644
--- a/src/multimedia/platform/qplatformmediaformatinfo_p.h
+++ b/src/multimedia/platform/qplatformmediaformatinfo_p.h
@@ -52,8 +52,8 @@
//
#include <private/qtmultimediaglobal_p.h>
-#include <qmediaencodersettings.h>
#include <qcameraimagecapture.h>
+#include <qmediaformat.h>
QT_BEGIN_NAMESPACE
diff --git a/src/multimedia/platform/qplatformmediaplayer.cpp b/src/multimedia/platform/qplatformmediaplayer.cpp
index 814ca7b21..21e25ec9b 100644
--- a/src/multimedia/platform/qplatformmediaplayer.cpp
+++ b/src/multimedia/platform/qplatformmediaplayer.cpp
@@ -358,24 +358,6 @@ void QPlatformMediaPlayer::error(int error, const QString &errorString)
*/
/*!
- \fn QAudio::Role QPlatformMediaPlayer::audioRole() const
-
- Returns the audio role of the media played by the media service.
-*/
-
-/*!
- \fn void QPlatformMediaPlayer::setAudioRole(QAudio::Role role)
-
- Sets the audio \a role of the media played by the media service.
-*/
-
-/*!
- \fn QList<QAudio::Role> QPlatformMediaPlayer::supportedAudioRoles() const
-
- Returns a list of audio roles that the media service supports.
-*/
-
-/*!
\fn QPlatformMediaPlayer::error(int error, const QString &errorString)
Signals that an \a error has occurred. The \a errorString provides a more detailed explanation.
diff --git a/src/multimedia/platform/windows/mediacapture/qwindowsmediadevicesession.cpp b/src/multimedia/platform/windows/mediacapture/qwindowsmediadevicesession.cpp
index 1776f9fe9..f46f15127 100644
--- a/src/multimedia/platform/windows/mediacapture/qwindowsmediadevicesession.cpp
+++ b/src/multimedia/platform/windows/mediacapture/qwindowsmediadevicesession.cpp
@@ -238,25 +238,25 @@ bool QWindowsMediaDeviceSession::resumeRecording()
// empirical estimate of the required video bitrate (for H.264)
quint32 QWindowsMediaDeviceSession::estimateVideoBitRate(const GUID &videoFormat, quint32 width, quint32 height,
- qreal frameRate, QMediaEncoderSettings::Quality quality)
+ qreal frameRate, QMediaRecorder::Quality quality)
{
Q_UNUSED(videoFormat);
qreal bitsPerPixel;
switch (quality) {
- case QMediaEncoderSettings::Quality::VeryLowQuality:
+ case QMediaRecorder::Quality::VeryLowQuality:
bitsPerPixel = 0.08;
break;
- case QMediaEncoderSettings::Quality::LowQuality:
+ case QMediaRecorder::Quality::LowQuality:
bitsPerPixel = 0.2;
break;
- case QMediaEncoderSettings::Quality::NormalQuality:
+ case QMediaRecorder::Quality::NormalQuality:
bitsPerPixel = 0.3;
break;
- case QMediaEncoderSettings::Quality::HighQuality:
+ case QMediaRecorder::Quality::HighQuality:
bitsPerPixel = 0.5;
break;
- case QMediaEncoderSettings::Quality::VeryHighQuality:
+ case QMediaRecorder::Quality::VeryHighQuality:
bitsPerPixel = 0.8;
break;
default:
@@ -269,20 +269,20 @@ quint32 QWindowsMediaDeviceSession::estimateVideoBitRate(const GUID &videoFormat
return pixelsPerSec * bitsPerPixel;
}
-quint32 QWindowsMediaDeviceSession::estimateAudioBitRate(const GUID &audioFormat, QMediaEncoderSettings::Quality quality)
+quint32 QWindowsMediaDeviceSession::estimateAudioBitRate(const GUID &audioFormat, QMediaRecorder::Quality quality)
{
if (audioFormat == MFAudioFormat_AAC) {
// Bitrates supported by the AAC encoder are 96K, 128K, 160K, 192K.
switch (quality) {
- case QMediaEncoderSettings::Quality::VeryLowQuality:
+ case QMediaRecorder::Quality::VeryLowQuality:
return 96000;
- case QMediaEncoderSettings::Quality::LowQuality:
+ case QMediaRecorder::Quality::LowQuality:
return 96000;
- case QMediaEncoderSettings::Quality::NormalQuality:
+ case QMediaRecorder::Quality::NormalQuality:
return 128000;
- case QMediaEncoderSettings::Quality::HighQuality:
+ case QMediaRecorder::Quality::HighQuality:
return 160000;
- case QMediaEncoderSettings::Quality::VeryHighQuality:
+ case QMediaRecorder::Quality::VeryHighQuality:
return 192000;
}
return 128000;
@@ -290,15 +290,15 @@ quint32 QWindowsMediaDeviceSession::estimateAudioBitRate(const GUID &audioFormat
// Bitrates supported by the MP3 encoder are
// 32K, 40K, 48K, 56K, 64K, 80K, 96K, 112K, 128K, 160K, 192K, 224K, 256K, 320K.
switch (quality) {
- case QMediaEncoderSettings::Quality::VeryLowQuality:
+ case QMediaRecorder::Quality::VeryLowQuality:
return 48000;
- case QMediaEncoderSettings::Quality::LowQuality:
+ case QMediaRecorder::Quality::LowQuality:
return 96000;
- case QMediaEncoderSettings::Quality::NormalQuality:
+ case QMediaRecorder::Quality::NormalQuality:
return 128000;
- case QMediaEncoderSettings::Quality::HighQuality:
+ case QMediaRecorder::Quality::HighQuality:
return 224000;
- case QMediaEncoderSettings::Quality::VeryHighQuality:
+ case QMediaRecorder::Quality::VeryHighQuality:
return 320000;
}
return 128000;
diff --git a/src/multimedia/platform/windows/mediacapture/qwindowsmediadevicesession_p.h b/src/multimedia/platform/windows/mediacapture/qwindowsmediadevicesession_p.h
index 2a2d04f7c..2db0b0784 100644
--- a/src/multimedia/platform/windows/mediacapture/qwindowsmediadevicesession_p.h
+++ b/src/multimedia/platform/windows/mediacapture/qwindowsmediadevicesession_p.h
@@ -53,9 +53,9 @@
#include <private/qtmultimediaglobal_p.h>
#include <qcamera.h>
-#include <qmediaencodersettings.h>
#include <qaudiodevice.h>
#include <qwindowsmultimediautils_p.h>
+#include <qplatformmediaencoder_p.h>
QT_BEGIN_NAMESPACE
@@ -114,8 +114,8 @@ private Q_SLOTS:
private:
quint32 estimateVideoBitRate(const GUID &videoFormat, quint32 width, quint32 height,
- qreal frameRate, QMediaEncoderSettings::Quality quality);
- quint32 estimateAudioBitRate(const GUID &audioFormat, QMediaEncoderSettings::Quality quality);
+ qreal frameRate, QMediaRecorder::Quality quality);
+ quint32 estimateAudioBitRate(const GUID &audioFormat, QMediaRecorder::Quality quality);
bool m_active = false;
bool m_activating = false;
QCameraDevice m_activeCameraDevice;
diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp
index 4ee85506a..39f3d2f83 100644
--- a/src/multimedia/playback/qmediaplayer.cpp
+++ b/src/multimedia/playback/qmediaplayer.cpp
@@ -101,8 +101,6 @@ void QMediaPlayerPrivate::setError(int error, const QString &errorString)
void QMediaPlayerPrivate::setMedia(const QUrl &media, QIODevice *stream)
{
- Q_Q(QMediaPlayer);
-
if (!control)
return;
@@ -163,9 +161,6 @@ void QMediaPlayerPrivate::setMedia(const QUrl &media, QIODevice *stream)
}
qrcFile.swap(file); // Cleans up any previous file
-
- if (autoPlay)
- q->play();
}
QList<QMediaMetaData> QMediaPlayerPrivate::trackMetaData(QPlatformMediaPlayer::TrackType s) const
@@ -232,7 +227,7 @@ QUrl QMediaPlayer::source() const
\sa setSource()
*/
-const QIODevice *QMediaPlayer::sourceStream() const
+const QIODevice *QMediaPlayer::sourceDevice() const
{
Q_D(const QMediaPlayer);
@@ -444,23 +439,6 @@ void QMediaPlayer::setPosition(qint64 position)
d->control->setPosition(qMax(position, 0ll));
}
-/*!
- If \a autoPlay is set to true, playback will start immediately after calling
- setSource() on the media player. Otherwise the media player will enter the
- Stopped state after loading the file.
-
- The default is false.
-*/
-void QMediaPlayer::setAutoPlay(bool autoPlay)
-{
- Q_D(QMediaPlayer);
- if (d->autoPlay == autoPlay)
- return;
-
- d->autoPlay = autoPlay;
- emit autoPlayChanged(autoPlay);
-}
-
void QMediaPlayer::setPlaybackRate(qreal rate)
{
Q_D(QMediaPlayer);
@@ -472,11 +450,6 @@ void QMediaPlayer::setPlaybackRate(qreal rate)
/*!
Sets the current \a source.
- If a \a stream is supplied; media data will be read from it instead of resolving the media
- source. In this case the url should be provided to resolve additional information
- about the media such as mime type. The \a stream must be open and readable.
- For macOS the \a stream should be also seekable.
-
Setting the media to a null QUrl will cause the player to discard all
information relating to the current media source and to cease all I/O operations related
to that media.
@@ -487,18 +460,45 @@ void QMediaPlayer::setPlaybackRate(qreal rate)
when an error occurs during loading.
*/
-void QMediaPlayer::setSource(const QUrl &source, QIODevice *stream)
+void QMediaPlayer::setSource(const QUrl &source)
{
Q_D(QMediaPlayer);
stop();
- if (d->source == source && d->stream == stream)
+ if (d->source == source && d->stream == nullptr)
return;
d->source = source;
- d->stream = stream;
+ d->stream = nullptr;
- d->setMedia(source, stream);
+ d->setMedia(source, nullptr);
+ emit sourceChanged(d->source);
+}
+
+/*!
+ Sets the current source \a device.
+
+ The media data will be read from \a device. The url can be provided to resolve additional
+ information about the media such as mime type. The \a device must be open and readable.
+ For macOS the \a device should be also seekable.
+
+ \note This function returns immediately after recording the specified source of the media.
+ It does not wait for the media to finish loading and does not check for errors. Listen for
+ the mediaStatusChanged() and error() signals to be notified when the media is loaded and
+ when an error occurs during loading.
+*/
+void QMediaPlayer::setSourceDevice(QIODevice *device, const QUrl &sourceUrl)
+{
+ Q_D(QMediaPlayer);
+ stop();
+
+ if (d->source == sourceUrl && d->stream == device)
+ return;
+
+ d->source = sourceUrl;
+ d->stream = device;
+
+ d->setMedia(d->source, device);
emit sourceChanged(d->source);
}
@@ -724,12 +724,6 @@ QMediaMetaData QMediaPlayer::metaData() const
return d->control->metaData();
}
-bool QMediaPlayer::autoPlay() const
-{
- Q_D(const QMediaPlayer);
- return d->autoPlay;
-}
-
// Enums
/*!
\enum QMediaPlayer::State
diff --git a/src/multimedia/playback/qmediaplayer.h b/src/multimedia/playback/qmediaplayer.h
index 7eb66ea1f..13d0bd90b 100644
--- a/src/multimedia/playback/qmediaplayer.h
+++ b/src/multimedia/playback/qmediaplayer.h
@@ -41,6 +41,7 @@
#define QMEDIAPLAYER_H
#include <QtCore/qobject.h>
+#include <QtCore/qurl.h>
#include <QtMultimedia/qtmultimediaglobal.h>
#include <QtMultimedia/qmediaenumdebug.h>
#include <QtMultimedia/qaudio.h>
@@ -66,7 +67,6 @@ class Q_MULTIMEDIA_EXPORT QMediaPlayer : public QObject
Q_PROPERTY(bool seekable READ isSeekable NOTIFY seekableChanged)
Q_PROPERTY(qreal playbackRate READ playbackRate WRITE setPlaybackRate NOTIFY playbackRateChanged)
Q_PROPERTY(PlaybackState playbackState READ playbackState NOTIFY playbackStateChanged)
- Q_PROPERTY(bool autoPlay READ autoPlay WRITE setAutoPlay NOTIFY autoPlayChanged)
Q_PROPERTY(MediaStatus mediaStatus READ mediaStatus NOTIFY mediaStatusChanged)
Q_PROPERTY(QMediaMetaData metaData READ metaData NOTIFY metaDataChanged)
Q_PROPERTY(Error error READ error NOTIFY errorChanged)
@@ -109,10 +109,6 @@ public:
explicit QMediaPlayer(QObject *parent = nullptr);
~QMediaPlayer();
- // new API
-// bool enableLowLatencyPlayback(bool tryEnable);
-// bool isLowLatencyPlaybackEnabled() const;
-
QList<QMediaMetaData> audioTracks() const;
QList<QMediaMetaData> videoTracks() const;
QList<QMediaMetaData> subtitleTracks() const;
@@ -138,7 +134,7 @@ public:
QVideoSink *videoSink() const;
QUrl source() const;
- const QIODevice *sourceStream() const;
+ const QIODevice *sourceDevice() const;
PlaybackState playbackState() const;
MediaStatus mediaStatus() const;
@@ -161,19 +157,17 @@ public:
bool isAvailable() const;
QMediaMetaData metaData() const;
- bool autoPlay() const;
-
public Q_SLOTS:
void play();
void pause();
void stop();
void setPosition(qint64 position);
- void setAutoPlay(bool autoPlay);
void setPlaybackRate(qreal rate);
- void setSource(const QUrl &media, QIODevice *stream = nullptr);
+ void setSource(const QUrl &source);
+ void setSourceDevice(QIODevice *device, const QUrl &sourceUrl = QUrl());
Q_SIGNALS:
void sourceChanged(const QUrl &media);
@@ -183,7 +177,6 @@ Q_SIGNALS:
void durationChanged(qint64 duration);
void positionChanged(qint64 position);
- void autoPlayChanged(bool autoPlay);
void hasAudioChanged(bool available);
void hasVideoChanged(bool videoAvailable);
diff --git a/src/multimedia/playback/qmediaplayer_p.h b/src/multimedia/playback/qmediaplayer_p.h
index f6b5a3eac..5da23fa00 100644
--- a/src/multimedia/playback/qmediaplayer_p.h
+++ b/src/multimedia/playback/qmediaplayer_p.h
@@ -87,9 +87,6 @@ public:
QMediaPlayer::PlaybackState state = QMediaPlayer::StoppedState;
QMediaPlayer::Error error = QMediaPlayer::NoError;
- bool autoPlay = false;
-
- QAudio::Role audioRole = QAudio::UnknownRole;
void setMedia(const QUrl &media, QIODevice *stream = nullptr);
diff --git a/src/multimedia/qmediaformat.h b/src/multimedia/qmediaformat.h
index ad3f7669e..0a653a03a 100644
--- a/src/multimedia/qmediaformat.h
+++ b/src/multimedia/qmediaformat.h
@@ -47,7 +47,6 @@ QT_BEGIN_NAMESPACE
class QMimeType;
class QMediaFormat;
-class QMediaEncoderSettings;
class QMediaFormatPrivate;
QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(QMediaFormatPrivate, Q_MULTIMEDIA_EXPORT)
diff --git a/src/multimedia/recording/qmediaencodersettings.cpp b/src/multimedia/recording/qmediaencodersettings.cpp
deleted file mode 100644
index 833155089..000000000
--- a/src/multimedia/recording/qmediaencodersettings.cpp
+++ /dev/null
@@ -1,347 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qmediaencodersettings.h"
-#include "qmediaformat.h"
-#include <private/qplatformmediaintegration_p.h>
-#include <private/qplatformmediaformatinfo_p.h>
-#include <qmimetype.h>
-
-QT_BEGIN_NAMESPACE
-
-/*!
- \class QMediaEncoderSettings
-
- \brief The QMediaEncoderSettings class provides a settings to encode a media file.
-
- \inmodule QtMultimedia
- \ingroup multimedia
- \ingroup multimedia_recording
-
- A media encoder settings object is used to specify the encoder
- settings used by QMediaRecorder. Settings are selected by
- constructing a QMediaEncoderSettings object specifying an output file format,
- setting the desired properties and then passing it to a QMediaRecorder instance
- using the QMediaRecorder::setEncoderSettings() function.
-
- \snippet multimedia-snippets/media.cpp Audio encoder settings
-
- \sa QMediaRecorder
-*/
-
-class QMediaEncoderSettingsPrivate : public QSharedData
-{
-public:
- QMediaEncoderSettings::EncodingMode encodingMode = QMediaEncoderSettings::ConstantQualityEncoding;
- QMediaEncoderSettings::Quality quality = QMediaEncoderSettings::NormalQuality;
-
- QMediaFormat format;
- int audioBitrate = -1;
- int audioSampleRate = -1;
- int audioChannels = -1;
-
- QSize videoResolution = QSize(-1, -1);
- int videoFrameRate = -1;
- int videoBitRate = -1;
-};
-
-/*!
- Creates andefault media encoder settings object. Qt will automatically try to
- pick the best possible encoding for the content.
-*/
-QMediaEncoderSettings::QMediaEncoderSettings()
- : QMediaEncoderSettings(QMediaFormat::UnspecifiedFormat)
-{
-}
-
-
-/*!
- Creates an audio encoder settings object with a given \a format.
-*/
-QMediaEncoderSettings::QMediaEncoderSettings(const QMediaFormat &format)
- : d(new QMediaEncoderSettingsPrivate)
-{
- d->format = format;
-}
-
-QMediaFormat QMediaEncoderSettings::mediaFormat() const
-{
- return d->format;
-}
-
-void QMediaEncoderSettings::setMediaFormat(const QMediaFormat &format)
-{
- d->format = format;
-}
-
-void QMediaEncoderSettings::setFileFormat(QMediaFormat::FileFormat f)
-{
- d->format.setFileFormat(f);
-}
-
-void QMediaEncoderSettings::setVideoCodec(QMediaFormat::VideoCodec codec)
-{
- d->format.setVideoCodec(codec);
-}
-
-void QMediaEncoderSettings::setAudioCodec(QMediaFormat::AudioCodec codec)
-{
- d->format.setAudioCodec(codec);
-}
-
-QMimeType QMediaEncoderSettings::mimeType() const
-{
- return d->format.mimeType();
-}
-
-/*!
- Creates a copy of the encoder settings object \a other.
-*/
-QMediaEncoderSettings::QMediaEncoderSettings(const QMediaEncoderSettings &other) = default;
-
-QMediaEncoderSettings &QMediaEncoderSettings::operator=(const QMediaEncoderSettings &other) = default;
-
-QMediaEncoderSettings::~QMediaEncoderSettings() = default;
-
-
-/*!
- \enum QMediaEncoderSettings::EncodingQuality
-
- Enumerates quality encoding levels.
-
- \value VeryLowQuality
- \value LowQuality
- \value NormalQuality
- \value HighQuality
- \value VeryHighQuality
-*/
-
-/*!
- \enum QMediaEncoderSettings::EncodingMode
-
- Enumerates encoding modes.
-
- \value ConstantQualityEncoding Encoding will aim to have a constant quality, adjusting bitrate to fit.
- \value ConstantBitRateEncoding Encoding will use a constant bit rate, adjust quality to fit.
- \value AverageBitRateEncoding Encoding will try to keep an average bitrate setting, but will use
- more or less as needed.
- \value TwoPassEncoding The media will first be processed to determine the characteristics,
- and then processed a second time allocating more bits to the areas
- that need it.
-*/
-
-/*!
- Returns the encoding mode.
-
- \sa EncodingMode
-*/
-QMediaEncoderSettings::EncodingMode QMediaEncoderSettings::encodingMode() const
-{
- return d->encodingMode;
-}
-
-/*!
- Sets the encoding \a mode setting.
-
- If ConstantQualityEncoding is set, the quality
- encoding parameter is used and bit rates are ignored,
- otherwise the bitrates are used.
-
- \sa encodingMode(), EncodingMode
-*/
-void QMediaEncoderSettings::setEncodingMode(EncodingMode mode)
-{
- d->encodingMode = mode;
-}
-
-QMediaEncoderSettings::Quality QMediaEncoderSettings::quality() const
-{
- return d->quality;
-}
-
-void QMediaEncoderSettings::setQuality(Quality quality)
-{
- d->quality = quality;
-}
-
-/*!
- Resolves the format to a format that is supported by QMediaRecorder.
-
- This method tries to find the best possible match for unspecified settings.
- Settings that are not supported by the encoder will be modified to the closest
- match that is supported.
- */
-void QMediaEncoderSettings::resolveFormat(QMediaFormat::ResolveFlags flags)
-{
- d->format.resolveForEncoding(flags);
-}
-
-/*!
- Returns the resolution of the encoded video.
-*/
-QSize QMediaEncoderSettings::videoResolution() const
-{
- return d->videoResolution;
-}
-
-/*!
- Sets the \a resolution of the encoded video.
-
- An empty QSize indicates the encoder should make an optimal choice based on
- what is available from the video source and the limitations of the codec.
-*/
-void QMediaEncoderSettings::setVideoResolution(const QSize &size)
-{
- d->videoResolution = size;
-}
-
-/*! \fn void QMediaEncoderSettings::setVideoResolution(int width, int height)
-
- Sets the \a width and \a height of the resolution of the encoded video.
-
- \overload
-*/
-
-/*!
- Returns the video frame rate.
-*/
-qreal QMediaEncoderSettings::videoFrameRate() const
-{
- return d->videoFrameRate;
-}
-
-/*!
- \fn QVideoEncoderSettings::setFrameRate(qreal rate)
-
- Sets the video frame \a rate.
-
- A value of 0 indicates the encoder should make an optimal choice based on what is available
- from the video source and the limitations of the codec.
-*/
-void QMediaEncoderSettings::setVideoFrameRate(qreal rate)
-{
- d->videoFrameRate = rate;
-}
-
-/*!
- Returns the bit rate of the compressed video stream in bits per second.
-*/
-int QMediaEncoderSettings::videoBitRate() const
-{
- return d->videoBitRate;
-}
-
-/*!
- Sets the video bit \a rate in bits per second.
-*/
-void QMediaEncoderSettings::setVideoBitRate(int bitrate)
-{
- d->videoBitRate = bitrate;
-}
-
-/*!
- Returns the bit rate of the compressed audio stream in bits per second.
-*/
-int QMediaEncoderSettings::audioBitRate() const
-{
- return d->audioBitrate;
-}
-
-/*!
- Sets the audio bit \a rate in bits per second.
-*/
-void QMediaEncoderSettings::setAudioBitRate(int bitrate)
-{
- d->audioBitrate = bitrate;
-}
-
-/*!
- Returns the number of audio channels.
-*/
-int QMediaEncoderSettings::audioChannelCount() const
-{
- return d->audioChannels;
-}
-
-/*!
- Sets the number of audio \a channels.
-
- A value of -1 indicates the encoder should make an optimal choice based on
- what is available from the audio source and the limitations of the codec.
-*/
-void QMediaEncoderSettings::setAudioChannelCount(int channels)
-{
- d->audioChannels = channels;
-}
-
-/*!
- Returns the audio sample rate in Hz.
-*/
-int QMediaEncoderSettings::audioSampleRate() const
-{
- return d->audioSampleRate;
-}
-
-/*!
- Sets the audio sample \a rate in Hz.
-
- A value of -1 indicates the encoder should make an optimal choice based on what is avaialbe
- from the audio source and the limitations of the codec.
-*/
-void QMediaEncoderSettings::setAudioSampleRate(int rate)
-{
- d->audioSampleRate = rate;
-}
-
-bool QMediaEncoderSettings::operator==(const QMediaEncoderSettings &other) const
-{
- if (d == other.d)
- return true;
- return d->format == other.d->format &&
- d->encodingMode == other.d->encodingMode &&
- d->quality == other.d->quality &&
- d->audioBitrate == other.d->audioBitrate &&
- d->audioSampleRate == other.d->audioSampleRate &&
- d->audioChannels == other.d->audioChannels &&
- d->videoResolution == other.d->videoResolution &&
- d->videoFrameRate == other.d->videoFrameRate &&
- d->videoBitRate == other.d->videoBitRate;
-}
-
-QT_END_NAMESPACE
diff --git a/src/multimedia/recording/qmediaencodersettings.h b/src/multimedia/recording/qmediaencodersettings.h
deleted file mode 100644
index 7e24e2018..000000000
--- a/src/multimedia/recording/qmediaencodersettings.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QMediaEncoderSettings_H
-#define QMediaEncoderSettings_H
-
-#include <QtCore/qsharedpointer.h>
-#include <QtCore/qstring.h>
-#include <QtCore/qsize.h>
-#include <QtCore/qvariant.h>
-#include <QtMultimedia/qtmultimediaglobal.h>
-#include <QtMultimedia/qmediaformat.h>
-
-QT_BEGIN_NAMESPACE
-
-class QMediaEncoderSettingsPrivate;
-class Q_MULTIMEDIA_EXPORT QMediaEncoderSettings
-{
- Q_GADGET
- Q_PROPERTY(QMediaFormat mediaFormat READ mediaFormat WRITE setMediaFormat)
- Q_PROPERTY(Quality quality READ quality WRITE setQuality)
-public:
- enum Quality
- {
- VeryLowQuality,
- LowQuality,
- NormalQuality,
- HighQuality,
- VeryHighQuality
- };
- Q_ENUM(Quality)
-
- enum EncodingMode
- {
- ConstantQualityEncoding,
- ConstantBitRateEncoding,
- AverageBitRateEncoding,
- TwoPassEncoding
- };
-
- QMediaEncoderSettings();
- QMediaEncoderSettings(const QMediaFormat &format);
- QMediaEncoderSettings(const QMediaEncoderSettings& other);
- QMediaEncoderSettings& operator=(const QMediaEncoderSettings &other);
- ~QMediaEncoderSettings();
-
- QMediaFormat mediaFormat() const;
- void setMediaFormat(const QMediaFormat &format);
-
- QMediaFormat::FileFormat fileFormat() const { return mediaFormat().fileFormat(); }
- void setFileFormat(QMediaFormat::FileFormat f);
-
- QMediaFormat::VideoCodec videoCodec() const { return mediaFormat().videoCodec(); }
- void setVideoCodec(QMediaFormat::VideoCodec codec);
-
- QMediaFormat::AudioCodec audioCodec() const { return mediaFormat().audioCodec(); }
- void setAudioCodec(QMediaFormat::AudioCodec codec);
-
- QMimeType mimeType() const;
-
- EncodingMode encodingMode() const;
- void setEncodingMode(EncodingMode);
-
- Quality quality() const;
- void setQuality(Quality quality);
-
- void resolveFormat(QMediaFormat::ResolveFlags = QMediaFormat::NoFlags);
-
- QSize videoResolution() const;
- void setVideoResolution(const QSize &);
- void setVideoResolution(int width, int height) { setVideoResolution(QSize(width, height)); }
-
- qreal videoFrameRate() const;
- void setVideoFrameRate(qreal rate);
-
- int videoBitRate() const;
- void setVideoBitRate(int bitrate);
-
- int audioBitRate() const;
- void setAudioBitRate(int bitrate);
-
- int audioChannelCount() const;
- void setAudioChannelCount(int channels);
-
- int audioSampleRate() const;
- void setAudioSampleRate(int rate);
-
- bool operator==(const QMediaEncoderSettings &other) const;
- bool operator!=(const QMediaEncoderSettings &other) const
- { return !operator==(other); }
-
-private:
- QSharedDataPointer<QMediaEncoderSettingsPrivate> d;
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/src/multimedia/recording/qmediarecorder.cpp b/src/multimedia/recording/qmediarecorder.cpp
index 24b1c21b4..69a07ada3 100644
--- a/src/multimedia/recording/qmediarecorder.cpp
+++ b/src/multimedia/recording/qmediarecorder.cpp
@@ -253,35 +253,6 @@ qint64 QMediaRecorder::duration() const
}
/*!
- Sets the encoder settings to \a settings.
-
- \sa QMediaEncoderSettings
-*/
-void QMediaRecorder::setEncoderSettings(const QMediaEncoderSettings &settings)
-{
- Q_D(QMediaRecorder);
- if (d->encoderSettings == settings)
- return;
-
- d->encoderSettings = settings;
- if (d->control && d->captureSession)
- d->control->setEncoderSettings(settings);
- d->applySettingsLater();
-
- emit encoderSettingsChanged();
-}
-
-/*!
- Returns the current encoder settings.
-
- \sa QMediaEncoderSettings
-*/
-QMediaEncoderSettings QMediaRecorder::encoderSettings() const
-{
- return d_func()->encoderSettings;
-}
-
-/*!
Start recording.
While the encoder state is changed immediately to QMediaRecorder::RecordingState,
@@ -483,6 +454,266 @@ QMediaCaptureSession *QMediaRecorder::captureSession() const
return d->captureSession;
}
+/*!
+ \enum QMediaRecorder::EncodingQuality
+
+ Enumerates quality encoding levels.
+
+ \value VeryLowQuality
+ \value LowQuality
+ \value NormalQuality
+ \value HighQuality
+ \value VeryHighQuality
+*/
+
+/*!
+ \enum QMediaRecorder::EncodingMode
+
+ Enumerates encoding modes.
+
+ \value ConstantQualityEncoding Encoding will aim to have a constant quality, adjusting bitrate to fit.
+ \value ConstantBitRateEncoding Encoding will use a constant bit rate, adjust quality to fit.
+ \value AverageBitRateEncoding Encoding will try to keep an average bitrate setting, but will use
+ more or less as needed.
+ \value TwoPassEncoding The media will first be processed to determine the characteristics,
+ and then processed a second time allocating more bits to the areas
+ that need it.
+*/
+
+QMediaFormat QMediaRecorder::mediaFormat() const
+{
+ Q_D(const QMediaRecorder);
+ return d->encoderSettings.mediaFormat();
+}
+
+void QMediaRecorder::setMediaFormat(const QMediaFormat &format)
+{
+ Q_D(QMediaRecorder);
+ if (d->encoderSettings.mediaFormat() == format)
+ return;
+ d->encoderSettings.setMediaFormat(format);
+ if (d->control)
+ d->control->setEncoderSettings(d->encoderSettings);
+ d->applySettingsLater();
+ emit mediaFormatChanged();
+}
+
+/*!
+ Returns the encoding mode.
+
+ \sa EncodingMode
+*/
+QMediaRecorder::EncodingMode QMediaRecorder::encodingMode() const
+{
+ Q_D(const QMediaRecorder);
+ return d->encoderSettings.encodingMode();
+}
+
+/*!
+ Sets the encoding \a mode setting.
+
+ If ConstantQualityEncoding is set, the quality
+ encoding parameter is used and bit rates are ignored,
+ otherwise the bitrates are used.
+
+ \sa encodingMode(), EncodingMode
+*/
+void QMediaRecorder::setEncodingMode(EncodingMode mode)
+{
+ Q_D(QMediaRecorder);
+ if (d->encoderSettings.encodingMode() == mode)
+ return;
+ d->encoderSettings.setEncodingMode(mode);
+ if (d->control)
+ d->control->setEncoderSettings(d->encoderSettings);
+ d->applySettingsLater();
+ emit encodingModeChanged();
+}
+
+QMediaRecorder::Quality QMediaRecorder::quality() const
+{
+ Q_D(const QMediaRecorder);
+ return d->encoderSettings.quality();
+}
+
+void QMediaRecorder::setQuality(Quality quality)
+{
+ Q_D(QMediaRecorder);
+ if (d->encoderSettings.quality() == quality)
+ return;
+ d->encoderSettings.setQuality(quality);
+ if (d->control)
+ d->control->setEncoderSettings(d->encoderSettings);
+ d->applySettingsLater();
+ emit qualityChanged();
+}
+
+
+/*!
+ Returns the resolution of the encoded video.
+*/
+QSize QMediaRecorder::videoResolution() const
+{
+ Q_D(const QMediaRecorder);
+ return d->encoderSettings.videoResolution();
+}
+
+/*!
+ Sets the \a resolution of the encoded video.
+
+ An empty QSize indicates the encoder should make an optimal choice based on
+ what is available from the video source and the limitations of the codec.
+*/
+void QMediaRecorder::setVideoResolution(const QSize &size)
+{
+ Q_D(QMediaRecorder);
+ if (d->encoderSettings.videoResolution() == size)
+ return;
+ d->encoderSettings.setVideoResolution(size);
+ if (d->control)
+ d->control->setEncoderSettings(d->encoderSettings);
+ d->applySettingsLater();
+ emit videoResolutionChanged();
+}
+
+/*! \fn void QMediaRecorder::setVideoResolution(int width, int height)
+
+ Sets the \a width and \a height of the resolution of the encoded video.
+
+ \overload
+*/
+
+/*!
+ Returns the video frame rate.
+*/
+qreal QMediaRecorder::videoFrameRate() const
+{
+ Q_D(const QMediaRecorder);
+ return d->encoderSettings.videoFrameRate();
+}
+
+/*!
+ \fn QVideoEncoderSettings::setFrameRate(qreal rate)
+
+ Sets the video frame \a rate.
+
+ A value of 0 indicates the encoder should make an optimal choice based on what is available
+ from the video source and the limitations of the codec.
+*/
+void QMediaRecorder::setVideoFrameRate(qreal frameRate)
+{
+ Q_D(QMediaRecorder);
+ if (d->encoderSettings.videoFrameRate() == frameRate)
+ return;
+ d->encoderSettings.setVideoFrameRate(frameRate);
+ if (d->control)
+ d->control->setEncoderSettings(d->encoderSettings);
+ d->applySettingsLater();
+ emit videoFrameRateChanged();
+}
+
+/*!
+ Returns the bit rate of the compressed video stream in bits per second.
+*/
+int QMediaRecorder::videoBitRate() const
+{
+ Q_D(const QMediaRecorder);
+ return d->encoderSettings.videoBitRate();
+}
+
+/*!
+ Sets the video bit \a rate in bits per second.
+*/
+void QMediaRecorder::setVideoBitRate(int bitRate)
+{
+ Q_D(QMediaRecorder);
+ if (d->encoderSettings.videoBitRate() == bitRate)
+ return;
+ d->encoderSettings.setVideoBitRate(bitRate);
+ if (d->control)
+ d->control->setEncoderSettings(d->encoderSettings);
+ d->applySettingsLater();
+ emit videoBitRateChanged();
+}
+
+/*!
+ Returns the bit rate of the compressed audio stream in bits per second.
+*/
+int QMediaRecorder::audioBitRate() const
+{
+ Q_D(const QMediaRecorder);
+ return d->encoderSettings.audioBitRate();
+}
+
+/*!
+ Sets the audio bit \a rate in bits per second.
+*/
+void QMediaRecorder::setAudioBitRate(int bitRate)
+{
+ Q_D(QMediaRecorder);
+ if (d->encoderSettings.audioBitRate() == bitRate)
+ return;
+ d->encoderSettings.setAudioBitRate(bitRate);
+ if (d->control)
+ d->control->setEncoderSettings(d->encoderSettings);
+ d->applySettingsLater();
+ emit audioBitRateChanged();
+}
+
+/*!
+ Returns the number of audio channels.
+*/
+int QMediaRecorder::audioChannelCount() const
+{
+ Q_D(const QMediaRecorder);
+ return d->encoderSettings.audioChannelCount();
+}
+
+/*!
+ Sets the number of audio \a channels.
+
+ A value of -1 indicates the encoder should make an optimal choice based on
+ what is available from the audio source and the limitations of the codec.
+*/
+void QMediaRecorder::setAudioChannelCount(int channels)
+{
+ Q_D(QMediaRecorder);
+ if (d->encoderSettings.audioChannelCount() == channels)
+ return;
+ d->encoderSettings.setAudioChannelCount(channels);
+ if (d->control)
+ d->control->setEncoderSettings(d->encoderSettings);
+ d->applySettingsLater();
+ emit audioChannelCountChanged();
+}
+
+/*!
+ Returns the audio sample rate in Hz.
+*/
+int QMediaRecorder::audioSampleRate() const
+{
+ Q_D(const QMediaRecorder);
+ return d->encoderSettings.audioSampleRate();
+}
+
+/*!
+ Sets the audio sample \a rate in Hz.
+
+ A value of -1 indicates the encoder should make an optimal choice based on what is avaialbe
+ from the audio source and the limitations of the codec.
+*/
+void QMediaRecorder::setAudioSampleRate(int sampleRate)
+{
+ Q_D(QMediaRecorder);
+ if (d->encoderSettings.audioSampleRate() == sampleRate)
+ return;
+ d->encoderSettings.setAudioSampleRate(sampleRate);
+ if (d->control)
+ d->control->setEncoderSettings(d->encoderSettings);
+ d->applySettingsLater();
+ emit audioSampleRateChanged();
+}
+
QT_END_NAMESPACE
#include "moc_qmediarecorder.cpp"
diff --git a/src/multimedia/recording/qmediarecorder.h b/src/multimedia/recording/qmediarecorder.h
index a33988672..d92cd3ec9 100644
--- a/src/multimedia/recording/qmediarecorder.h
+++ b/src/multimedia/recording/qmediarecorder.h
@@ -41,8 +41,8 @@
#define QMediaRecorder_H
#include <QtCore/qobject.h>
+#include <QtCore/qsize.h>
#include <QtMultimedia/qtmultimediaglobal.h>
-#include <QtMultimedia/qmediaencodersettings.h>
#include <QtMultimedia/qmediaenumdebug.h>
#include <QtMultimedia/qmediametadata.h>
@@ -55,6 +55,7 @@ class QSize;
class QAudioFormat;
class QCamera;
class QCameraDevice;
+class QMediaFormat;
class QAudioDevice;
class QMediaCaptureSession;
@@ -70,9 +71,28 @@ class Q_MULTIMEDIA_EXPORT QMediaRecorder : public QObject
Q_PROPERTY(QMediaMetaData metaData READ metaData WRITE setMetaData NOTIFY metaDataChanged)
Q_PROPERTY(QMediaRecorder::Error error READ error NOTIFY errorChanged)
Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged)
- Q_PROPERTY(QMediaEncoderSettings encoderSettings READ encoderSettings WRITE setEncoderSettings NOTIFY encoderSettingsChanged)
-
+ Q_PROPERTY(QMediaFormat mediaFormat READ mediaFormat WRITE setMediaFormat)
+ Q_PROPERTY(Quality quality READ quality WRITE setQuality)
public:
+ enum Quality
+ {
+ VeryLowQuality,
+ LowQuality,
+ NormalQuality,
+ HighQuality,
+ VeryHighQuality
+ };
+ Q_ENUM(Quality)
+
+ enum EncodingMode
+ {
+ ConstantQualityEncoding,
+ ConstantBitRateEncoding,
+ AverageBitRateEncoding,
+ TwoPassEncoding
+ };
+ Q_ENUM(EncodingMode)
+
enum RecorderState
{
StoppedState,
@@ -118,8 +138,33 @@ public:
qint64 duration() const;
- void setEncoderSettings(const QMediaEncoderSettings &);
- QMediaEncoderSettings encoderSettings() const;
+ QMediaFormat mediaFormat() const;
+ void setMediaFormat(const QMediaFormat &format);
+
+ EncodingMode encodingMode() const;
+ void setEncodingMode(EncodingMode);
+
+ Quality quality() const;
+ void setQuality(Quality quality);
+
+ QSize videoResolution() const;
+ void setVideoResolution(const QSize &);
+ void setVideoResolution(int width, int height) { setVideoResolution(QSize(width, height)); }
+
+ qreal videoFrameRate() const;
+ void setVideoFrameRate(qreal frameRate);
+
+ int videoBitRate() const;
+ void setVideoBitRate(int bitRate);
+
+ int audioBitRate() const;
+ void setAudioBitRate(int bitRate);
+
+ int audioChannelCount() const;
+ void setAudioChannelCount(int channels);
+
+ int audioSampleRate() const;
+ void setAudioSampleRate(int sampleRate);
QMediaMetaData metaData() const;
void setMetaData(const QMediaMetaData &metaData);
@@ -144,6 +189,16 @@ Q_SIGNALS:
void metaDataChanged();
+ void mediaFormatChanged();
+ void encodingModeChanged();
+ void qualityChanged();
+ void videoResolutionChanged();
+ void videoFrameRateChanged();
+ void videoBitRateChanged();
+ void audioBitRateChanged();
+ void audioChannelCountChanged();
+ void audioSampleRateChanged();
+
private:
QMediaRecorderPrivate *d_ptr;
friend class QMediaCaptureSession;
diff --git a/src/multimedia/recording/qmediarecorder_p.h b/src/multimedia/recording/qmediarecorder_p.h
index d243b3ace..c434b803b 100644
--- a/src/multimedia/recording/qmediarecorder_p.h
+++ b/src/multimedia/recording/qmediarecorder_p.h
@@ -55,6 +55,7 @@
#include "qcamera.h"
#include <QtCore/qurl.h>
#include <QtCore/qpointer.h>
+#include "private/qplatformmediaencoder_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/multimediaquick/qquickimagecapture_p.h b/src/multimediaquick/qquickimagecapture_p.h
index e035eefdd..f01d95ecf 100644
--- a/src/multimediaquick/qquickimagecapture_p.h
+++ b/src/multimediaquick/qquickimagecapture_p.h
@@ -53,7 +53,6 @@
#include <qcamera.h>
#include <qcameraimagecapture.h>
-#include <qmediaencodersettings.h>
#include <qmediametadata.h>
#include <QtQml/qqml.h>
diff --git a/src/multimediaquick/qtmultimediaquicktypes_p.h b/src/multimediaquick/qtmultimediaquicktypes_p.h
index dc53f6701..f44e3245b 100644
--- a/src/multimediaquick/qtmultimediaquicktypes_p.h
+++ b/src/multimediaquick/qtmultimediaquicktypes_p.h
@@ -148,13 +148,6 @@ struct QMediaFormatForeign
QML_NAMED_ELEMENT(mediaFormat)
};
-struct QMediaEncoderSettingsForeign
-{
- Q_GADGET
- QML_FOREIGN(QMediaEncoderSettings)
- QML_NAMED_ELEMENT(encoderSettings)
-};
-
QT_END_NAMESPACE
#endif
diff --git a/tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp b/tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp
index 428c06dcb..75e06a4a4 100644
--- a/tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp
+++ b/tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp
@@ -60,8 +60,8 @@ public slots:
void cleanupTestCase();
private slots:
- void testCameraInfo();
- void testCtorWithCameraInfo();
+ void testCameraDevice();
+ void testCtorWithCameraDevice();
void testCtorWithPosition();
void testCameraStates();
@@ -88,7 +88,7 @@ void tst_QCameraBackend::cleanupTestCase()
{
}
-void tst_QCameraBackend::testCameraInfo()
+void tst_QCameraBackend::testCameraDevice()
{
const QList<QCameraDevice> cameras = QMediaDevices::videoInputs();
if (cameras.isEmpty()) {
@@ -104,13 +104,13 @@ void tst_QCameraBackend::testCameraInfo()
}
}
-void tst_QCameraBackend::testCtorWithCameraInfo()
+void tst_QCameraBackend::testCtorWithCameraDevice()
{
{
- // loading an invalid CameraInfo should fail
+ // loading an invalid CameraDevice should fail
QCamera camera(QCameraDevice{});
QCOMPARE(camera.error(), QCamera::CameraError);
- QVERIFY(camera.cameraInfo().isNull());
+ QVERIFY(camera.cameraDevice().isNull());
}
if (noCamera)
@@ -120,13 +120,13 @@ void tst_QCameraBackend::testCtorWithCameraInfo()
QCameraDevice info = QMediaDevices::defaultVideoInput();
QCamera camera(info);
QCOMPARE(camera.error(), QCamera::NoError);
- QCOMPARE(camera.cameraInfo(), info);
+ QCOMPARE(camera.cameraDevice(), info);
}
{
QCameraDevice info = QMediaDevices::videoInputs().first();
QCamera camera(info);
QCOMPARE(camera.error(), QCamera::NoError);
- QCOMPARE(camera.cameraInfo(), info);
+ QCOMPARE(camera.cameraDevice(), info);
}
}
@@ -157,7 +157,7 @@ void tst_QCameraBackend::testCameraStates()
{
QMediaCaptureSession session;
QCamera camera;
- camera.setCameraInfo(QCameraDevice());
+ camera.setCameraDevice(QCameraDevice());
QCameraImageCapture imageCapture;
session.setCamera(&camera);
session.setImageCapture(&imageCapture);
@@ -175,7 +175,7 @@ void tst_QCameraBackend::testCameraStates()
if (noCamera)
QSKIP("No camera available");
- camera.setCameraInfo(QMediaDevices::defaultVideoInput());
+ camera.setCameraDevice(QMediaDevices::defaultVideoInput());
QCOMPARE(camera.error(), QCamera::NoError);
camera.start();
@@ -461,9 +461,7 @@ void tst_QCameraBackend::testVideoRecording()
QSignalSpy recorderErrorSignal(&recorder, SIGNAL(errorOccurred(Error, const QString &)));
QSignalSpy recorderStatusSignal(&recorder, SIGNAL(statusChanged(Status)));
- QMediaEncoderSettings videoSettings;
- videoSettings.setVideoResolution(320, 240);
- recorder.setEncoderSettings(videoSettings);
+ recorder.setVideoResolution(320, 240);
QCOMPARE(recorder.status(), QMediaRecorder::StoppedStatus);
diff --git a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
index 0a4897c25..d58c33ab6 100644
--- a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
+++ b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
@@ -1080,7 +1080,7 @@ void tst_QMediaPlayerBackend::playFromBuffer()
QFile file(localVideoFile.toLocalFile());
if (!file.open(QIODevice::ReadOnly))
QSKIP("Could not open file");
- player.setSource(localVideoFile, &file);
+ player.setSourceDevice(&file, localVideoFile);
player.play();
QTRY_VERIFY(player.position() >= 1000);
QVERIFY2(surface.m_totalFrames >= 25, qPrintable(QString("Expected >= 25, got %1").arg(surface.m_totalFrames)));
diff --git a/tests/auto/unit/mockbackend/qmockaudiooutput.h b/tests/auto/unit/mockbackend/qmockaudiooutput.h
index 02245a7a3..30cc46604 100644
--- a/tests/auto/unit/mockbackend/qmockaudiooutput.h
+++ b/tests/auto/unit/mockbackend/qmockaudiooutput.h
@@ -58,16 +58,6 @@ class QMockAudioOutput : public QPlatformAudioOutput
{
public:
QMockAudioOutput(QAudioOutput *qq) : QPlatformAudioOutput(qq) {}
-
- virtual QList<QAudio::Role> supportedAudioRoles() const {
- if (!hasAudioRole)
- return {};
- return QList<QAudio::Role>() << QAudio::MusicRole
- << QAudio::AlarmRole
- << QAudio::NotificationRole;
- }
-
- bool hasAudioRole = true;
};
QT_END_NAMESPACE
diff --git a/tests/auto/unit/mockbackend/qmockcamera.h b/tests/auto/unit/mockbackend/qmockcamera.h
index ac0329c68..f10c972f9 100644
--- a/tests/auto/unit/mockbackend/qmockcamera.h
+++ b/tests/auto/unit/mockbackend/qmockcamera.h
@@ -56,8 +56,8 @@ public:
if (!simpleCamera) {
minIsoChanged(100);
maxIsoChanged(800);
- minShutterSpeedChanged(.001f);
- maxShutterSpeedChanged(1.f);
+ minExposureTimeChanged(.001f);
+ maxExposureTimeChanged(1.f);
exposureCompensationRangeChanged(-2, 2);
maximumZoomFactorChanged(4.);
setFlashMode(QCamera::FlashAuto);
diff --git a/tests/auto/unit/multimedia/qcamera/CMakeLists.txt b/tests/auto/unit/multimedia/qcamera/CMakeLists.txt
index c1de3d65f..6a78fd572 100644
--- a/tests/auto/unit/multimedia/qcamera/CMakeLists.txt
+++ b/tests/auto/unit/multimedia/qcamera/CMakeLists.txt
@@ -4,7 +4,7 @@
## tst_qcamera Test:
#####################################################################
-qt_internal_add_test(tst_qmultimediacamera
+qt_internal_add_test(tst_qcamera
SOURCES
tst_qcamera.cpp
INCLUDE_DIRECTORIES
diff --git a/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp b/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp
index 5e227f64a..2137ac4ca 100644
--- a/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp
+++ b/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp
@@ -173,8 +173,8 @@ void tst_QCamera::testSimpleCameraExposure()
QCOMPARE(camera.isoSensitivity(), -1);
QVERIFY(camera.exposureTime() < 0);
- QCOMPARE(camera.minimumShutterSpeed(), -1.);
- QCOMPARE(camera.maximumShutterSpeed(), -1.);
+ QCOMPARE(camera.minimumExposureTime(), -1.);
+ QCOMPARE(camera.maximumExposureTime(), -1.);
camera.setAutoExposureTime();
QVERIFY(camera.exposureTime() < 0);
camera.setManualExposureTime(1/128.0);
@@ -384,22 +384,22 @@ void tst_QCamera::testCameraExposure()
camera.setAutoIsoSensitivity();
QCOMPARE(camera.isoSensitivity(), 100);
- qreal minShutterSpeed = camera.minimumShutterSpeed();
- qreal maxShutterSpeed = camera.maximumShutterSpeed();
- QVERIFY(minShutterSpeed > 0);
- QVERIFY(maxShutterSpeed > 0);
- QVERIFY(camera.exposureTime() >= minShutterSpeed);
- QVERIFY(camera.exposureTime() <= maxShutterSpeed);
+ qreal minExposureTime = camera.minimumExposureTime();
+ qreal maxExposureTime = camera.maximumExposureTime();
+ QVERIFY(minExposureTime > 0);
+ QVERIFY(maxExposureTime > 0);
+ QVERIFY(camera.exposureTime() >= minExposureTime);
+ QVERIFY(camera.exposureTime() <= maxExposureTime);
camera.setAutoExposureTime();
- QVERIFY(camera.exposureTime() >= minShutterSpeed);
- QVERIFY(camera.exposureTime() <= maxShutterSpeed);
+ QVERIFY(camera.exposureTime() >= minExposureTime);
+ QVERIFY(camera.exposureTime() <= maxExposureTime);
camera.setManualExposureTime(0);
- QCOMPARE(camera.exposureTime(), minShutterSpeed);
+ QCOMPARE(camera.exposureTime(), minExposureTime);
camera.setManualExposureTime(10000);
- QCOMPARE(camera.exposureTime(), maxShutterSpeed);
+ QCOMPARE(camera.exposureTime(), maxExposureTime);
camera.setAutoExposureTime();
}
@@ -577,36 +577,36 @@ void tst_QCamera::testConstructor()
QCamera camera;
QCOMPARE(camera.isAvailable(), true);
QCOMPARE(camera.error(), QCamera::NoError);
- QCOMPARE(camera.cameraInfo(), defaultCamera);
+ QCOMPARE(camera.cameraDevice(), defaultCamera);
}
{
QCamera camera(QCameraDevice::FrontFace);
QCOMPARE(camera.isAvailable(), true);
QCOMPARE(camera.error(), QCamera::NoError);
- QCOMPARE(camera.cameraInfo(), frontCamera);
+ QCOMPARE(camera.cameraDevice(), frontCamera);
}
{
QCamera camera(QMediaDevices::defaultVideoInput());
QCOMPARE(camera.isAvailable(), true);
QCOMPARE(camera.error(), QCamera::NoError);
- QCOMPARE(camera.cameraInfo(), defaultCamera);
+ QCOMPARE(camera.cameraDevice(), defaultCamera);
}
{
- QCameraDevice cameraInfo = QMediaDevices::videoInputs().at(0);
- QCamera camera(cameraInfo);
+ QCameraDevice cameraDevice = QMediaDevices::videoInputs().at(0);
+ QCamera camera(cameraDevice);
QCOMPARE(camera.isAvailable(), true);
QCOMPARE(camera.error(), QCamera::NoError);
- QCOMPARE(camera.cameraInfo(), cameraInfo);
+ QCOMPARE(camera.cameraDevice(), cameraDevice);
}
{
QCamera camera(QCameraDevice::BackFace);
QCOMPARE(camera.isAvailable(), true);
QCOMPARE(camera.error(), QCamera::NoError);
- QCOMPARE(camera.cameraInfo(), backCamera);
+ QCOMPARE(camera.cameraDevice(), backCamera);
}
{
@@ -614,7 +614,7 @@ void tst_QCamera::testConstructor()
QCamera camera(QCameraDevice::UnspecifiedPosition);
QCOMPARE(camera.isAvailable(), true);
QCOMPARE(camera.error(), QCamera::NoError);
- QCOMPARE(camera.cameraInfo(), defaultCamera);
+ QCOMPARE(camera.cameraDevice(), defaultCamera);
}
}
@@ -822,14 +822,14 @@ void tst_QCamera::testSignalShutterSpeedChanged()
QCamera camera;
session.setCamera(&camera);
- QSignalSpy spySignalShutterSpeedChanged(&camera, SIGNAL(exposureTimeChanged(qreal)));
+ QSignalSpy spySignalExposureTimeChanged(&camera, SIGNAL(exposureTimeChanged(float)));
- QVERIFY(spySignalShutterSpeedChanged.count() ==0);
+ QVERIFY(spySignalExposureTimeChanged.count() ==0);
camera.setManualExposureTime(2.0);//set the ManualShutterSpeed to 2.0
QTest::qWait(100);
- QVERIFY(spySignalShutterSpeedChanged.count() ==1);
+ QVERIFY(spySignalExposureTimeChanged.count() ==1);
}
void tst_QCamera::testSignalFlashReady()
diff --git a/tests/auto/unit/multimedia/qcameradevice/tst_qcameradevice.cpp b/tests/auto/unit/multimedia/qcameradevice/tst_qcameradevice.cpp
index 458c77efa..c8f93330f 100644
--- a/tests/auto/unit/multimedia/qcameradevice/tst_qcameradevice.cpp
+++ b/tests/auto/unit/multimedia/qcameradevice/tst_qcameradevice.cpp
@@ -74,7 +74,7 @@ void tst_QCameraDevice::constructor()
{
// default camera
QCamera camera;
- QCameraDevice info(camera.cameraInfo());
+ QCameraDevice info(camera.cameraDevice());
QVERIFY(!info.isNull());
QCOMPARE(info.id(), QStringLiteral("default"));
QCOMPARE(info.description(), QStringLiteral("defaultCamera"));
@@ -90,7 +90,7 @@ void tst_QCameraDevice::constructor()
QVERIFY(!info.isNull());
QCamera camera(info);
- QCOMPARE(info, camera.cameraInfo());
+ QCOMPARE(info, camera.cameraDevice());
QVERIFY(!info.isNull());
QCOMPARE(info.id(), QStringLiteral("back"));
QCOMPARE(info.description(), QStringLiteral("backCamera"));
@@ -113,7 +113,7 @@ void tst_QCameraDevice::defaultCamera()
QCOMPARE(info.position(), QCameraDevice::UnspecifiedPosition);
QCamera camera(info);
- QCOMPARE(camera.cameraInfo(), info);
+ QCOMPARE(camera.cameraDevice(), info);
}
void tst_QCameraDevice::availableCameras()
@@ -152,13 +152,13 @@ void tst_QCameraDevice::equality_operators()
{
QCamera camera(defaultCamera);
- QVERIFY(camera.cameraInfo() == defaultCamera);
- QVERIFY(camera.cameraInfo() == cameras.at(0));
+ QVERIFY(camera.cameraDevice() == defaultCamera);
+ QVERIFY(camera.cameraDevice() == cameras.at(0));
}
{
QCamera camera(cameras.at(1));
- QVERIFY(camera.cameraInfo() == cameras.at(1));
+ QVERIFY(camera.cameraDevice() == cameras.at(1));
}
}
diff --git a/tests/auto/unit/multimedia/qmediaplayer/tst_qmediaplayer.cpp b/tests/auto/unit/multimedia/qmediaplayer/tst_qmediaplayer.cpp
index 9e3c30466..28e7f5baf 100644
--- a/tests/auto/unit/multimedia/qmediaplayer/tst_qmediaplayer.cpp
+++ b/tests/auto/unit/multimedia/qmediaplayer/tst_qmediaplayer.cpp
@@ -118,7 +118,6 @@ private slots:
void testDestructor();
void testQrc_data();
void testQrc();
- void testAudioRole();
private:
void setupCommonTestData();
@@ -251,9 +250,9 @@ void tst_QMediaPlayer::testMedia()
QCOMPARE(player->source(), mediaContent);
QBuffer stream;
- player->setSource(mediaContent, &stream);
+ player->setSourceDevice(&stream, mediaContent);
QCOMPARE(player->source(), mediaContent);
- QCOMPARE(player->sourceStream(), &stream);
+ QCOMPARE(player->sourceDevice(), &stream);
}
void tst_QMediaPlayer::testDuration_data()
@@ -790,42 +789,5 @@ void tst_QMediaPlayer::testQrc()
QCOMPARE(bool(mockPlayer->mediaStream()), backendHasStream);
}
-void tst_QMediaPlayer::testAudioRole()
-{
- auto *mockAudioOutput = static_cast<QMockAudioOutput *>(mockPlayer->m_audioOutput);
- {
- mockAudioOutput->hasAudioRole = false;
-
- QCOMPARE(audioOutput->audioRole(), QAudio::UnknownRole);
- QVERIFY(audioOutput->supportedAudioRoles().isEmpty());
-
- QSignalSpy spy(audioOutput, SIGNAL(audioRoleChanged(QAudio::Role)));
- audioOutput->setAudioRole(QAudio::MusicRole);
- QCOMPARE(audioOutput->audioRole(), QAudio::UnknownRole);
- QCOMPARE(spy.count(), 0);
- }
-
- {
- mockPlayer->reset();
- mockAudioOutput->hasAudioRole = true;
- QSignalSpy spy(audioOutput, SIGNAL(audioRoleChanged(QAudio::Role)));
-
- QCOMPARE(audioOutput->audioRole(), QAudio::UnknownRole);
- QVERIFY(!audioOutput->supportedAudioRoles().isEmpty());
-
- audioOutput->setAudioRole(QAudio::MusicRole);
- QCOMPARE(audioOutput->audioRole(), QAudio::MusicRole);
- QCOMPARE(spy.count(), 1);
- QCOMPARE(qvariant_cast<QAudio::Role>(spy.last().value(0)), QAudio::MusicRole);
-
- spy.clear();
-
- audioOutput->setProperty("audioRole", QVariant::fromValue(QAudio::AlarmRole));
- QCOMPARE(qvariant_cast<QAudio::Role>(audioOutput->property("audioRole")), QAudio::AlarmRole);
- QCOMPARE(spy.count(), 1);
- QCOMPARE(qvariant_cast<QAudio::Role>(spy.last().value(0)), QAudio::AlarmRole);
- }
-}
-
QTEST_GUILESS_MAIN(tst_QMediaPlayer)
#include "tst_qmediaplayer.moc"
diff --git a/tests/auto/unit/multimedia/qmediarecorder/tst_qmediarecorder.cpp b/tests/auto/unit/multimedia/qmediarecorder/tst_qmediarecorder.cpp
index ba80f9951..5529f470f 100644
--- a/tests/auto/unit/multimedia/qmediarecorder/tst_qmediarecorder.cpp
+++ b/tests/auto/unit/multimedia/qmediarecorder/tst_qmediarecorder.cpp
@@ -64,20 +64,11 @@ private slots:
void metaData();
- void testAudioSettingsCopyConstructor();
- void testAudioSettingsOperatorNotEqual();
- void testAudioSettingsOperatorEqual();
- void testAudioSettingsOperatorAssign();
-
void testIsAvailable();
void testEnum();
void testVideoSettingsQuality();
void testVideoSettingsEncodingMode();
- void testVideoSettingsCopyConstructor();
- void testVideoSettingsOperatorAssignment();
- void testVideoSettingsOperatorNotEqual();
- void testVideoSettingsOperatorComparison();
private:
QMockIntegration *mockIntegration = nullptr;
@@ -144,19 +135,17 @@ void tst_QMediaRecorder::testNullControls()
QCOMPARE(recorder.outputLocation(), QUrl());
QCOMPARE(recorder.actualLocation(), QUrl());
- QMediaEncoderSettings settings;
- settings.setFileFormat(QMediaFormat::MPEG4);
- settings.setAudioCodec(QMediaFormat::AudioCodec::AAC);
- settings.setQuality(QMediaEncoderSettings::LowQuality);
-
- settings.setVideoCodec(QMediaFormat::VideoCodec::VP9);
- settings.setVideoResolution(640, 480);
+ QMediaFormat format;
+ format.setFileFormat(QMediaFormat::MPEG4);
+ format.setAudioCodec(QMediaFormat::AudioCodec::AAC);
+ format.setVideoCodec(QMediaFormat::VideoCodec::VP9);
+ recorder.setMediaFormat(format);
+ recorder.setQuality(QMediaRecorder::LowQuality);
+ recorder.setVideoResolution(640, 480);
- recorder.setEncoderSettings(settings);
-
- QCOMPARE(recorder.encoderSettings().audioCodec(), QMediaFormat::AudioCodec::AAC);
- QCOMPARE(recorder.encoderSettings().videoCodec(), QMediaFormat::VideoCodec::VP9);
- QCOMPARE(recorder.encoderSettings().fileFormat(), QMediaFormat::MPEG4);
+ QCOMPARE(recorder.mediaFormat().audioCodec(), QMediaFormat::AudioCodec::AAC);
+ QCOMPARE(recorder.mediaFormat().videoCodec(), QMediaFormat::VideoCodec::VP9);
+ QCOMPARE(recorder.mediaFormat().fileFormat(), QMediaFormat::MPEG4);
QSignalSpy spy(&recorder, SIGNAL(recorderStateChanged(RecorderState)));
@@ -286,252 +275,97 @@ void tst_QMediaRecorder::testRecord()
void tst_QMediaRecorder::testEncodingSettings()
{
- QMediaEncoderSettings settings = encoder->encoderSettings();
- QCOMPARE(settings.fileFormat(), QMediaFormat::UnspecifiedFormat);
- QCOMPARE(settings.audioCodec(), QMediaFormat::AudioCodec::Unspecified);
- QCOMPARE(settings.videoCodec(), QMediaFormat::VideoCodec::Unspecified);
- QCOMPARE(settings.quality(), QMediaEncoderSettings::NormalQuality);
- QCOMPARE(settings.encodingMode(), QMediaEncoderSettings::ConstantQualityEncoding);
-
- settings.setAudioCodec(QMediaFormat::AudioCodec::MP3);
- settings.setAudioSampleRate(44100);
- settings.setAudioBitRate(256*1024);
- settings.setQuality(QMediaEncoderSettings::HighQuality);
- settings.setEncodingMode(QMediaEncoderSettings::AverageBitRateEncoding);
-
- settings.setVideoCodec(QMediaFormat::VideoCodec::H264);
- settings.setVideoBitRate(800);
- settings.setVideoFrameRate(24*1024);
- settings.setVideoResolution(QSize(800,600));
-
- encoder->setEncoderSettings(settings);
-
- QCOMPARE(encoder->encoderSettings(), settings);
+ QMediaFormat format = encoder->mediaFormat();
+ QCOMPARE(format.fileFormat(), QMediaFormat::UnspecifiedFormat);
+ QCOMPARE(format.audioCodec(), QMediaFormat::AudioCodec::Unspecified);
+ QCOMPARE(format.videoCodec(), QMediaFormat::VideoCodec::Unspecified);
+ QCOMPARE(encoder->quality(), QMediaRecorder::NormalQuality);
+ QCOMPARE(encoder->encodingMode(), QMediaRecorder::ConstantQualityEncoding);
+
+ format.setAudioCodec(QMediaFormat::AudioCodec::MP3);
+ encoder->setAudioSampleRate(44100);
+ encoder->setAudioBitRate(256*1024);
+ encoder->setQuality(QMediaRecorder::HighQuality);
+ encoder->setEncodingMode(QMediaRecorder::AverageBitRateEncoding);
+
+ format.setVideoCodec(QMediaFormat::VideoCodec::H264);
+ encoder->setVideoBitRate(800);
+ encoder->setVideoFrameRate(24*1024);
+ encoder->setVideoResolution(QSize(800,600));
+ encoder->setMediaFormat(format);
+
+ QCOMPARE(encoder->mediaFormat().audioCodec(), QMediaFormat::AudioCodec::MP3);
+ QCOMPARE(encoder->audioSampleRate(), 44100);
+ QCOMPARE(encoder->audioBitRate(), 256*1024);
+ QCOMPARE(encoder->quality(), QMediaRecorder::HighQuality);
+ QCOMPARE(encoder->encodingMode(), QMediaRecorder::AverageBitRateEncoding);
+
+ QCOMPARE(encoder->mediaFormat().videoCodec(), QMediaFormat::VideoCodec::H264);
+ QCOMPARE(encoder->videoBitRate(), 800);
+ QCOMPARE(encoder->videoFrameRate(), 24*1024);
+ QCOMPARE(encoder->videoResolution(), QSize(800,600));
}
void tst_QMediaRecorder::testAudioSettings()
{
- QMediaEncoderSettings settings;
- QVERIFY(settings == QMediaEncoderSettings());
-
- QCOMPARE(settings.fileFormat(), QMediaFormat::UnspecifiedFormat);
- QCOMPARE(settings.audioBitRate(), -1);
- QCOMPARE(settings.quality(), QMediaEncoderSettings::NormalQuality);
- QCOMPARE(settings.audioSampleRate(), -1);
-
- settings.setFileFormat(QMediaFormat::AAC);
- QCOMPARE(settings.fileFormat(), QMediaFormat::AAC);
- QVERIFY(settings != QMediaEncoderSettings());
-
- settings = QMediaEncoderSettings();
- QCOMPARE(settings.audioBitRate(), -1);
- settings.setAudioBitRate(128000);
- QCOMPARE(settings.audioBitRate(), 128000);
-
- settings = QMediaEncoderSettings();
- QCOMPARE(settings.quality(), QMediaEncoderSettings::NormalQuality);
- settings.setQuality(QMediaEncoderSettings::HighQuality);
- QCOMPARE(settings.quality(), QMediaEncoderSettings::HighQuality);
-
- settings = QMediaEncoderSettings();
- QCOMPARE(settings.audioSampleRate(), -1);
- settings.setAudioSampleRate(44100);
- QCOMPARE(settings.audioSampleRate(), 44100);
-
- settings = QMediaEncoderSettings();
- QCOMPARE(settings.audioChannelCount(), -1);
- settings.setAudioChannelCount(2);
- QCOMPARE(settings.audioChannelCount(), 2);
-
- settings = QMediaEncoderSettings();
-
- {
- QMediaEncoderSettings settings1;
- QMediaEncoderSettings settings2;
- QCOMPARE(settings2, settings1);
+ QMediaRecorder recorder;
- settings2 = settings1;
- QCOMPARE(settings2, settings1);
+ QCOMPARE(recorder.mediaFormat(), QMediaFormat());
+ QCOMPARE(recorder.mediaFormat().fileFormat(), QMediaFormat::UnspecifiedFormat);
+ QCOMPARE(recorder.audioBitRate(), -1);
+ QCOMPARE(recorder.quality(), QMediaRecorder::NormalQuality);
+ QCOMPARE(recorder.audioSampleRate(), -1);
- settings1.setQuality(QMediaEncoderSettings::HighQuality);
+ QMediaFormat format;
+ format.setFileFormat(QMediaFormat::AAC);
+ recorder.setMediaFormat(format);
+ QCOMPARE(recorder.mediaFormat(), format);
- QVERIFY(settings1 != settings2);
- }
+ recorder.setAudioBitRate(128000);
+ QCOMPARE(recorder.audioBitRate(), 128000);
- {
- QMediaEncoderSettings settings1;
- QMediaEncoderSettings settings2(settings1);
- QCOMPARE(settings2, settings1);
+ recorder.setQuality(QMediaRecorder::HighQuality);
+ QCOMPARE(recorder.quality(), QMediaRecorder::HighQuality);
- settings2 = settings1;
- QCOMPARE(settings2, settings1);
+ recorder.setAudioSampleRate(44100);
+ QCOMPARE(recorder.audioSampleRate(), 44100);
- settings1.setQuality(QMediaEncoderSettings::HighQuality);
-
- QVERIFY(settings1 != settings2);
- }
-
- QMediaEncoderSettings settings1;
- settings1.setAudioBitRate(1);
- QMediaEncoderSettings settings2;
- settings2.setAudioBitRate(1);
- QVERIFY(settings1 == settings2);
- settings2.setAudioBitRate(2);
- QVERIFY(settings1 != settings2);
-
- settings1 = QMediaEncoderSettings();
- settings1.setAudioChannelCount(1);
- settings2 = QMediaEncoderSettings();
- settings2.setAudioChannelCount(1);
- QVERIFY(settings1 == settings2);
- settings2.setAudioChannelCount(2);
- QVERIFY(settings1 != settings2);
-
- settings1 = QMediaEncoderSettings();
- settings1.setAudioCodec(QMediaFormat::AudioCodec::MP3);
- settings2 = QMediaEncoderSettings();
- settings2.setAudioCodec(QMediaFormat::AudioCodec::MP3);
- QVERIFY(settings1 == settings2);
- settings2.setAudioCodec(QMediaFormat::AudioCodec::FLAC);
- QVERIFY(settings1 != settings2);
-
- settings1 = QMediaEncoderSettings();
- settings1.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding);
- settings2 = QMediaEncoderSettings();
- settings2.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding);
- QVERIFY(settings1 == settings2);
- settings2.setEncodingMode(QMediaEncoderSettings::AverageBitRateEncoding);
- QVERIFY(settings1 != settings2);
-
- settings1 = QMediaEncoderSettings();
- settings1.setQuality(QMediaEncoderSettings::NormalQuality);
- settings2 = QMediaEncoderSettings();
- settings2.setQuality(QMediaEncoderSettings::NormalQuality);
- QVERIFY(settings1 == settings2);
- settings2.setQuality(QMediaEncoderSettings::LowQuality);
- QVERIFY(settings1 != settings2);
-
- settings1 = QMediaEncoderSettings();
- settings1.setAudioSampleRate(1);
- settings2 = QMediaEncoderSettings();
- settings2.setAudioSampleRate(1);
- QVERIFY(settings1 == settings2);
- settings2.setAudioSampleRate(2);
- QVERIFY(settings1 != settings2);
+ QCOMPARE(recorder.audioChannelCount(), -1);
+ recorder.setAudioChannelCount(2);
+ QCOMPARE(recorder.audioChannelCount(), 2);
}
void tst_QMediaRecorder::testVideoSettings()
{
- QMediaEncoderSettings settings;
- QVERIFY(settings == QMediaEncoderSettings());
-
- QCOMPARE(settings.videoCodec(), QMediaFormat::VideoCodec::Unspecified);
- settings.setVideoCodec(QMediaFormat::VideoCodec::H265);
- QCOMPARE(settings.videoCodec(), QMediaFormat::VideoCodec::H265);
- QVERIFY(settings != QMediaEncoderSettings());
-
- settings = QMediaEncoderSettings();
- QCOMPARE(settings.videoBitRate(), -1);
- settings.setVideoBitRate(128000);
- QCOMPARE(settings.videoBitRate(), 128000);
-
- settings = QMediaEncoderSettings();
- QCOMPARE(settings.quality(), QMediaEncoderSettings::NormalQuality);
- settings.setQuality(QMediaEncoderSettings::HighQuality);
- QCOMPARE(settings.quality(), QMediaEncoderSettings::HighQuality);
-
- settings = QMediaEncoderSettings();
- QCOMPARE(settings.videoFrameRate(), -1);
- settings.setVideoFrameRate(60);
- QVERIFY(qFuzzyCompare(settings.videoFrameRate(), qreal(60)));
- settings.setVideoFrameRate(24.0);
- QVERIFY(qFuzzyCompare(settings.videoFrameRate(), qreal(24.0)));
-
- settings = QMediaEncoderSettings();
- QCOMPARE(settings.videoResolution(), QSize());
- settings.setVideoResolution(QSize(320,240));
- QCOMPARE(settings.videoResolution(), QSize(320,240));
- settings.setVideoResolution(800,600);
- QCOMPARE(settings.videoResolution(), QSize(800,600));
-
- settings = QMediaEncoderSettings();
- QCOMPARE(settings.videoCodec(), QMediaFormat::VideoCodec::Unspecified);
- QCOMPARE(settings.videoBitRate(), -1);
- QCOMPARE(settings.quality(), QMediaEncoderSettings::NormalQuality);
- QCOMPARE(settings.videoFrameRate(), -1);
- QCOMPARE(settings.videoResolution(), QSize());
-
- {
- QMediaEncoderSettings settings1;
- QMediaEncoderSettings settings2;
- QCOMPARE(settings2, settings1);
-
- settings2 = settings1;
- QCOMPARE(settings2, settings1);
-
- settings1.setQuality(QMediaEncoderSettings::HighQuality);
- QVERIFY(settings1 != settings2);
- }
-
- {
- QMediaEncoderSettings settings1;
- QMediaEncoderSettings settings2(settings1);
- QCOMPARE(settings2, settings1);
-
- settings2 = settings1;
- QCOMPARE(settings2, settings1);
-
- settings1.setQuality(QMediaEncoderSettings::HighQuality);
- QVERIFY(settings1 != settings2);
- }
+ QMediaRecorder recorder;
- QMediaEncoderSettings settings1;
- settings1.setVideoBitRate(1);
- QMediaEncoderSettings settings2;
- settings2.setVideoBitRate(1);
- QVERIFY(settings1 == settings2);
- settings2.setVideoBitRate(2);
- QVERIFY(settings1 != settings2);
-
- settings1 = QMediaEncoderSettings();
- settings1.setVideoResolution(800,600);
- settings2 = QMediaEncoderSettings();
- settings2.setVideoResolution(QSize(800,600));
- QVERIFY(settings1 == settings2);
- settings2.setVideoResolution(QSize(400,300));
- QVERIFY(settings1 != settings2);
-
- settings1 = QMediaEncoderSettings();
- settings1.setVideoCodec(QMediaFormat::VideoCodec::H265);
- settings2 = QMediaEncoderSettings();
- settings2.setVideoCodec(QMediaFormat::VideoCodec::H265);
- QVERIFY(settings1 == settings2);
- settings2.setVideoCodec(QMediaFormat::VideoCodec::AV1);
- QVERIFY(settings1 != settings2);
-
- settings1 = QMediaEncoderSettings();
- settings1.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding);
- settings2 = QMediaEncoderSettings();
- settings2.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding);
- QVERIFY(settings1 == settings2);
- settings2.setEncodingMode(QMediaEncoderSettings::AverageBitRateEncoding);
- QVERIFY(settings1 != settings2);
-
- settings1 = QMediaEncoderSettings();
- settings1.setQuality(QMediaEncoderSettings::NormalQuality);
- settings2 = QMediaEncoderSettings();
- settings2.setQuality(QMediaEncoderSettings::NormalQuality);
- QVERIFY(settings1 == settings2);
- settings2.setQuality(QMediaEncoderSettings::LowQuality);
- QVERIFY(settings1 != settings2);
-
- settings1 = QMediaEncoderSettings();
- settings1.setVideoFrameRate(1);
- settings2 = QMediaEncoderSettings();
- settings2.setVideoFrameRate(1);
- QVERIFY(settings1 == settings2);
- settings2.setVideoFrameRate(2);
- QVERIFY(settings1 != settings2);
+ QCOMPARE(recorder.mediaFormat(), QMediaFormat());
+ QCOMPARE(recorder.mediaFormat().videoCodec(), QMediaFormat::VideoCodec::Unspecified);
+ QMediaFormat format;
+ format.setVideoCodec(QMediaFormat::VideoCodec::H265);
+ recorder.setMediaFormat(format);
+ QCOMPARE(recorder.mediaFormat(), format);
+ QCOMPARE(recorder.mediaFormat().videoCodec(), QMediaFormat::VideoCodec::H265);
+
+ QCOMPARE(recorder.videoBitRate(), -1);
+ recorder.setVideoBitRate(128000);
+ QCOMPARE(recorder.videoBitRate(), 128000);
+
+ QCOMPARE(recorder.quality(), QMediaRecorder::NormalQuality);
+ recorder.setQuality(QMediaRecorder::HighQuality);
+ QCOMPARE(recorder.quality(), QMediaRecorder::HighQuality);
+
+ QCOMPARE(recorder.videoFrameRate(), -1);
+ recorder.setVideoFrameRate(60);
+ QVERIFY(qFuzzyCompare(recorder.videoFrameRate(), qreal(60)));
+ recorder.setVideoFrameRate(24.0);
+ QVERIFY(qFuzzyCompare(recorder.videoFrameRate(), qreal(24.0)));
+
+ QCOMPARE(recorder.videoResolution(), QSize());
+ recorder.setVideoResolution(QSize(320,240));
+ QCOMPARE(recorder.videoResolution(), QSize(320,240));
+ recorder.setVideoResolution(800,600);
+ QCOMPARE(recorder.videoResolution(), QSize(800,600));
}
void tst_QMediaRecorder::testSettingsApplied()
@@ -546,16 +380,13 @@ void tst_QMediaRecorder::testSettingsApplied()
QCOMPARE(mock->m_settingAppliedCount, 0);
QTRY_COMPARE(mock->m_settingAppliedCount, 1);
- QMediaEncoderSettings settings;
- settings.setVideoResolution(640,480);
- encoder.setEncoderSettings(settings);
+ encoder.setVideoResolution(640,480);
QCOMPARE(mock->m_settingAppliedCount, 1);
QTRY_COMPARE(mock->m_settingAppliedCount, 2);
//encoder settings are applied before recording if changed
- settings.setQuality(QMediaEncoderSettings::VeryHighQuality);
- encoder.setEncoderSettings(settings);
+ encoder.setQuality(QMediaRecorder::VeryHighQuality);
QCOMPARE(mock->m_settingAppliedCount, 2);
encoder.record();
@@ -581,122 +412,6 @@ void tst_QMediaRecorder::metaData()
QCOMPARE(recorder.metaData().value(QMediaMetaData::Author).toString(), QString::fromUtf8("John Doe"));
}
-void tst_QMediaRecorder::testAudioSettingsCopyConstructor()
-{
- /* create an object for AudioEncodersettings */
- QMediaEncoderSettings audiosettings;
-
- /* setting the desired properties for the AudioEncoder */
- audiosettings.setAudioBitRate(128*1000);
- audiosettings.setAudioChannelCount(4);
- audiosettings.setAudioCodec(QMediaFormat::AudioCodec::ALAC);
- audiosettings.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding);
- audiosettings.setQuality(QMediaEncoderSettings::LowQuality);
- audiosettings.setAudioSampleRate(44100);
-
- /* Copy constructor */
- QMediaEncoderSettings other(audiosettings);
-
- /* Verifying whether data is copied properly or not */
- QVERIFY(other.audioBitRate() == audiosettings.audioBitRate());
- QVERIFY(other.audioSampleRate() == audiosettings.audioSampleRate());
- QVERIFY(other.audioChannelCount() == audiosettings.audioChannelCount());
- QCOMPARE(other.audioCodec(), audiosettings.audioCodec());
- QVERIFY(other.encodingMode() == audiosettings.encodingMode());
- QVERIFY(other.quality() == audiosettings.quality());
-}
-
-void tst_QMediaRecorder::testAudioSettingsOperatorNotEqual()
-{
- /* create an object for AudioEncodersettings */
- QMediaEncoderSettings audiosettings1;
- QMediaEncoderSettings audiosettings2;
-
- /* setting the desired properties to for the AudioEncoder */
- audiosettings1.setAudioBitRate(128*1000);
- audiosettings1.setAudioChannelCount(4);
- audiosettings1.setAudioCodec(QMediaFormat::AudioCodec::FLAC);
- audiosettings1.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding);
- audiosettings1.setQuality(QMediaEncoderSettings::LowQuality);
- audiosettings1.setAudioSampleRate(44100);
-
- /* setting the desired properties for the AudioEncoder */
- audiosettings2.setAudioBitRate(128*1000);
- audiosettings2.setAudioChannelCount(4);
- audiosettings2.setAudioCodec(QMediaFormat::AudioCodec::FLAC);
- audiosettings2.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding);
- audiosettings2.setQuality(QMediaEncoderSettings::LowQuality);
- audiosettings2.setAudioSampleRate(44100);
-
- /* verify the both are equal or not */
- QVERIFY(audiosettings1 == audiosettings2);
- QVERIFY(!(audiosettings1 != audiosettings2));
-
- /* Modify the settings value for one object */
- audiosettings2.setAudioBitRate(64*1000);
- audiosettings2.setEncodingMode(QMediaEncoderSettings::ConstantQualityEncoding);
-
- /* verify the not equal opertor */
- QVERIFY(audiosettings1 != audiosettings2);
-
- QVERIFY(audiosettings2.audioBitRate() != audiosettings1.audioBitRate());
- QVERIFY(audiosettings2.encodingMode() != audiosettings1.encodingMode());
-}
-
-void tst_QMediaRecorder::testAudioSettingsOperatorEqual()
-{
- /* create an object for AudioEncodersettings */
- QMediaEncoderSettings audiosettings1;
-
- /* setting the desired properties to for the AudioEncoder */
- audiosettings1.setAudioBitRate(128*1000);
- audiosettings1.setAudioChannelCount(4);
- audiosettings1.setAudioCodec(QMediaFormat::AudioCodec::FLAC);
- audiosettings1.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding);
- audiosettings1.setQuality(QMediaEncoderSettings::LowQuality);
- audiosettings1.setAudioSampleRate(44100);
-
- QMediaEncoderSettings audiosettings2;
-
- /* setting the desired properties for the AudioEncoder */
- audiosettings2.setAudioBitRate(128*1000);
- audiosettings2.setAudioChannelCount(4);
- audiosettings2.setAudioCodec(QMediaFormat::AudioCodec::FLAC);
- audiosettings2.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding);
- audiosettings2.setQuality(QMediaEncoderSettings::LowQuality);
- audiosettings2.setAudioSampleRate(44100);
-
- /* verify both the values are same or not */
- QVERIFY(audiosettings1 == audiosettings2);
- audiosettings2.setAudioChannelCount(2);
- QVERIFY(audiosettings1 != audiosettings2);
-}
-
-void tst_QMediaRecorder::testAudioSettingsOperatorAssign()
-{
-
- /* create an object for AudioEncodersettings */
- QMediaEncoderSettings audiosettings1;
-
- /* setting the desired properties for the AudioEncoder */
- audiosettings1.setAudioBitRate(128*1000);
- audiosettings1.setAudioChannelCount(4);
- audiosettings1.setAudioCodec(QMediaFormat::AudioCodec::FLAC);
- audiosettings1.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding);
- audiosettings1.setQuality(QMediaEncoderSettings::LowQuality);
- audiosettings1.setAudioSampleRate(44100);
-
- QMediaEncoderSettings audiosettings2;
- audiosettings2 = audiosettings1;
- /* Verifying whether data is copied properly or not */
- QVERIFY(audiosettings2.audioBitRate() == audiosettings1.audioBitRate());
- QVERIFY(audiosettings2.audioSampleRate() == audiosettings1.audioSampleRate());
- QVERIFY(audiosettings2.audioChannelCount() == audiosettings1.audioChannelCount());
- QCOMPARE(audiosettings2.audioCodec(), audiosettings1.audioCodec());
- QVERIFY(audiosettings2.encodingMode() == audiosettings1.encodingMode());
- QVERIFY(audiosettings2.quality() == audiosettings1.quality());
-}
-
void tst_QMediaRecorder::testIsAvailable()
{
{
@@ -731,244 +446,39 @@ void tst_QMediaRecorder::testEnum()
QCOMPARE(spy.last()[0].value<QMediaRecorder::Error>(), QMediaRecorder::ResourceError);
}
-/* Test the QMediaEncoderSettings quality API*/
void tst_QMediaRecorder::testVideoSettingsQuality()
{
- /* Create the instance*/
- QMediaEncoderSettings settings;
- QVERIFY(settings == QMediaEncoderSettings());
-
+ QMediaRecorder recorder;
/* Verify the default value is intialised correctly*/
- QCOMPARE(settings.quality(), QMediaEncoderSettings::NormalQuality);
+ QCOMPARE(recorder.quality(), QMediaRecorder::NormalQuality);
/* Set all types of Quality parameter and Verify if it is set correctly*/
- settings.setQuality(QMediaEncoderSettings::HighQuality);
- QCOMPARE(settings.quality(), QMediaEncoderSettings::HighQuality);
+ recorder.setQuality(QMediaRecorder::HighQuality);
+ QCOMPARE(recorder.quality(), QMediaRecorder::HighQuality);
- settings.setQuality(QMediaEncoderSettings::VeryLowQuality);
- QCOMPARE(settings.quality(), QMediaEncoderSettings::VeryLowQuality);
+ recorder.setQuality(QMediaRecorder::VeryLowQuality);
+ QCOMPARE(recorder.quality(), QMediaRecorder::VeryLowQuality);
- settings.setQuality(QMediaEncoderSettings::LowQuality);
- QCOMPARE(settings.quality(), QMediaEncoderSettings::LowQuality);
+ recorder.setQuality(QMediaRecorder::LowQuality);
+ QCOMPARE(recorder.quality(), QMediaRecorder::LowQuality);
- settings.setQuality(QMediaEncoderSettings::VeryHighQuality);
- QCOMPARE(settings.quality(), QMediaEncoderSettings::VeryHighQuality);
+ recorder.setQuality(QMediaRecorder::VeryHighQuality);
+ QCOMPARE(recorder.quality(), QMediaRecorder::VeryHighQuality);
}
-/* Test QMediaEncoderSettings encodingMode */
void tst_QMediaRecorder::testVideoSettingsEncodingMode()
{
- /* Create the instance*/
- QMediaEncoderSettings settings;
- QVERIFY(settings == QMediaEncoderSettings());
+ QMediaRecorder recorder;
/* Verify the default values are initialised correctly*/
- QCOMPARE(settings.encodingMode(), QMediaEncoderSettings::ConstantQualityEncoding);
+ QCOMPARE(recorder.encodingMode(), QMediaRecorder::ConstantQualityEncoding);
/* Set each type of encoding mode and Verify if it is set correctly*/
- settings.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding);
- QCOMPARE(settings.encodingMode(),QMediaEncoderSettings::ConstantBitRateEncoding);
-
- settings.setEncodingMode(QMediaEncoderSettings::AverageBitRateEncoding);
- QCOMPARE(settings.encodingMode(), QMediaEncoderSettings::AverageBitRateEncoding);
-}
-
-/* Test QMediaEncoderSettings copy constructor */
-void tst_QMediaRecorder::testVideoSettingsCopyConstructor()
-{
- /* Create the instance and initialise it*/
- QMediaEncoderSettings settings1;
- settings1.setVideoCodec(QMediaFormat::VideoCodec::Theora);
- settings1.setVideoBitRate(128000);
- settings1.setQuality(QMediaEncoderSettings::HighQuality);
- settings1.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding);
- settings1.setVideoFrameRate(60.);
- settings1.setVideoResolution(QSize(320,240));
-
- /* Create another instance with instance1 as argument*/
- QMediaEncoderSettings settings2(settings1);
-
- /* Verify if all the parameters are copied correctly*/
- QCOMPARE(settings2 != settings1, false);
- QCOMPARE(settings2.videoCodec(), QMediaFormat::VideoCodec::Theora);
- QCOMPARE(settings2.videoBitRate(), 128000);
- QCOMPARE(settings2.encodingMode(), QMediaEncoderSettings::ConstantBitRateEncoding);
- QVERIFY(qFuzzyCompare(settings2.videoFrameRate(), qreal(60.)));
- QCOMPARE(settings2.videoResolution(), QSize(320,240));
- QCOMPARE(settings2.quality(), QMediaEncoderSettings::HighQuality);
-
- /* Verify both the instances are equal*/
- QCOMPARE(settings2, settings1);
-}
+ recorder.setEncodingMode(QMediaRecorder::ConstantBitRateEncoding);
+ QCOMPARE(recorder.encodingMode(),QMediaRecorder::ConstantBitRateEncoding);
-/* Test QMediaEncoderSettings Overloaded Operator assignment*/
-void tst_QMediaRecorder::testVideoSettingsOperatorAssignment()
-{
- /* Create two instances.*/
- QMediaEncoderSettings settings1;
- QMediaEncoderSettings settings2;
- QCOMPARE(settings2, settings1);
-
- /* Initialize all the parameters */
- settings1.setVideoCodec(QMediaFormat::VideoCodec::Theora);
- settings1.setVideoBitRate(128000);
- settings1.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding);
- settings1.setVideoFrameRate(60.);
- settings1.setVideoResolution(QSize(320,240));
- settings1.setQuality(QMediaEncoderSettings::HighQuality);
- /* Assign one object to other*/
- settings2 = settings1;
-
- /* Verify all the parameters are copied correctly*/
- QCOMPARE(settings2, settings1);
- QCOMPARE(settings2.videoCodec(), QMediaFormat::VideoCodec::Theora);
- QCOMPARE(settings2.videoBitRate(), 128000);
- QCOMPARE(settings2.encodingMode(), QMediaEncoderSettings::ConstantBitRateEncoding);
- QVERIFY(qFuzzyCompare(settings2.videoFrameRate(), qreal(60.)));
- QCOMPARE(settings2.videoResolution(), QSize(320,240));
- QCOMPARE(settings2.quality(), QMediaEncoderSettings::HighQuality);
- QCOMPARE(settings2, settings1);
-}
-
-/* Test QMediaEncoderSettings Overloaded OperatorNotEqual*/
-void tst_QMediaRecorder::testVideoSettingsOperatorNotEqual()
-{
- /* Create the instance and set the bit rate and Verify objects with OperatorNotEqual*/
- QMediaEncoderSettings settings1;
- settings1.setVideoBitRate(1);
- QMediaEncoderSettings settings2;
- settings2.setVideoBitRate(1);
- /* OperatorNotEqual returns false when both objects are equal*/
- QCOMPARE(settings1 != settings2, false);
- settings2.setVideoBitRate(2);
- /* OperatorNotEqual returns true when both objects are not equal*/
- QVERIFY(settings1 != settings2);
-
- /* Verify Resolution with not equal operator*/
- settings1 = QMediaEncoderSettings();
- settings1.setVideoResolution(800,600);
- settings2 = QMediaEncoderSettings();
- settings2.setVideoResolution(QSize(800,600));
- /* OperatorNotEqual returns false when both objects are equal*/
- QCOMPARE(settings1 != settings2, false);
- settings2.setVideoResolution(QSize(400,300));
- /* OperatorNotEqual returns true when both objects are not equal*/
- QVERIFY(settings1 != settings2);
-
- /* Verify Codec with not equal operator*/
- settings1 = QMediaEncoderSettings();
- settings1.setVideoCodec(QMediaFormat::VideoCodec::Theora);
- settings2 = QMediaEncoderSettings();
- settings2.setVideoCodec(QMediaFormat::VideoCodec::Theora);
- /* OperatorNotEqual returns false when both objects are equal*/
- QCOMPARE(settings1 != settings2, false);
- settings2.setVideoCodec(QMediaFormat::VideoCodec::AV1);
- /* OperatorNotEqual returns true when both objects are not equal*/
- QVERIFY(settings1 != settings2);
-
- /* Verify EncodingMode with not equal operator*/
- settings1 = QMediaEncoderSettings();
- settings1.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding);
- settings2 = QMediaEncoderSettings();
- settings2.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding);
- /* OperatorNotEqual returns false when both objects are equal*/
- QCOMPARE(settings1 != settings2, false);
- settings2.setEncodingMode(QMediaEncoderSettings::AverageBitRateEncoding);
- /* OperatorNotEqual returns true when both objects are not equal*/
- QVERIFY(settings1 != settings2);
-
- /* Verify Quality with not equal operator*/
- settings1 = QMediaEncoderSettings();
- settings1.setQuality(QMediaEncoderSettings::NormalQuality);
- settings2 = QMediaEncoderSettings();
- settings2.setQuality(QMediaEncoderSettings::NormalQuality);
- /* OperatorNotEqual returns false when both objects are equal*/
- QCOMPARE(settings1 != settings2, false);
- settings2.setQuality(QMediaEncoderSettings::LowQuality);
- /* OperatorNotEqual returns true when both objects are not equal*/
- QVERIFY(settings1 != settings2);
-
- /* Verify FrameRate with not equal operator*/
- settings1 = QMediaEncoderSettings();
- settings1.setVideoFrameRate(1);
- settings2 = QMediaEncoderSettings();
- settings2.setVideoFrameRate(1);
- /* OperatorNotEqual returns false when both objects are equal*/
- QCOMPARE(settings1 != settings2, false);
- settings2.setVideoFrameRate(2);
- /* OperatorNotEqual returns true when both objects are not equal*/
- QVERIFY(settings1 != settings2);
-}
-
-/* Test QMediaEncoderSettings Overloaded comparison operator*/
-void tst_QMediaRecorder::testVideoSettingsOperatorComparison()
-{
- /* Create the instance and set the bit rate and Verify objects with comparison operator*/
- QMediaEncoderSettings settings1;
- settings1.setVideoBitRate(1);
- QMediaEncoderSettings settings2;
- settings2.setVideoBitRate(1);
-
- /* Comparison operator returns true when both objects are equal*/
- QVERIFY(settings1 == settings2);
- settings2.setVideoBitRate(2);
- /* Comparison operator returns false when both objects are not equal*/
- QCOMPARE(settings1 == settings2, false);
-
- /* Verify resolution with comparison operator*/
- settings1 = QMediaEncoderSettings();
- settings1.setVideoResolution(800,600);
- settings2 = QMediaEncoderSettings();
- settings2.setVideoResolution(QSize(800,600));
- /* Comparison operator returns true when both objects are equal*/
- QVERIFY(settings1 == settings2);
- settings2.setVideoResolution(QSize(400,300));
- /* Comparison operator returns false when both objects are not equal*/
- QCOMPARE(settings1 == settings2, false);
-
- /* Verify Codec with comparison operator*/
- settings1 = QMediaEncoderSettings();
- settings1.setVideoCodec(QMediaFormat::VideoCodec::Theora);
- settings2 = QMediaEncoderSettings();
- settings2.setVideoCodec(QMediaFormat::VideoCodec::Theora);
- /* Comparison operator returns true when both objects are equal*/
- QVERIFY(settings1 == settings2);
- settings2.setVideoCodec(QMediaFormat::VideoCodec::AV1);
- /* Comparison operator returns false when both objects are not equal*/
- QCOMPARE(settings1 == settings2, false);
-
- /* Verify EncodingMode with comparison operator*/
- settings1 = QMediaEncoderSettings();
- settings1.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding);
- settings2 = QMediaEncoderSettings();
- settings2.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding);
- /* Comparison operator returns true when both objects are equal*/
- QVERIFY(settings1 == settings2);
- settings2.setEncodingMode(QMediaEncoderSettings::AverageBitRateEncoding);
- /* Comparison operator returns false when both objects are not equal*/
- QCOMPARE(settings1 == settings2, false);
-
- /* Verify Quality with comparison operator*/
- settings1 = QMediaEncoderSettings();
- settings1.setQuality(QMediaEncoderSettings::NormalQuality);
- settings2 = QMediaEncoderSettings();
- settings2.setQuality(QMediaEncoderSettings::NormalQuality);
- /* Comparison operator returns true when both objects are equal*/
- QVERIFY(settings1 == settings2);
- settings2.setQuality(QMediaEncoderSettings::LowQuality);
- /* Comparison operator returns false when both objects are not equal*/
- QCOMPARE(settings1 == settings2, false);
-
- /* Verify FrameRate with comparison operator*/
- settings1 = QMediaEncoderSettings();
- settings1.setVideoFrameRate(1);
- settings2 = QMediaEncoderSettings();
- settings2.setVideoFrameRate(1);
- /* Comparison operator returns true when both objects are equal*/
- QVERIFY(settings1 == settings2);
- settings2.setVideoFrameRate(2);
- /* Comparison operator returns false when both objects are not equal*/
- QCOMPARE(settings1 == settings2, false);
+ recorder.setEncodingMode(QMediaRecorder::AverageBitRateEncoding);
+ QCOMPARE(recorder.encodingMode(), QMediaRecorder::AverageBitRateEncoding);
}
QTEST_GUILESS_MAIN(tst_QMediaRecorder)