From 61d2d1c665d3d21dcea83363c8229f220b56f4dd Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Mon, 15 Nov 2021 03:35:35 +0100 Subject: Support exif rotation on received videos fixes #674 --- src/ui/MxcMediaProxy.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src/ui/MxcMediaProxy.cpp') diff --git a/src/ui/MxcMediaProxy.cpp b/src/ui/MxcMediaProxy.cpp index df0298da..a93d0fc0 100644 --- a/src/ui/MxcMediaProxy.cpp +++ b/src/ui/MxcMediaProxy.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -23,6 +24,28 @@ #include "MatrixClient.h" #include "timeline/TimelineModel.h" +MxcMediaProxy::MxcMediaProxy(QObject *parent) + : QMediaPlayer(parent) +{ + connect(this, &MxcMediaProxy::eventIdChanged, &MxcMediaProxy::startDownload); + connect(this, &MxcMediaProxy::roomChanged, &MxcMediaProxy::startDownload); + connect(this, + qOverload(&MxcMediaProxy::error), + [this](QMediaPlayer::Error error) { + nhlog::ui()->info("Media player error {} and errorStr {}", + error, + this->errorString().toStdString()); + }); + connect(this, &MxcMediaProxy::mediaStatusChanged, [this](QMediaPlayer::MediaStatus status) { + nhlog::ui()->info("Media player status {} and error {}", status, this->error()); + }); + connect(this, + qOverload(&MxcMediaProxy::metaDataChanged), + [this](QString t, QVariant) { + if (t == QMediaMetaData::Orientation) + emit orientationChanged(); + }); +} void MxcMediaProxy::setVideoSurface(QAbstractVideoSurface *surface) { @@ -37,6 +60,15 @@ MxcMediaProxy::getVideoSurface() return m_surface; } +int +MxcMediaProxy::orientation() const +{ + nhlog::ui()->debug("metadata: {}", availableMetaData().join(",").toStdString()); + auto orientation = metaData(QMediaMetaData::Orientation).toInt(); + nhlog::ui()->debug("Video orientation: {}", orientation); + return orientation; +} + void MxcMediaProxy::startDownload() { -- cgit 1.5.1