diff options
Diffstat (limited to 'src/multimedia/platform')
28 files changed, 148 insertions, 251 deletions
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; |