diff options
Diffstat (limited to 'libavcodec/elbg.c')
-rw-r--r-- | libavcodec/elbg.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libavcodec/elbg.c b/libavcodec/elbg.c index ac5c53161d..9eac802688 100644 --- a/libavcodec/elbg.c +++ b/libavcodec/elbg.c @@ -466,12 +466,17 @@ static int init_elbg(int *points, int dim, int numpoints, int *codebook, return ret; } -int avpriv_do_elbg(int *points, int dim, int numpoints, +int avpriv_elbg_do(ELBGContext **elbgp, int *points, int dim, int numpoints, int *codebook, int num_cb, int max_steps, int *closest_cb, AVLFG *rand_state) { + ELBGContext *const elbg = *elbgp ? *elbgp : av_mallocz(sizeof(*elbg)); int ret; + if (!elbg) + return AVERROR(ENOMEM); + *elbgp = elbg; + ret = init_elbg(points, dim, numpoints, codebook, num_cb, max_steps, closest_cb, rand_state); if (ret < 0) @@ -479,3 +484,8 @@ int avpriv_do_elbg(int *points, int dim, int numpoints, return do_elbg (points, dim, numpoints, codebook, num_cb, max_steps, closest_cb, rand_state); } + +av_cold void avpriv_elbg_free(ELBGContext **elbgp) +{ + av_freep(elbgp); +} |