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
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());
}
......@@ -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;
......
......@@ -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;
......
......@@ -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);
......
......@@ -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:
};
......
......@@ -22,9 +22,7 @@ public:
static inline constexpr QColor endColour = QColor(0, 127, 0);
explicit TimingView(QImage, AudioContext::StreamPtr, QWidget * = nullptr) noexcept;
~TimingView() noexcept = default;
TimingScene* getTimingScene() const;
~TimingView() noexcept override = default;
TimingScene* getTimingScene() const;
void wheelEvent(QWheelEvent *) noexcept override;
......
......@@ -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";
if (!document->checkDocumentCapabilities(VivyDocument::AudioAble))
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());
}
std::shared_ptr<AudioSubDocument> audioDocument = document->getAudioSubDocument();
AudioContext::StreamPtr stream = audioDocument->getDefaultStream();
// 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 (stream == nullptr) {
logError() << "Failed to get default audio stream";
return;
}
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