diff options
Diffstat (limited to 'src/plugins/winrt')
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; } |