Skip to content
Extraits de code Groupes Projets
Valider 20ab443f rédigé par Elliu's avatar Elliu
Parcourir les fichiers

Fix rebase from master

parent eafb95a5
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!29Improve timingView with display of the ASS lines
Pipeline #2398 réussi
...@@ -216,3 +216,10 @@ AudioStream::getDecodedDecalage() const noexcept ...@@ -216,3 +216,10 @@ AudioStream::getDecodedDecalage() const noexcept
constexpr size_t overlap = 128; // The overlap constexpr size_t overlap = 128; // The overlap
return getDecodedChunkSize() - overlap; return getDecodedChunkSize() - overlap;
} }
quint64
AudioStream::getLength() const noexcept
{
return quint64(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::microseconds(dataFormat->duration)).count());
}
...@@ -32,6 +32,7 @@ public: ...@@ -32,6 +32,7 @@ public:
// Some getters // Some getters
int getChannels() const noexcept; int getChannels() const noexcept;
int getSampleRate() const noexcept; int getSampleRate() const noexcept;
quint64 getLength() const noexcept;
qint64 getBitRate() const noexcept; qint64 getBitRate() const noexcept;
QJsonObject getProperties() const noexcept override; QJsonObject getProperties() const noexcept override;
......
...@@ -18,7 +18,7 @@ class TimingAxis final : public QGraphicsObject { ...@@ -18,7 +18,7 @@ class TimingAxis final : public QGraphicsObject {
public: public:
explicit TimingAxis(AudioContext::StreamPtr stream, int x0, int x1, int y) noexcept; explicit TimingAxis(AudioContext::StreamPtr stream, int x0, int x1, int y) noexcept;
~TimingAxis() noexcept = default; ~TimingAxis() noexcept override = default;
QRectF boundingRect() const override; QRectF boundingRect() const override;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
......
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
using namespace Vivy; using namespace Vivy;
TimingScene::TimingScene(QImage img_, quint64 soundLength_, QWidget *parent) noexcept
TimingScene::TimingScene(QWidget *parent) noexcept TimingScene::TimingScene(QWidget *parent) noexcept
: QGraphicsScene(parent) : QGraphicsScene(parent)
{ {
...@@ -57,7 +56,7 @@ void ...@@ -57,7 +56,7 @@ void
TimingScene::handleMousePressEventLine(QGraphicsSceneMouseEvent *event, Ass::LinePtr p) noexcept TimingScene::handleMousePressEventLine(QGraphicsSceneMouseEvent *event, Ass::LinePtr p) noexcept
{ {
QPointF pos = event->scenePos(); 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) { if (const auto &btn = event->button(); btn == Qt::LeftButton) {
p->setStart(time); p->setStart(time);
......
...@@ -37,12 +37,11 @@ public: ...@@ -37,12 +37,11 @@ public:
TimingAxis *getAxis(); TimingAxis *getAxis();
private: private:
inline quint64 timeFromPos(qreal x) const; quint64 timeFromPos(qreal x) const;
quint64 timeFromPos(quint64 x) const; quint64 timeFromPos(quint64 x) const;
void handleMousePressEventLine(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept; void handleMousePressEventLine(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept;
void handleMousePressEventSyl(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept; void handleMousePressEventSyl(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept;
void handleMousePressEventChar(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept; void handleMousePressEventChar(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept;
qreal timeFromPos(qreal x);
public slots: public slots:
}; };
......
...@@ -22,9 +22,7 @@ public: ...@@ -22,9 +22,7 @@ public:
static inline constexpr QColor endColour = QColor(0, 127, 0); static inline constexpr QColor endColour = QColor(0, 127, 0);
explicit TimingView(QImage, AudioContext::StreamPtr, QWidget * = nullptr) noexcept; explicit TimingView(QImage, AudioContext::StreamPtr, QWidget * = nullptr) noexcept;
~TimingView() noexcept = default; ~TimingView() noexcept override = default;
TimingScene* getTimingScene() const;
TimingScene* getTimingScene() const; TimingScene* getTimingScene() const;
void wheelEvent(QWheelEvent *) noexcept override; void wheelEvent(QWheelEvent *) noexcept override;
......
...@@ -126,31 +126,15 @@ VivyDocumentView::loadAssView() noexcept ...@@ -126,31 +126,15 @@ VivyDocumentView::loadAssView() noexcept
void void
VivyDocumentView::loadAudioView() noexcept VivyDocumentView::loadAudioView() noexcept
{ {
if (document->checkDocumentCapabilities(VivyDocument::AudioAble)) { if (!document->checkDocumentCapabilities(VivyDocument::AudioAble))
AudioContext::StreamPtr stream = document->getAudioStream();
if (stream == nullptr) {
qCritical() << "Failed to get default audio stream";
return; return;
}
if (!visualizer) {
visualizer = new QDockWidget("Visualizer", this);
visualizer->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Minimum); std::shared_ptr<AudioSubDocument> audioDocument = document->getAudioSubDocument();
visualizer->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::TopDockWidgetArea | AudioContext::StreamPtr stream = audioDocument->getDefaultStream();
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 if (stream == nullptr) {
// recover from it. logError() << "Failed to get default audio stream";
AudioVisualizer *visualizerInner = new AudioVisualizer(stream, visualizer); return;
visualizer->setWidget(visualizerInner);
visualizer->layout()->setAlignment(visualizerInner, Qt::AlignTop);
} }
if (!visualizer) { if (!visualizer) {
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter