improved render channel count system

This commit is contained in:
itsmattkc
2020-11-15 22:16:40 +11:00
parent ee5307336e
commit 0d0766e4fb
83 changed files with 1017 additions and 1132 deletions
-9
View File
@@ -37,7 +37,6 @@
#include "config/config.h"
#include "project/item/sequence/sequence.h"
#include "project/project.h"
#include "render/pixelformat.h"
#include "render/rendermanager.h"
#include "task/taskmanager.h"
#include "widget/menu/menu.h"
@@ -113,9 +112,6 @@ ViewerWidget::ViewerWidget(QWidget *parent) :
connect(waveform_view_, &AudioWaveformView::TimeChanged, this, &ViewerWidget::TimeChangedFromWaveform);
connect(waveform_view_, &AudioWaveformView::customContextMenuRequested, this, &ViewerWidget::ShowContextMenu);
// Ensures renderer is updated if the global pixel format is changed
connect(PixelFormat::instance(), &PixelFormat::FormatChanged, this, &ViewerWidget::UpdateRendererVideoParameters);
connect(&playback_backup_timer_, &QTimer::timeout, this, &ViewerWidget::PlaybackTimerUpdate);
SetAutoMaxScrollBar(true);
@@ -616,11 +612,6 @@ void ViewerWidget::RequestNextFrameForQueue()
watcher->SetTicket(GetFrame(next_time, false));
}
PixelFormat::Format ViewerWidget::GetCurrentPixelFormat() const
{
return PixelFormat::instance()->GetConfiguredFormatForMode(RenderMode::kOffline);
}
RenderTicketPtr ViewerWidget::GetFrame(const rational &t, bool clear_render_queue)
{
QByteArray cached_hash = GetConnectedNode()->video_frame_cache()->GetHash(t);
-2
View File
@@ -191,8 +191,6 @@ private:
void RequestNextFrameForQueue();
PixelFormat::Format GetCurrentPixelFormat() const;
RenderTicketPtr GetFrame(const rational& t, bool clear_render_queue);
void FinishPlayPreprocess();
+5 -4
View File
@@ -31,9 +31,9 @@
#include "common/define.h"
#include "common/functiontimer.h"
#include "gizmotraverser.h"
#include "render/pixelformat.h"
#include "config/config.h"
#include "core.h"
#include "gizmotraverser.h"
OLIVE_NAMESPACE_ENTER
@@ -105,7 +105,8 @@ void ViewerDisplayWidget::SetImage(FramePtr in_buffer)
if (!texture_
|| texture_->width() != in_buffer->width()
|| texture_->height() != in_buffer->height()
|| texture_->format() != in_buffer->format()) {
|| texture_->format() != in_buffer->format()
|| texture_->channel_count() != in_buffer->channel_count()) {
texture_ = renderer()->CreateTexture(in_buffer->video_params(), in_buffer->data(), in_buffer->linesize_pixels());
} else {
texture_->Upload(in_buffer->data(), in_buffer->linesize_pixels());
@@ -299,7 +300,7 @@ void ViewerDisplayWidget::OnPaint()
// Draw texture through color transform
renderer()->BlitColorManaged(color_service(), texture_, true,
VideoParams(width(), height(), PixelFormat::PIX_FMT_RGBA16F),
VideoParams(width(), height(), static_cast<VideoParams::Format>(Config::Current()["OfflinePixelFormat"].toInt()), VideoParams::kInternalChannelCount),
GetCompleteMatrixFlippedYTranslation());
}