mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2026-06-16 04:32:47 +02:00
avfilter/af_lv2: call lilv_instance_activate before lilv_instance_run
Why: the change is done to comply with lilv expectations of hosts.
Added call lilv_instance_activate in the config_output function to abide by lilv documentation that states it must be called before lilv_instance_run:
"This MUST be called before calling lilv_instance_run()" - documentation source (https://github.com/lv2/lilv/blob/main/include/lilv/lilv.h)
Added call lilv_instance_deactivate in the uninit function to abide by lv2 documentation:
"If a host calls activate(), it MUST call deactivate() at some point in the future" - documentation source (https://gitlab.com/lv2/lv2/-/blob/main/include/lv2/core/lv2.h)
Added instance_activated integer to LV2Context struct to track if instance was activated and only do lilv_instance_deactivate if was activated to abide by lv2 documentation:
"Hosts MUST NOT call deactivate() unless activate() was previously called." - documentation source (https://gitlab.com/lv2/lv2/-/blob/main/include/lv2/core/lv2.h)
Regarding the patcheck warning (possibly constant :instance_activated):
This is a false positive since the struct member is zero-initialized.
Fixes: trac issue #11661 (https://trac.ffmpeg.org/ticket/11661)
Reported-by: Dave Flater
Signed-off-by: Karl Mogensen <karlmogensen0@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit fa281d1394)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
committed by
Michael Niedermayer
parent
2803bcd5d5
commit
0ce7bd66a7
@@ -74,6 +74,7 @@ typedef struct LV2Context {
|
||||
float *controls;
|
||||
|
||||
LilvInstance *instance;
|
||||
int instance_activated;
|
||||
|
||||
LilvNode *atom_AtomPort;
|
||||
LilvNode *atom_Sequence;
|
||||
@@ -387,6 +388,9 @@ static int config_output(AVFilterLink *outlink)
|
||||
inlink->min_samples = inlink->max_samples = 4096;
|
||||
}
|
||||
|
||||
lilv_instance_activate(s->instance);
|
||||
s->instance_activated = 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -562,6 +566,8 @@ static av_cold void uninit(AVFilterContext *ctx)
|
||||
{
|
||||
LV2Context *s = ctx->priv;
|
||||
|
||||
if (s->instance_activated)
|
||||
lilv_instance_deactivate(s->instance);
|
||||
lilv_node_free(s->powerOf2BlockLength);
|
||||
lilv_node_free(s->fixedBlockLength);
|
||||
lilv_node_free(s->boundedBlockLength);
|
||||
|
||||
Reference in New Issue
Block a user