diff options
author | Yoann Lopes <yoann.lopes@digia.com> | 2014-02-03 19:47:33 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-28 14:10:22 +0100 |
commit | b2f40ef75dac238be650b5ade013d39d6a741871 (patch) | |
tree | e1ae508d72f01e35880f93f92f0e07f9d003855e /src/plugins/android/src/qandroidmediaserviceplugin.cpp | |
parent | f783c48a170c8ec86e4904b786a46dae5f07dfa7 (diff) |
Android: implement QCameraInfoControl.
VideoOutput will now take into account the camera sensor orientation to
adjust the viewport orientation, we don't need to apply a rotation on
the Android Camera anymore.
Change-Id: Ia7639f0a5711ab6cc6f80b9716bc1a6f389499b4
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Diffstat (limited to 'src/plugins/android/src/qandroidmediaserviceplugin.cpp')
-rw-r--r-- | src/plugins/android/src/qandroidmediaserviceplugin.cpp | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/src/plugins/android/src/qandroidmediaserviceplugin.cpp b/src/plugins/android/src/qandroidmediaserviceplugin.cpp index 03c2b287c..005def8cf 100644 --- a/src/plugins/android/src/qandroidmediaserviceplugin.cpp +++ b/src/plugins/android/src/qandroidmediaserviceplugin.cpp @@ -43,8 +43,9 @@ #include "qandroidmediaservice.h" #include "qandroidcaptureservice.h" -#include "qandroidvideodeviceselectorcontrol.h" #include "qandroidaudioinputselectorcontrol.h" +#include "qandroidcamerainfocontrol.h" +#include "qandroidcamerasession.h" #include "jmediaplayer.h" #include "jsurfacetexture.h" #include "jsurfacetextureholder.h" @@ -98,16 +99,21 @@ QMediaServiceProviderHint::Features QAndroidMediaServicePlugin::supportedFeature QByteArray QAndroidMediaServicePlugin::defaultDevice(const QByteArray &service) const { - if (service == Q_MEDIASERVICE_CAMERA) - return QAndroidVideoDeviceSelectorControl::defaultDeviceName(); + if (service == Q_MEDIASERVICE_CAMERA && !QAndroidCameraSession::availableCameras().isEmpty()) + return QAndroidCameraSession::availableCameras().first().name; return QByteArray(); } QList<QByteArray> QAndroidMediaServicePlugin::devices(const QByteArray &service) const { - if (service == Q_MEDIASERVICE_CAMERA) - return QAndroidVideoDeviceSelectorControl::availableDevices(); + if (service == Q_MEDIASERVICE_CAMERA) { + QList<QByteArray> devices; + const QList<AndroidCameraInfo> &cameras = QAndroidCameraSession::availableCameras(); + for (int i = 0; i < cameras.count(); ++i) + devices.append(cameras.at(i).name); + return devices; + } if (service == Q_MEDIASERVICE_AUDIOSOURCE) return QAndroidAudioInputSelectorControl::availableDevices(); @@ -117,8 +123,14 @@ QList<QByteArray> QAndroidMediaServicePlugin::devices(const QByteArray &service) QString QAndroidMediaServicePlugin::deviceDescription(const QByteArray &service, const QByteArray &device) { - if (service == Q_MEDIASERVICE_CAMERA) - return QAndroidVideoDeviceSelectorControl::availableDeviceDescription(device); + if (service == Q_MEDIASERVICE_CAMERA) { + const QList<AndroidCameraInfo> &cameras = QAndroidCameraSession::availableCameras(); + for (int i = 0; i < cameras.count(); ++i) { + const AndroidCameraInfo &info = cameras.at(i); + if (info.name == device) + return info.description; + } + } if (service == Q_MEDIASERVICE_AUDIOSOURCE) return QAndroidAudioInputSelectorControl::availableDeviceDescription(device); @@ -126,6 +138,16 @@ QString QAndroidMediaServicePlugin::deviceDescription(const QByteArray &service, return QString(); } +QCamera::Position QAndroidMediaServicePlugin::cameraPosition(const QByteArray &device) const +{ + return QAndroidCameraInfoControl::position(device); +} + +int QAndroidMediaServicePlugin::cameraOrientation(const QByteArray &device) const +{ + return QAndroidCameraInfoControl::orientation(device); +} + Q_DECL_EXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void * /*reserved*/) { |