decoder/renderer: no longer index automatically as part of the retrieve

functions

Indexing is a lengthy process and had a high chance of getting RenderWorkers
stuck doing it rather than being responsive to cache requests. This commit
introduces a system where workers never index media, but instead signal that
media is not ready to their RenderBackends which ensure that the media gets
indexed and re-queues the affected frames when those indexes are ready.
This commit is contained in:
itsmattkc
2020-02-19 11:44:29 +11:00
parent 5e75e9b3b0
commit 03bdf01357
28 changed files with 461 additions and 197 deletions
+14 -1
View File
@@ -31,7 +31,7 @@ public:
void CancelQueue();
public slots:
void InvalidateCache(const rational &start_range, const rational &end_range);
void InvalidateCache(const TimeRange &range);
bool Compile();
@@ -145,6 +145,19 @@ private:
RenderCancelDialog* cancel_dialog_;
struct FootageWaitInfo {
StreamPtr stream;
TimeRange affected_range;
rational stream_time;
};
QList<FootageWaitInfo> footage_wait_info_;
private slots:
void FootageUnavailable(StreamPtr stream, Decoder::RetrieveState state, const TimeRange& path, const rational& stream_time);
void IndexUpdated(Stream *stream);
};
#endif // RENDERBACKEND_H