openfx icon indicating copy to clipboard operation
openfx copied to clipboard

Render flag to cause plugins to fail a render if the plugin is unlicensed

Open barretpj opened this issue 7 months ago • 5 comments

Many plugins, when they cannot obtain a valid licence, simply burn a message into the output image. When this happens in final renders, it's a real pain because the user has no idea that it happened until the output fails visual checks.

Suggest we add a flag kOfxImageEffectPropFailWhenUnlicensed=true that can be set by the host. This flag would mean that the plugin should return a new error code kOfxStatUnlicensed from a Render action instead of rendering an image.

barretpj avatar Jun 16 '25 15:06 barretpj

Alternatively make it more general - a property that if set means a plugin must fail if it cannot produce a correct render for any reason - licensing, missing support files etc.

barretpj avatar Jun 16 '25 15:06 barretpj

We have environment variable for that here https://revisionfx.com/faq/how-are-floating-licenses-are-retrieved/

RVL_QUIT_LIC_FAIL

revisionfx avatar Jun 16 '25 17:06 revisionfx

I'm in favour of the new error code but I would want to render a watermarked frame as well. The host could discard it if they implement useful handling of kOfxStatUnlicensed. Also we could use that return code from other actions such as kOfxImageEffectActionBeginSequenceRender so that a host could abort the enter render if it was appropriate.

john-paulsmith avatar Sep 02 '25 15:09 john-paulsmith

Discussion: one option is hosts should only set the property (to false) in "final" or "background" renders, not during interactive sessions. Plugins, in that case, should always render something (e.g. watermark) before returning kOfxStatUnlicensed. If set to "true", plugin should just fail with kOfxStatUnlicensed and not bother rendering anything.

garyo avatar Nov 04 '25 17:11 garyo

Suggest we have a better property name with better values than "true" and "false". Maybe something like:

  • kOfxImageEffectPropBehaviourWhenUnlicensed not set: plug-in can do whatever it likes in an unlicensed state (fail or render an image), it returns kOfxStatOK if and only if it has rendered an image.
  • kOfxImageEffectPropBehaviourWhenUnlicensed set to kOfxUnlicensedContinue = "OfxUnlicensedContinue": if unlicensed, plug-in renders a image (typically watermarked or placeholder) and returns kOfxStatUnlicensed from kOfxImageEffectActionRender.
  • kOfxImageEffectPropBehaviourWhenUnlicensed set to kOfxUnlicensedFail = "OfxUnlicensedFail": if unlicensed, plug-in returns kOfxStatUnlicensed without rendering an image (because it knows the host will fail). It can return this from kOfxImageEffectActionBeginSequenceRender if it wishes, or just from kOfxImageEffectActionRender.

barretpj avatar Nov 04 '25 17:11 barretpj