diff --git a/src/Lib/Audio.cc b/src/Lib/Audio.cc index 5dc0cf61456f25fdb2a36fc47979e24351b85d16..7639f3a50a1728c7c388a4aeb20b4a33b57c3982 100644 --- a/src/Lib/Audio.cc +++ b/src/Lib/Audio.cc @@ -296,11 +296,11 @@ AudioContext::Stream::getBitRate() const noexcept return codecContext->bit_rate; } -qreal +quint64 AudioContext::Stream::getLength() const noexcept { // The whole file duration, not individual streams. - return qreal(std::chrono::duration<qreal,std::ratio<1,1>>(std::chrono::microseconds(dataFormat->duration)).count()); + return quint64(std::chrono::duration<qreal,std::ratio<1,1000>>(std::chrono::microseconds(dataFormat->duration)).count()); } // Get the information about the decoded state of this stream diff --git a/src/Lib/Audio.hh b/src/Lib/Audio.hh index 5bf01907715ea43ee1930fc1f1a0bc7db8f83085..72e251c42a10696be5b52e5993793279669f369f 100644 --- a/src/Lib/Audio.hh +++ b/src/Lib/Audio.hh @@ -88,7 +88,7 @@ public: qint64 getBitRate() const noexcept; // Get audio context length, if a stream is translated putting the length // on the `Stream` can pose some problems. - qreal getLength() const noexcept; + quint64 getLength() const noexcept; // Get the index from the audio context int getStreamIndex() const noexcept; diff --git a/src/UI/DocumentViews/AudioVisualizer.cc b/src/UI/DocumentViews/AudioVisualizer.cc index fce4751f62184938bdc2c2267297ab86b781a6ef..457e5cb62f1bc8871402b62e3624d49bf077a998 100644 --- a/src/UI/DocumentViews/AudioVisualizer.cc +++ b/src/UI/DocumentViews/AudioVisualizer.cc @@ -74,7 +74,7 @@ AudioVisualizer::AudioVisualizer(AudioContext::StreamPtr stream, QWidget *parent } void -AudioVisualizer::printSpectrum(QImage pixmap, qreal audioLength) noexcept +AudioVisualizer::printSpectrum(QImage pixmap, quint64 audioLength) noexcept { TimingView *timer = new TimingView(pixmap, audioLength, this); QHBoxLayout *layout = new QHBoxLayout; diff --git a/src/UI/DocumentViews/AudioVisualizer.hh b/src/UI/DocumentViews/AudioVisualizer.hh index 329690bf764c606cc2d34e5ced1659f21d4b47f9..3ca56df66eeea7a4821f627bc411fb59a97dcb8b 100644 --- a/src/UI/DocumentViews/AudioVisualizer.hh +++ b/src/UI/DocumentViews/AudioVisualizer.hh @@ -37,7 +37,7 @@ public: ~AudioVisualizer() noexcept = default; public slots: - void printSpectrum(QImage, qreal) noexcept; + void printSpectrum(QImage, quint64) noexcept; }; } diff --git a/src/UI/DocumentViews/TimingAxis.cc b/src/UI/DocumentViews/TimingAxis.cc index ded764d5a15bce3b71ee709bed9f6ad296f2558a..797750ebc52648a27fdcc8d2b1cdd15e14cfbaab 100644 --- a/src/UI/DocumentViews/TimingAxis.cc +++ b/src/UI/DocumentViews/TimingAxis.cc @@ -12,7 +12,7 @@ using namespace Vivy; -TimingAxis::TimingAxis(qreal audioLength_, int x0_, int x1_, int y_) noexcept +TimingAxis::TimingAxis(quint64 audioLength_, int x0_, int x1_, int y_) noexcept : QGraphicsObject(), audioLength(audioLength_), x0(x0_), @@ -36,7 +36,7 @@ void TimingAxis::refreshTicks() { QGraphicsScene *parentScene = scene(); if (parentScene != nullptr){ for (minorTicksIndex = 0; minorTicksIndex < nbAvailableTicks; minorTicksIndex++){ - if (parentScene->width() / (audioLength * availableTicks[minorTicksIndex]) < minBetweenMinor){ + if (parentScene->width() / (qreal(audioLength) * availableTicks[minorTicksIndex]) < minBetweenMinor){ minorTicksIndex = minorTicksIndex == 0 ? 0 : minorTicksIndex - 1; break; } diff --git a/src/UI/DocumentViews/TimingAxis.hh b/src/UI/DocumentViews/TimingAxis.hh index ea229d4920a8f87f0cc5872124078266bf8719b0..b7502729460c0da84963d4aeb7b810681d039b94 100644 --- a/src/UI/DocumentViews/TimingAxis.hh +++ b/src/UI/DocumentViews/TimingAxis.hh @@ -16,7 +16,7 @@ class TimingAxis final : public QGraphicsObject { Q_OBJECT public: - explicit TimingAxis(qreal audioLength, int x0, int x1, int y) noexcept; + explicit TimingAxis(quint64 audioLength, int x0, int x1, int y) noexcept; ~TimingAxis() noexcept = default; QRectF boundingRect() const override; @@ -25,13 +25,13 @@ public: private: static inline constexpr QColor axisColour = QColor(0, 0, 127); - QVector<qreal> availableTicks = { 0.01, 0.1, 1, 10, 60, 3600, 86400 }; + QVector<qreal> availableTicks = { 10, 100, 1000, 10000, 60000, 3600000, 86400000 }; qreal minBetweenMinor{ 5 }; qreal minorTicks; qreal majorTicks; qreal penWidth{ 1 }; - qreal audioLength{ 0 }; + quint64 audioLength{ 0 }; int x0{ 0 }; int x1{ 0 }; int y { 0 }; diff --git a/src/UI/DocumentViews/TimingScene.cc b/src/UI/DocumentViews/TimingScene.cc index 6eb79ee37e8122fc270a13ed3acfed8070fae600..6ed3ebb6eeb6a30d3718cdd8ce378429198ac940 100644 --- a/src/UI/DocumentViews/TimingScene.cc +++ b/src/UI/DocumentViews/TimingScene.cc @@ -20,7 +20,7 @@ TimingScene::TimingScene(QWidget *parent) noexcept { } -TimingScene::TimingScene(QImage img_, qreal soundLength_, QWidget *parent) noexcept +TimingScene::TimingScene(QImage img_, quint64 soundLength_, QWidget *parent) noexcept : QGraphicsScene(parent) , img(img_) , soundLength(soundLength_) @@ -74,7 +74,7 @@ TimingScene::timeFromPos(qreal x) qCritical() << "Try avoid possible divide by zero in the time from position"; return 0; } else { - return x * soundLength / w; + return x * qreal(soundLength) / w; } } diff --git a/src/UI/DocumentViews/TimingScene.hh b/src/UI/DocumentViews/TimingScene.hh index 5d51774ac0374c1e694a174ae5f76be5cf499a1f..1ba6ae0c94453ec0962581228452e46bec9949a1 100644 --- a/src/UI/DocumentViews/TimingScene.hh +++ b/src/UI/DocumentViews/TimingScene.hh @@ -27,13 +27,13 @@ public: static inline constexpr QColor endColour = QColor(0, 127, 0); explicit TimingScene(QWidget *parent = nullptr) noexcept; - explicit TimingScene(QImage, qreal, QWidget * = nullptr) noexcept; + explicit TimingScene(QImage, quint64, QWidget * = nullptr) noexcept; ~TimingScene() noexcept = default; private: QGraphicsPixmapItem *backgroundImg{ nullptr }; QImage img; - qreal soundLength{ 0 }; + quint64 soundLength{ 0 }; Ass::LineWeakPtr currentLine{}; TimingMode timingMode{ TimingMode::Line }; TimingAxis* ax; diff --git a/src/UI/DocumentViews/TimingView.cc b/src/UI/DocumentViews/TimingView.cc index 3b14d7f859b856e982d4509c53121df6e73adc88..3873f76f59af707c2a0977fc47b0185691b717a7 100644 --- a/src/UI/DocumentViews/TimingView.cc +++ b/src/UI/DocumentViews/TimingView.cc @@ -15,7 +15,7 @@ using namespace Vivy; -TimingView::TimingView(QImage img, qreal soundLength, QWidget *parent) noexcept +TimingView::TimingView(QImage img, quint64 soundLength, QWidget *parent) noexcept : QGraphicsView(parent) { currentScene = new TimingScene(img, soundLength, this); diff --git a/src/UI/DocumentViews/TimingView.hh b/src/UI/DocumentViews/TimingView.hh index f40e150ad7e8162cc90944e26ecf8865ca2f8754..1a9841f95f3e43be48ddd0ec9cbe894563ea7c87 100644 --- a/src/UI/DocumentViews/TimingView.hh +++ b/src/UI/DocumentViews/TimingView.hh @@ -26,7 +26,7 @@ public: static inline constexpr QColor startColour = QColor(127, 0, 127); static inline constexpr QColor endColour = QColor(0, 127, 0); - explicit TimingView(QImage, qreal, QWidget * = nullptr) noexcept; + explicit TimingView(QImage, quint64, QWidget * = nullptr) noexcept; ~TimingView() noexcept = default; TimingScene* getTimingScene() const;