renderer: allow parameters to be changed mid-session

This commit is contained in:
itsmattkc
2020-01-22 14:05:37 +11:00
parent 8932a5abeb
commit fdbaa75dff
15 changed files with 118 additions and 32 deletions
+16 -1
View File
@@ -44,7 +44,7 @@ VideoRenderBackend::VideoRenderBackend(QObject *parent) :
bool VideoRenderBackend::InitInternal()
{
cache_frame_load_buffer_.resize(PixelService::GetBufferSize(params_.format(), params_.effective_width(), params_.effective_height()));
ResizeCacheLoadBuffer();
return true;
}
@@ -84,6 +84,12 @@ void VideoRenderBackend::SetParameters(const VideoRenderingParams& params)
// Set new parameters
params_ = params;
// Resize frame load buffer
ResizeCacheLoadBuffer();
// Handle custom events from derivatives
ParamsChangedEvent();
// Set params on all processors
foreach (RenderWorker* worker, processors_) {
static_cast<VideoRenderWorker*>(worker)->SetParameters(params_);
@@ -162,6 +168,10 @@ void VideoRenderBackend::InvalidateCacheInternal(const rational &start_range, co
Requeue();
}
void VideoRenderBackend::ParamsChangedEvent()
{
}
VideoRenderFrameCache *VideoRenderBackend::frame_cache()
{
return &frame_cache_;
@@ -406,3 +416,8 @@ void VideoRenderBackend::Requeue()
CacheNext();
}
void VideoRenderBackend::ResizeCacheLoadBuffer()
{
cache_frame_load_buffer_.resize(PixelService::GetBufferSize(params_.format(), params_.effective_width(), params_.effective_height()));
}