diff options
author | Andrew den Exter <andrew.den.exter@jollamobile.com> | 2014-06-30 05:59:10 +0000 |
---|---|---|
committer | Yoann Lopes <yoann.lopes@theqtcompany.com> | 2014-11-28 16:41:30 +0100 |
commit | 4bdf1561f46e85b14665b38804410340ffe1820b (patch) | |
tree | e20a14233ff504ca78fdbf700e182ca1b85cee1d | |
parent | 25ad679c254766a3ac0bf3925232052941485442 (diff) |
Add additional exposure modes to QCameraExposure.
[ChangeLog][GStreamer][Android] Camera exposure mode extended to support
Action, Landscape, NightPortrait, Theatre, Sunset, SteadyPhoto,
Fireworks, Party, Candlelight, and Barcode modes.
Change-Id: I13d4bb042d27c0bd2ffcd369882b56bbabc84335
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
-rw-r--r-- | src/imports/multimedia/qdeclarativecamera_p.h | 10 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativecameraexposure.cpp | 10 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativecameraexposure_p.h | 10 | ||||
-rw-r--r-- | src/multimedia/camera/qcameraexposure.cpp | 10 | ||||
-rw-r--r-- | src/multimedia/camera/qcameraexposure.h | 10 | ||||
-rw-r--r-- | src/plugins/android/src/mediacapture/qandroidcameraexposurecontrol.cpp | 50 | ||||
-rw-r--r-- | src/plugins/gstreamer/camerabin/camerabinexposure.cpp | 81 |
7 files changed, 172 insertions, 9 deletions
diff --git a/src/imports/multimedia/qdeclarativecamera_p.h b/src/imports/multimedia/qdeclarativecamera_p.h index 113f01bd9..4bc60652e 100644 --- a/src/imports/multimedia/qdeclarativecamera_p.h +++ b/src/imports/multimedia/qdeclarativecamera_p.h @@ -191,6 +191,16 @@ public: ExposureBeach = QCameraExposure::ExposureBeach, ExposureLargeAperture = QCameraExposure::ExposureLargeAperture, ExposureSmallAperture = QCameraExposure::ExposureSmallAperture, + ExposureAction = QCameraExposure::ExposureAction, + ExposureLandscape = QCameraExposure::ExposureLandscape, + ExposureNightPortrait = QCameraExposure::ExposureNightPortrait, + ExposureTheatre = QCameraExposure::ExposureTheatre, + ExposureSunset = QCameraExposure::ExposureSunset, + ExposureSteadyPhoto = QCameraExposure::ExposureSteadyPhoto, + ExposureFireworks = QCameraExposure::ExposureFireworks, + ExposureParty = QCameraExposure::ExposureParty, + ExposureCandlelight = QCameraExposure::ExposureCandlelight, + ExposureBarcode = QCameraExposure::ExposureBarcode, ExposureModeVendor = QCameraExposure::ExposureModeVendor }; diff --git a/src/imports/multimedia/qdeclarativecameraexposure.cpp b/src/imports/multimedia/qdeclarativecameraexposure.cpp index cc793cdce..3b1f9201d 100644 --- a/src/imports/multimedia/qdeclarativecameraexposure.cpp +++ b/src/imports/multimedia/qdeclarativecameraexposure.cpp @@ -341,6 +341,16 @@ void QDeclarativeCameraExposure::setAutoIsoSensitivity() \row \li Camera.ExposureLargeAperture \li Use larger aperture with small depth of field. \row \li Camera.ExposureSmallAperture \li Use smaller aperture. \row \li Camera.ExposurePortrait \li Portrait exposure mode. + \row \li Camera.ExposureAction \li Action exposure mode. Since 5.5 + \row \li Camera.ExposureLandscape \li Landscape exposure mode. Since 5.5 + \row \li Camera.ExposureNightPortrait \li Night portrait exposure mode. Since 5.5 + \row \li Camera.ExposureTheatre \li Theatre exposure mode. Since 5.5 + \row \li Camera.ExposureSunset \li Sunset exposure mode. Since 5.5 + \row \li Camera.ExposureSteadyPhoto \li Steady photo exposure mode. Since 5.5 + \row \li Camera.ExposureFireworks \li Fireworks exposure mode. Since 5.5 + \row \li Camera.ExposureParty \li Party exposure mode. Since 5.5 + \row \li Camera.ExposureCandlelight \li Candlelight exposure mode. Since 5.5 + \row \li Camera.ExposureBarcode \li Barcode exposure mode. Since 5.5 \row \li Camera.ExposureModeVendor \li The base value for device specific exposure modes. \endtable */ diff --git a/src/imports/multimedia/qdeclarativecameraexposure_p.h b/src/imports/multimedia/qdeclarativecameraexposure_p.h index a8a53f0c5..83058a933 100644 --- a/src/imports/multimedia/qdeclarativecameraexposure_p.h +++ b/src/imports/multimedia/qdeclarativecameraexposure_p.h @@ -86,6 +86,16 @@ public: ExposureBeach = QCameraExposure::ExposureBeach, ExposureLargeAperture = QCameraExposure::ExposureLargeAperture, ExposureSmallAperture = QCameraExposure::ExposureSmallAperture, + ExposureAction = QCameraExposure::ExposureAction, + ExposureLandscape = QCameraExposure::ExposureLandscape, + ExposureNightPortrait = QCameraExposure::ExposureNightPortrait, + ExposureTheatre = QCameraExposure::ExposureTheatre, + ExposureSunset = QCameraExposure::ExposureSunset, + ExposureSteadyPhoto = QCameraExposure::ExposureSteadyPhoto, + ExposureFireworks = QCameraExposure::ExposureFireworks, + ExposureParty = QCameraExposure::ExposureParty, + ExposureCandlelight = QCameraExposure::ExposureCandlelight, + ExposureBarcode = QCameraExposure::ExposureBarcode, ExposureModeVendor = QCameraExposure::ExposureModeVendor }; diff --git a/src/multimedia/camera/qcameraexposure.cpp b/src/multimedia/camera/qcameraexposure.cpp index 358e27b5e..9a74dbdb4 100644 --- a/src/multimedia/camera/qcameraexposure.cpp +++ b/src/multimedia/camera/qcameraexposure.cpp @@ -632,6 +632,16 @@ void QCameraExposure::setAutoShutterSpeed() \value ExposureBeach Beach exposure mode. \value ExposureLargeAperture Use larger aperture with small depth of field. \value ExposureSmallAperture Use smaller aperture. + \value ExposureAction Action mode. Since 5.5 + \value ExposureLandscape Landscape mode. Since 5.5 + \value ExposureNightPortrait Night portrait mode. Since 5.5 + \value ExposureTheatre Theatre mode. Since 5.5 + \value ExposureSunset Sunset mode. Since 5.5 + \value ExposureSteadyPhoto Steady photo mode. Since 5.5 + \value ExposureFireworks Fireworks mode. Since 5.5 + \value ExposureParty Party mode. Since 5.5 + \value ExposureCandlelight Candlelight mode. Since 5.5 + \value ExposureBarcode Barcode mode. Since 5.5 \value ExposureModeVendor The base value for device specific exposure modes. */ diff --git a/src/multimedia/camera/qcameraexposure.h b/src/multimedia/camera/qcameraexposure.h index 92eee6fda..bb51fb62d 100644 --- a/src/multimedia/camera/qcameraexposure.h +++ b/src/multimedia/camera/qcameraexposure.h @@ -85,6 +85,16 @@ public: ExposureBeach = 8, ExposureLargeAperture = 9, ExposureSmallAperture = 10, + ExposureAction = 11, + ExposureLandscape = 12, + ExposureNightPortrait = 13, + ExposureTheatre = 14, + ExposureSunset = 15, + ExposureSteadyPhoto = 16, + ExposureFireworks = 17, + ExposureParty = 18, + ExposureCandlelight = 19, + ExposureBarcode = 20, ExposureModeVendor = 1000 }; diff --git a/src/plugins/android/src/mediacapture/qandroidcameraexposurecontrol.cpp b/src/plugins/android/src/mediacapture/qandroidcameraexposurecontrol.cpp index 50a3759bc..707fb80cd 100644 --- a/src/plugins/android/src/mediacapture/qandroidcameraexposurecontrol.cpp +++ b/src/plugins/android/src/mediacapture/qandroidcameraexposurecontrol.cpp @@ -181,6 +181,36 @@ bool QAndroidCameraExposureControl::setValue(ExposureParameter parameter, const case QCameraExposure::ExposureNight: sceneMode = QLatin1String("night"); break; + case QCameraExposure::ExposureAction: + sceneMode = QLatin1String("action"); + break; + case QCameraExposure::ExposureLandscape: + sceneMode = QLatin1String("landscape"); + break; + case QCameraExposure::ExposureNightPortrait: + sceneMode = QLatin1String("night-portrait"); + break; + case QCameraExposure::ExposureTheatre: + sceneMode = QLatin1String("theatre"); + break; + case QCameraExposure::ExposureSunset: + sceneMode = QLatin1String("sunset"); + break; + case QCameraExposure::ExposureSteadyPhoto: + sceneMode = QLatin1String("steadyphoto"); + break; + case QCameraExposure::ExposureFireworks: + sceneMode = QLatin1String("fireworks"); + break; + case QCameraExposure::ExposureParty: + sceneMode = QLatin1String("party"); + break; + case QCameraExposure::ExposureCandlelight: + sceneMode = QLatin1String("candlelight"); + break; + case QCameraExposure::ExposureBarcode: + sceneMode = QLatin1String("barcode"); + break; default: sceneMode = QLatin1String("auto"); m_actualExposureMode = QCameraExposure::ExposureAuto; @@ -226,6 +256,26 @@ void QAndroidCameraExposureControl::onCameraOpened() m_supportedExposureModes << QVariant::fromValue(QCameraExposure::ExposureSnow); else if (sceneMode == QLatin1String("sports")) m_supportedExposureModes << QVariant::fromValue(QCameraExposure::ExposureSports); + else if (sceneMode == QLatin1String("action")) + m_supportedExposureModes << QVariant::fromValue(QCameraExposure::ExposureAction); + else if (sceneMode == QLatin1String("landscape")) + m_supportedExposureModes << QVariant::fromValue(QCameraExposure::ExposureLandscape); + else if (sceneMode == QLatin1String("night-portrait")) + m_supportedExposureModes << QVariant::fromValue(QCameraExposure::ExposureNightPortrait); + else if (sceneMode == QLatin1String("theatre")) + m_supportedExposureModes << QVariant::fromValue(QCameraExposure::ExposureTheatre); + else if (sceneMode == QLatin1String("sunset")) + m_supportedExposureModes << QVariant::fromValue(QCameraExposure::ExposureSunset); + else if (sceneMode == QLatin1String("steadyphoto")) + m_supportedExposureModes << QVariant::fromValue(QCameraExposure::ExposureSteadyPhoto); + else if (sceneMode == QLatin1String("fireworks")) + m_supportedExposureModes << QVariant::fromValue(QCameraExposure::ExposureFireworks); + else if (sceneMode == QLatin1String("party")) + m_supportedExposureModes << QVariant::fromValue(QCameraExposure::ExposureParty); + else if (sceneMode == QLatin1String("candlelight")) + m_supportedExposureModes << QVariant::fromValue(QCameraExposure::ExposureCandlelight); + else if (sceneMode == QLatin1String("barcode")) + m_supportedExposureModes << QVariant::fromValue(QCameraExposure::ExposureBarcode); } emit parameterRangeChanged(QCameraExposureControl::ExposureMode); } diff --git a/src/plugins/gstreamer/camerabin/camerabinexposure.cpp b/src/plugins/gstreamer/camerabin/camerabinexposure.cpp index 795fd4275..be12ddcda 100644 --- a/src/plugins/gstreamer/camerabin/camerabinexposure.cpp +++ b/src/plugins/gstreamer/camerabin/camerabinexposure.cpp @@ -128,20 +128,44 @@ QVariant CameraBinExposure::actualValue(ExposureParameter parameter) const switch (sceneMode) { case GST_PHOTOGRAPHY_SCENE_MODE_PORTRAIT: - return QCameraExposure::ExposurePortrait; + return QVariant::fromValue(QCameraExposure::ExposurePortrait); case GST_PHOTOGRAPHY_SCENE_MODE_SPORT: - return QCameraExposure::ExposureSports; + return QVariant::fromValue(QCameraExposure::ExposureSports); case GST_PHOTOGRAPHY_SCENE_MODE_NIGHT: - return QCameraExposure::ExposureNight; + return QVariant::fromValue(QCameraExposure::ExposureNight); case GST_PHOTOGRAPHY_SCENE_MODE_MANUAL: - return QCameraExposure::ExposureManual; - case GST_PHOTOGRAPHY_SCENE_MODE_CLOSEUP: - //no direct mapping available so mapping to auto mode + return QVariant::fromValue(QCameraExposure::ExposureManual); case GST_PHOTOGRAPHY_SCENE_MODE_LANDSCAPE: - //no direct mapping available so mapping to auto mode + return QVariant::fromValue(QCameraExposure::ExposureLandscape); +#if GST_CHECK_VERSION(1, 2, 0) + case GST_PHOTOGRAPHY_SCENE_MODE_SNOW: + return QVariant::fromValue(QCameraExposure::ExposureSnow); + case GST_PHOTOGRAPHY_SCENE_MODE_BEACH: + return QVariant::fromValue(QCameraExposure::ExposureBeach); + case GST_PHOTOGRAPHY_SCENE_MODE_ACTION: + return QVariant::fromValue(QCameraExposure::ExposureAction); + case GST_PHOTOGRAPHY_SCENE_MODE_NIGHT_PORTRAIT: + return QVariant::fromValue(QCameraExposure::ExposureNightPortrait); + case GST_PHOTOGRAPHY_SCENE_MODE_THEATRE: + return QVariant::fromValue(QCameraExposure::ExposureTheatre); + case GST_PHOTOGRAPHY_SCENE_MODE_SUNSET: + return QVariant::fromValue(QCameraExposure::ExposureSunset); + case GST_PHOTOGRAPHY_SCENE_MODE_STEADY_PHOTO: + return QVariant::fromValue(QCameraExposure::ExposureSteadyPhoto); + case GST_PHOTOGRAPHY_SCENE_MODE_FIREWORKS: + return QVariant::fromValue(QCameraExposure::ExposureFireworks); + case GST_PHOTOGRAPHY_SCENE_MODE_PARTY: + return QVariant::fromValue(QCameraExposure::ExposureParty); + case GST_PHOTOGRAPHY_SCENE_MODE_CANDLELIGHT: + return QVariant::fromValue(QCameraExposure::ExposureCandlelight); + case GST_PHOTOGRAPHY_SCENE_MODE_BARCODE: + return QVariant::fromValue(QCameraExposure::ExposureBarcode); +#endif + //no direct mapping available so mapping to auto mode + case GST_PHOTOGRAPHY_SCENE_MODE_CLOSEUP: case GST_PHOTOGRAPHY_SCENE_MODE_AUTO: default: - return QCameraExposure::ExposureAuto; + return QVariant::fromValue(QCameraExposure::ExposureAuto); } } case QCameraExposureControl::MeteringMode: @@ -170,8 +194,9 @@ bool CameraBinExposure::setValue(ExposureParameter parameter, const QVariant& va break; case QCameraExposureControl::ExposureMode: { - QCameraExposure::ExposureMode mode = QCameraExposure::ExposureMode(value.toInt()); + QCameraExposure::ExposureMode mode = value.value<QCameraExposure::ExposureMode>(); GstPhotographySceneMode sceneMode; + gst_photography_get_scene_mode(m_session->photography(), &sceneMode); switch (mode) { @@ -190,6 +215,44 @@ bool CameraBinExposure::setValue(ExposureParameter parameter, const QVariant& va case QCameraExposure::ExposureAuto: sceneMode = GST_PHOTOGRAPHY_SCENE_MODE_AUTO; break; + case QCameraExposure::ExposureLandscape: + sceneMode = GST_PHOTOGRAPHY_SCENE_MODE_LANDSCAPE; + break; +#if GST_CHECK_VERSION(1, 2, 0) + case QCameraExposure::ExposureSnow: + sceneMode = GST_PHOTOGRAPHY_SCENE_MODE_SNOW; + break; + case QCameraExposure::ExposureBeach: + sceneMode = GST_PHOTOGRAPHY_SCENE_MODE_BEACH; + break; + case QCameraExposure::ExposureAction: + sceneMode = GST_PHOTOGRAPHY_SCENE_MODE_ACTION; + break; + case QCameraExposure::ExposureNightPortrait: + sceneMode = GST_PHOTOGRAPHY_SCENE_MODE_NIGHT_PORTRAIT; + break; + case QCameraExposure::ExposureTheatre: + sceneMode = GST_PHOTOGRAPHY_SCENE_MODE_THEATRE; + break; + case QCameraExposure::ExposureSunset: + sceneMode = GST_PHOTOGRAPHY_SCENE_MODE_SUNSET; + break; + case QCameraExposure::ExposureSteadyPhoto: + sceneMode = GST_PHOTOGRAPHY_SCENE_MODE_STEADY_PHOTO; + break; + case QCameraExposure::ExposureFireworks: + sceneMode = GST_PHOTOGRAPHY_SCENE_MODE_FIREWORKS; + break; + case QCameraExposure::ExposureParty: + sceneMode = GST_PHOTOGRAPHY_SCENE_MODE_PARTY; + break; + case QCameraExposure::ExposureCandlelight: + sceneMode = GST_PHOTOGRAPHY_SCENE_MODE_CANDLELIGHT; + break; + case QCameraExposure::ExposureBarcode: + sceneMode = GST_PHOTOGRAPHY_SCENE_MODE_BARCODE; + break; +#endif default: break; } |