summaryrefslogtreecommitdiffstats
path: root/src/plugins/winrt
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/winrt')
-rw-r--r--src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp10
-rw-r--r--src/plugins/winrt/qwinrtabstractvideorenderercontrol.h3
-rw-r--r--src/plugins/winrt/qwinrtcameracontrol.cpp3
-rw-r--r--src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp10
4 files changed, 26 insertions, 0 deletions
diff --git a/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp b/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp
index 175fec1d5..be0436261 100644
--- a/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp
+++ b/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp
@@ -310,6 +310,16 @@ void QWinRTAbstractVideoRendererControl::setSize(const QSize &size)
d->dirtyState = TextureDirty;
}
+void QWinRTAbstractVideoRendererControl::setScanLineDirection(QVideoSurfaceFormat::Direction scanLineDirection)
+{
+ Q_D(QWinRTAbstractVideoRendererControl);
+
+ if (d->format.scanLineDirection() == scanLineDirection)
+ return;
+
+ d->format.setScanLineDirection(scanLineDirection);
+}
+
void QWinRTAbstractVideoRendererControl::setActive(bool active)
{
Q_D(QWinRTAbstractVideoRendererControl);
diff --git a/src/plugins/winrt/qwinrtabstractvideorenderercontrol.h b/src/plugins/winrt/qwinrtabstractvideorenderercontrol.h
index 86a7b15f9..b06b18a2a 100644
--- a/src/plugins/winrt/qwinrtabstractvideorenderercontrol.h
+++ b/src/plugins/winrt/qwinrtabstractvideorenderercontrol.h
@@ -43,6 +43,7 @@
#define QWINRTABSTRACTVIDEORENDERERCONTROL_H
#include <QtMultimedia/QVideoRendererControl>
+#include <QtMultimedia/QVideoSurfaceFormat>
struct ID3D11Device;
struct ID3D11Texture2D;
@@ -63,6 +64,8 @@ public:
QSize size() const;
void setSize(const QSize &size);
+ void setScanLineDirection(QVideoSurfaceFormat::Direction direction);
+
void setActive(bool active);
virtual bool render(ID3D11Texture2D *texture) = 0;
diff --git a/src/plugins/winrt/qwinrtcameracontrol.cpp b/src/plugins/winrt/qwinrtcameracontrol.cpp
index 619e97315..f4e57b438 100644
--- a/src/plugins/winrt/qwinrtcameracontrol.cpp
+++ b/src/plugins/winrt/qwinrtcameracontrol.cpp
@@ -677,6 +677,9 @@ HRESULT QWinRTCameraControl::initialize()
return E_FAIL;
}
+ if (d->videoDeviceSelector->cameraPosition(deviceName) == QCamera::FrontFace)
+ d->videoRenderer->setScanLineDirection(QVideoSurfaceFormat::BottomToTop);
+
ComPtr<IMediaCaptureInitializationSettings> settings;
hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Media_Capture_MediaCaptureInitializationSettings).Get(),
&settings);
diff --git a/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp b/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp
index 8058c3dad..969ef6f30 100644
--- a/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp
+++ b/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp
@@ -337,7 +337,17 @@ QCamera::Position QWinRTVideoDeviceSelectorControl::cameraPosition(const QString
int QWinRTVideoDeviceSelectorControl::cameraOrientation(const QString &deviceName)
{
+#ifdef Q_OS_WINPHONE
+ switch (cameraPosition(deviceName)) {
+ case QCamera::FrontFace:
+ case QCamera::BackFace:
+ return 270;
+ default:
+ break;
+ }
+#else
Q_UNUSED(deviceName);
+#endif
return 0;
}