render: allow forcing channel count
This commit is contained in:
@@ -100,6 +100,7 @@ RenderTicketPtr RenderManager::RenderFrame(Node *node, const VideoParams &vparam
|
||||
QSize(0, 0),
|
||||
QMatrix4x4(),
|
||||
VideoParams::kFormatInvalid,
|
||||
0,
|
||||
nullptr,
|
||||
cache,
|
||||
return_type);
|
||||
@@ -110,6 +111,7 @@ RenderTicketPtr RenderManager::RenderFrame(Node *node, ColorManager* color_manag
|
||||
const VideoParams &video_params, const AudioParams &audio_params,
|
||||
const QSize& force_size,
|
||||
const QMatrix4x4& force_matrix, VideoParams::Format force_format,
|
||||
int force_channel_count,
|
||||
ColorProcessorPtr force_color_output,
|
||||
FrameHashCache* cache, ReturnType return_type)
|
||||
{
|
||||
@@ -121,6 +123,7 @@ RenderTicketPtr RenderManager::RenderFrame(Node *node, ColorManager* color_manag
|
||||
ticket->setProperty("size", force_size);
|
||||
ticket->setProperty("matrix", force_matrix);
|
||||
ticket->setProperty("format", force_format);
|
||||
ticket->setProperty("channelcount", force_channel_count);
|
||||
ticket->setProperty("mode", mode);
|
||||
ticket->setProperty("type", kTypeVideo);
|
||||
ticket->setProperty("colormanager", Node::PtrToValue(color_manager));
|
||||
|
||||
@@ -119,6 +119,7 @@ public:
|
||||
const VideoParams& video_params, const AudioParams& audio_params,
|
||||
const QSize& force_size,
|
||||
const QMatrix4x4& force_matrix, VideoParams::Format force_format,
|
||||
int force_channel_count,
|
||||
ColorProcessorPtr force_color_output,
|
||||
FrameHashCache* cache = nullptr, ReturnType return_type = kFrame);
|
||||
|
||||
|
||||
@@ -75,7 +75,12 @@ FramePtr RenderProcessor::GenerateFrame(TexturePtr texture, const rational& time
|
||||
frame_params.set_format(frame_format);
|
||||
}
|
||||
|
||||
frame_params.set_channel_count(texture ? texture->channel_count() : VideoParams::kRGBChannelCount);
|
||||
int force_channel_count = ticket_->property("channelcount").toInt();
|
||||
if (force_channel_count != 0) {
|
||||
frame_params.set_channel_count(force_channel_count);
|
||||
} else {
|
||||
frame_params.set_channel_count(texture ? texture->channel_count() : VideoParams::kRGBAChannelCount);
|
||||
}
|
||||
|
||||
FramePtr frame = Frame::Create();
|
||||
frame->set_timestamp(time);
|
||||
|
||||
@@ -162,7 +162,7 @@ bool ExportTask::Run()
|
||||
|
||||
Render(color_manager_, video_range, audio_range, subtitle_range, RenderMode::kOnline, nullptr,
|
||||
video_force_size, video_force_matrix, encoder_->GetDesiredPixelFormat(),
|
||||
color_processor_);
|
||||
VideoParams::kRGBAChannelCount, color_processor_);
|
||||
|
||||
bool success = true;
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ bool RenderTask::Render(ColorManager* manager,
|
||||
RenderMode::Mode mode,
|
||||
FrameHashCache* cache, const QSize &force_size,
|
||||
const QMatrix4x4 &force_matrix, VideoParams::Format force_format,
|
||||
ColorProcessorPtr force_color_output)
|
||||
int force_channel_count, ColorProcessorPtr force_color_output)
|
||||
{
|
||||
QMetaObject::invokeMethod(RenderManager::instance(), "SetAggressiveGarbageCollection", Q_ARG(bool, true));
|
||||
|
||||
@@ -88,7 +88,7 @@ bool RenderTask::Render(ColorManager* manager,
|
||||
|
||||
rational next_frame;
|
||||
for (int i=0; i<maximum_rendered_frames && iterator.GetNext(&next_frame); i++) {
|
||||
StartTicket(&watcher_thread, manager, next_frame, mode, cache, force_size, force_matrix, force_format, force_color_output);
|
||||
StartTicket(&watcher_thread, manager, next_frame, mode, cache, force_size, force_matrix, force_format, force_channel_count, force_color_output);
|
||||
}
|
||||
|
||||
bool result = true;
|
||||
@@ -199,7 +199,7 @@ bool RenderTask::Render(ColorManager* manager,
|
||||
}
|
||||
|
||||
if (iterator.GetNext(&next_frame)) {
|
||||
StartTicket(&watcher_thread, manager, next_frame, mode, cache, force_size, force_matrix, force_format, force_color_output);
|
||||
StartTicket(&watcher_thread, manager, next_frame, mode, cache, force_size, force_matrix, force_format, force_channel_count, force_color_output);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -282,7 +282,8 @@ void RenderTask::IncrementRunningTickets()
|
||||
void RenderTask::StartTicket(QThread* watcher_thread, ColorManager* manager,
|
||||
const rational& time, RenderMode::Mode mode, FrameHashCache* cache,
|
||||
const QSize &force_size, const QMatrix4x4 &force_matrix,
|
||||
VideoParams::Format force_format, ColorProcessorPtr force_color_output)
|
||||
VideoParams::Format force_format, int force_channel_count,
|
||||
ColorProcessorPtr force_color_output)
|
||||
{
|
||||
RenderTicketWatcher* watcher = new RenderTicketWatcher();
|
||||
watcher->setProperty("time", QVariant::fromValue(time));
|
||||
@@ -291,8 +292,8 @@ void RenderTask::StartTicket(QThread* watcher_thread, ColorManager* manager,
|
||||
watcher->SetTicket(RenderManager::instance()->RenderFrame(viewer_->GetConnectedTextureOutput(), manager, time,
|
||||
mode, video_params_, audio_params_,
|
||||
force_size, force_matrix,
|
||||
force_format, force_color_output,
|
||||
cache));
|
||||
force_format, force_channel_count,
|
||||
force_color_output, cache));
|
||||
}
|
||||
|
||||
void RenderTask::TicketDone(RenderTicketWatcher* watcher)
|
||||
|
||||
@@ -46,7 +46,7 @@ protected:
|
||||
FrameHashCache *cache, const QSize& force_size = QSize(0, 0),
|
||||
const QMatrix4x4& force_matrix = QMatrix4x4(),
|
||||
VideoParams::Format force_format = VideoParams::kFormatInvalid,
|
||||
ColorProcessorPtr force_color_output = nullptr);
|
||||
int force_channel_count = 0, ColorProcessorPtr force_color_output = nullptr);
|
||||
|
||||
virtual bool DownloadFrame(QThread* thread, FramePtr frame, const rational &time);
|
||||
|
||||
@@ -116,7 +116,7 @@ private:
|
||||
|
||||
void IncrementRunningTickets();
|
||||
|
||||
void StartTicket(QThread *watcher_thread, ColorManager *manager, const rational &time, RenderMode::Mode mode, FrameHashCache *cache, const QSize &force_size, const QMatrix4x4 &force_matrix, VideoParams::Format force_format, ColorProcessorPtr force_color_output);
|
||||
void StartTicket(QThread *watcher_thread, ColorManager *manager, const rational &time, RenderMode::Mode mode, FrameHashCache *cache, const QSize &force_size, const QMatrix4x4 &force_matrix, VideoParams::Format force_format, int force_channel_count, ColorProcessorPtr force_color_output);
|
||||
|
||||
ViewerOutput* viewer_;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user