fix ofx plugin bug

This commit is contained in:
2026-05-14 20:26:17 +08:00
parent 599c876d03
commit 43ba1c4642
3 changed files with 17 additions and 5 deletions
+2 -1
View File
@@ -40,9 +40,10 @@ public:
OliveClipInstance(OFX::Host::ImageEffect::Instance* effectInstance,
OFX::Host::ImageEffect::ClipDescriptor& desc,VideoParams &params)
: ClipInstance(effectInstance, desc)
, params_(params)
, defaultRegionOfDefinitions_{0, 0, 0, 0}
, name_(desc.getName())
{
params_ = params;
}
OFX::Host::ImageEffect::Image* getOutputImage(OfxTime time);
+7
View File
@@ -1043,6 +1043,13 @@ static olive::AVFramePtr ConvertFrameIfNeeded(olive::AVFramePtr src,
int src_ch;
GetOliveFormatFromAV(static_cast<AVPixelFormat>(src->format), &src_fmt, &src_ch);
if (src_fmt != olive::core::PixelFormat::INVALID && src_ch > 0) {
// Ensure renderer's OpenGL context is current before GPU operations.
// The context may have been switched by upstream DownloadFromTexture calls.
auto *gl_renderer = dynamic_cast<olive::OpenGLRenderer *>(renderer);
if (gl_renderer) {
gl_renderer->EnsureContextCurrent(__FUNCTION__);
}
olive::VideoParams src_vp(src->width, src->height, src_fmt, src_ch);
int src_bpp = olive::VideoParams::GetBytesPerPixel(src_fmt, src_ch);
int src_linesize_pixels = (src_bpp > 0) ? src->linesize[0] / src_bpp : src->width;
+8 -4
View File
@@ -239,8 +239,10 @@ void ViewerWidget::ConnectNodeEvent(ViewerOutput *n)
&ViewerWidget::UpdateTextureFromNode, Qt::QueuedConnection);
connect(n, &ViewerOutput::AudioParamsChanged, this,
&ViewerWidget::UpdateRendererAudioParameters);
connect(n->video_frame_cache(), &FrameHashCache::Invalidated, this,
&ViewerWidget::ViewerInvalidatedVideoRange);
if (FrameHashCache *cache = n->video_frame_cache()) {
connect(cache, &FrameHashCache::Invalidated, this,
&ViewerWidget::ViewerInvalidatedVideoRange);
}
connect(n, &ViewerOutput::TextureInputChanged, this,
&ViewerWidget::UpdateWaveformViewFromMode);
@@ -295,8 +297,10 @@ void ViewerWidget::DisconnectNodeEvent(ViewerOutput *n)
&ViewerWidget::UpdateTextureFromNode);
disconnect(n, &ViewerOutput::AudioParamsChanged, this,
&ViewerWidget::UpdateRendererAudioParameters);
disconnect(n->video_frame_cache(), &FrameHashCache::Invalidated, this,
&ViewerWidget::ViewerInvalidatedVideoRange);
if (FrameHashCache *cache = n->video_frame_cache()) {
disconnect(cache, &FrameHashCache::Invalidated, this,
&ViewerWidget::ViewerInvalidatedVideoRange);
}
disconnect(n, &ViewerOutput::TextureInputChanged, this,
&ViewerWidget::UpdateWaveformViewFromMode);