summary refs log tree commit diff
path: root/src/ui/MxcMediaProxy.cpp
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2021-11-15 03:35:35 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2021-11-15 03:36:30 +0100
commit61d2d1c665d3d21dcea83363c8229f220b56f4dd (patch)
tree078bf6969fd92de0ed0f1809a650449737d0e75b /src/ui/MxcMediaProxy.cpp
parentTranslated using Weblate (Indonesian) (diff)
downloadnheko-61d2d1c665d3d21dcea83363c8229f220b56f4dd.tar.xz
Support exif rotation on received videos
fixes #674
Diffstat (limited to 'src/ui/MxcMediaProxy.cpp')
-rw-r--r--src/ui/MxcMediaProxy.cpp32
1 files changed, 32 insertions, 0 deletions
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 <QDir> #include <QFile> #include <QFileInfo> +#include <QMediaMetaData> #include <QMediaObject> #include <QMediaPlayer> #include <QMimeDatabase> @@ -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<QMediaPlayer::Error>(&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<const QString &, const QVariant &>(&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() {