From 20ab443f68452abd9851fbe8a49171a007307691 Mon Sep 17 00:00:00 2001 From: Elliu <elliu@hashi.re> Date: Fri, 29 Oct 2021 15:19:21 +0200 Subject: [PATCH] Fix rebase from master --- src/Lib/Audio.cc | 7 ++++++ src/Lib/Audio.hh | 1 + src/UI/DocumentViews/TimingAxis.hh | 2 +- src/UI/DocumentViews/TimingScene.cc | 3 +-- src/UI/DocumentViews/TimingScene.hh | 3 +-- src/UI/DocumentViews/TimingView.hh | 4 +--- src/UI/VivyDocumentView.cc | 34 ++++++++--------------------- 7 files changed, 21 insertions(+), 33 deletions(-) diff --git a/src/Lib/Audio.cc b/src/Lib/Audio.cc index fdf79c0f..96f5c4f0 100644 --- a/src/Lib/Audio.cc +++ b/src/Lib/Audio.cc @@ -216,3 +216,10 @@ AudioStream::getDecodedDecalage() const noexcept constexpr size_t overlap = 128; // The overlap return getDecodedChunkSize() - overlap; } + + +quint64 +AudioStream::getLength() const noexcept +{ + return quint64(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::microseconds(dataFormat->duration)).count()); +} diff --git a/src/Lib/Audio.hh b/src/Lib/Audio.hh index 08706f94..2bf00f7e 100644 --- a/src/Lib/Audio.hh +++ b/src/Lib/Audio.hh @@ -32,6 +32,7 @@ public: // Some getters int getChannels() const noexcept; int getSampleRate() const noexcept; + quint64 getLength() const noexcept; qint64 getBitRate() const noexcept; QJsonObject getProperties() const noexcept override; diff --git a/src/UI/DocumentViews/TimingAxis.hh b/src/UI/DocumentViews/TimingAxis.hh index d66c0c38..6a8ec7ef 100644 --- a/src/UI/DocumentViews/TimingAxis.hh +++ b/src/UI/DocumentViews/TimingAxis.hh @@ -18,7 +18,7 @@ class TimingAxis final : public QGraphicsObject { public: explicit TimingAxis(AudioContext::StreamPtr stream, int x0, int x1, int y) noexcept; - ~TimingAxis() noexcept = default; + ~TimingAxis() noexcept override = default; QRectF boundingRect() const override; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; diff --git a/src/UI/DocumentViews/TimingScene.cc b/src/UI/DocumentViews/TimingScene.cc index 09372d8d..9a87e650 100644 --- a/src/UI/DocumentViews/TimingScene.cc +++ b/src/UI/DocumentViews/TimingScene.cc @@ -15,7 +15,6 @@ using namespace Vivy; -TimingScene::TimingScene(QImage img_, quint64 soundLength_, QWidget *parent) noexcept TimingScene::TimingScene(QWidget *parent) noexcept : QGraphicsScene(parent) { @@ -57,7 +56,7 @@ void TimingScene::handleMousePressEventLine(QGraphicsSceneMouseEvent *event, Ass::LinePtr p) noexcept { QPointF pos = event->scenePos(); - quint64 time = static_cast<quint64>(timeFromPos(pos.x())); + quint64 time = timeFromPos(pos.x()); if (const auto &btn = event->button(); btn == Qt::LeftButton) { p->setStart(time); diff --git a/src/UI/DocumentViews/TimingScene.hh b/src/UI/DocumentViews/TimingScene.hh index 5097a229..86b1be9b 100644 --- a/src/UI/DocumentViews/TimingScene.hh +++ b/src/UI/DocumentViews/TimingScene.hh @@ -37,12 +37,11 @@ public: TimingAxis *getAxis(); private: - inline quint64 timeFromPos(qreal x) const; + quint64 timeFromPos(qreal x) const; quint64 timeFromPos(quint64 x) const; void handleMousePressEventLine(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept; void handleMousePressEventSyl(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept; void handleMousePressEventChar(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept; - qreal timeFromPos(qreal x); public slots: }; diff --git a/src/UI/DocumentViews/TimingView.hh b/src/UI/DocumentViews/TimingView.hh index 604d737e..1d22b7b9 100644 --- a/src/UI/DocumentViews/TimingView.hh +++ b/src/UI/DocumentViews/TimingView.hh @@ -22,11 +22,9 @@ public: static inline constexpr QColor endColour = QColor(0, 127, 0); explicit TimingView(QImage, AudioContext::StreamPtr, QWidget * = nullptr) noexcept; - ~TimingView() noexcept = default; + ~TimingView() noexcept override = default; TimingScene* getTimingScene() const; - - TimingScene *getTimingScene() const; void wheelEvent(QWheelEvent *) noexcept override; private: diff --git a/src/UI/VivyDocumentView.cc b/src/UI/VivyDocumentView.cc index 4fb0a430..e80887ce 100644 --- a/src/UI/VivyDocumentView.cc +++ b/src/UI/VivyDocumentView.cc @@ -126,31 +126,15 @@ VivyDocumentView::loadAssView() noexcept void VivyDocumentView::loadAudioView() noexcept { - if (document->checkDocumentCapabilities(VivyDocument::AudioAble)) { - AudioContext::StreamPtr stream = document->getAudioStream(); - if (stream == nullptr) { - qCritical() << "Failed to get default audio stream"; - return; - } - - if (!visualizer) { - visualizer = new QDockWidget("Visualizer", this); - - visualizer->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Minimum); - visualizer->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::TopDockWidgetArea | - Qt::BottomDockWidgetArea); - visualizer->setFeatures(QDockWidget::DockWidgetMovable | - QDockWidget::DockWidgetClosable); - addDockWidget(Qt::LeftDockWidgetArea, visualizer, Qt::Horizontal); - visualizer->setTitleBarWidget(new QWidget(this)); - Utils::setTransparentBackgroundForWidget(visualizer->titleBarWidget()); - } - - // Kubat: don't check, may throw an error but don't think we can - // recover from it. - AudioVisualizer *visualizerInner = new AudioVisualizer(stream, visualizer); - visualizer->setWidget(visualizerInner); - visualizer->layout()->setAlignment(visualizerInner, Qt::AlignTop); + if (!document->checkDocumentCapabilities(VivyDocument::AudioAble)) + return; + + std::shared_ptr<AudioSubDocument> audioDocument = document->getAudioSubDocument(); + AudioContext::StreamPtr stream = audioDocument->getDefaultStream(); + + if (stream == nullptr) { + logError() << "Failed to get default audio stream"; + return; } if (!visualizer) { -- GitLab