From 4bcbe290f4583c1b85ca40b9e5fa943936abc860 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Wed, 19 Feb 2020 12:44:29 +1100 Subject: [PATCH] task: Created ConformTask so audio conforming can be done as a background process --- app/task/conform/conform.cpp | 28 ++++++++++++++++++++++++++++ app/task/conform/conform.h | 23 +++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 app/task/conform/conform.cpp create mode 100644 app/task/conform/conform.h diff --git a/app/task/conform/conform.cpp b/app/task/conform/conform.cpp new file mode 100644 index 000000000..24a8e17c8 --- /dev/null +++ b/app/task/conform/conform.cpp @@ -0,0 +1,28 @@ +#include "conform.h" + +#include "codec/decoder.h" + +ConformTask::ConformTask(AudioStreamPtr stream, const AudioRenderingParams& params) : + stream_(stream), + params_(params) +{ +} + +void ConformTask::Action() +{ + if (stream_->footage()->decoder().isEmpty()) { + emit Failed(QStringLiteral("Stream has no decoder")); + } else { + DecoderPtr decoder = Decoder::CreateFromID(stream_->footage()->decoder()); + + decoder->set_stream(stream_); + + connect(decoder.get(), &Decoder::IndexProgress, this, &ConformTask::ProgressChanged); + + decoder->Open(); + decoder->Conform(params_, &IsCancelled()); + decoder->Close(); + + emit Succeeded(); + } +} diff --git a/app/task/conform/conform.h b/app/task/conform/conform.h new file mode 100644 index 000000000..df80aa435 --- /dev/null +++ b/app/task/conform/conform.h @@ -0,0 +1,23 @@ +#ifndef CONFORMTASK_H +#define CONFORMTASK_H + +#include "project/item/footage/audiostream.h" +#include "render/audioparams.h" +#include "task/task.h" + +class ConformTask : public Task +{ +public: + ConformTask(AudioStreamPtr stream, const AudioRenderingParams& params); + +protected: + virtual void Action() override; + +private: + AudioStreamPtr stream_; + + AudioRenderingParams params_; + +}; + +#endif // CONFORMTASK_H