indexmanager: moved files

This commit is contained in:
itsmattkc
2020-02-21 10:47:41 +11:00
parent 7797bf4971
commit 2e38e7e3fb
8 changed files with 6 additions and 6 deletions
+2
View File
@@ -32,6 +32,8 @@ set(OLIVE_SOURCES
render/backend/audiorenderbackend.cpp
render/backend/audiorenderworker.h
render/backend/audiorenderworker.cpp
render/backend/indexmanager.h
render/backend/indexmanager.cpp
render/backend/videorenderbackend.h
render/backend/videorenderbackend.cpp
+1 -1
View File
@@ -5,7 +5,7 @@
#include "audiorenderworker.h"
#include "common/filefunctions.h"
#include "render/indexmanager.h"
#include "render/backend/indexmanager.h"
AudioRenderBackend::AudioRenderBackend(QObject *parent) :
RenderBackend(parent)
+99
View File
@@ -0,0 +1,99 @@
#include "indexmanager.h"
#include "task/taskmanager.h"
IndexManager* IndexManager::instance_ = nullptr;
IndexManager::IndexManager()
{
}
void IndexManager::CreateInstance()
{
instance_ = new IndexManager();
}
IndexManager *IndexManager::instance()
{
return instance_;
}
void IndexManager::DestroyInstance()
{
delete instance_;
instance_ = nullptr;
}
void IndexManager::StartIndexingStream(StreamPtr stream)
{
if (IsIndexing(stream)) {
return;
}
IndexTask* index_task = new IndexTask(stream);
indexing_.append({stream, index_task});
connect(stream.get(), &Stream::IndexChanged, this, &IndexManager::StreamIndexUpdatedEvent, Qt::QueuedConnection);
connect(index_task, &IndexTask::Succeeded, this, &IndexManager::IndexTaskFinished, Qt::QueuedConnection);
TaskManager::instance()->AddTask(index_task);
}
void IndexManager::StartConformingStream(AudioStreamPtr stream, const AudioRenderingParams &params)
{
if (IsConforming(stream, params)) {
return;
}
ConformTask* conform_task = new ConformTask(stream, params);
conforming_.append({stream, params, conform_task});
connect(stream.get(), &AudioStream::ConformAppended, this, &IndexManager::StreamConformAppendedEvent, Qt::QueuedConnection);
connect(conform_task, &ConformTask::Succeeded, this, &IndexManager::IndexTaskFinished, Qt::QueuedConnection);
TaskManager::instance()->AddTask(conform_task);
}
bool IndexManager::IsIndexing(StreamPtr stream) const
{
foreach (const IndexPair& stp, indexing_) {
if (stp.stream == stream) {
return true;
}
}
return false;
}
bool IndexManager::IsConforming(AudioStreamPtr stream, const AudioRenderingParams &params) const
{
foreach (const ConformPair& cfp, conforming_) {
if (cfp.stream == stream && cfp.params == params) {
return true;
}
}
return false;
}
void IndexManager::IndexTaskFinished()
{
for (int i=0;i<indexing_.size();i++) {
const IndexPair& stp = indexing_.at(i);
if (stp.task == sender()) {
indexing_.removeAt(i);
return;
}
}
}
void IndexManager::StreamIndexUpdatedEvent()
{
emit StreamIndexUpdated(static_cast<Stream*>(sender()));
}
void IndexManager::StreamConformAppendedEvent(const AudioRenderingParams &params)
{
emit StreamConformAppended(static_cast<Stream*>(sender()), params);
}
+58
View File
@@ -0,0 +1,58 @@
#ifndef INDEXMANAGER_H
#define INDEXMANAGER_H
#include <QObject>
#include "project/item/footage/stream.h"
#include "task/conform/conform.h"
#include "task/index/index.h"
class IndexManager : public QObject
{
Q_OBJECT
public:
IndexManager();
static void CreateInstance();
static IndexManager* instance();
static void DestroyInstance();
bool IsIndexing(StreamPtr stream) const;
bool IsConforming(AudioStreamPtr stream, const AudioRenderingParams& params) const;
public slots:
void StartIndexingStream(StreamPtr stream);
void StartConformingStream(AudioStreamPtr stream, const AudioRenderingParams& params);
signals:
void StreamIndexUpdated(Stream* stream);
void StreamConformAppended(Stream* stream, const AudioRenderingParams& params);
private:
static IndexManager* instance_;
struct IndexPair {
StreamPtr stream;
IndexTask* task;
};
struct ConformPair {
StreamPtr stream;
AudioRenderingParams params;
ConformTask* task;
};
QList<IndexPair> indexing_;
QList<ConformPair> conforming_;
private slots:
void IndexTaskFinished();
void StreamIndexUpdatedEvent();
void StreamConformAppendedEvent(const AudioRenderingParams& params);
};
#endif // INDEXMANAGER_H
+1 -1
View File
@@ -4,7 +4,7 @@
#include <QThread>
#include "core.h"
#include "render/indexmanager.h"
#include "render/backend/indexmanager.h"
#include "window/mainwindow/mainwindow.h"
RenderBackend::RenderBackend(QObject *parent) :