avcodec/rl: Remove nonstatic storage of RL tables

ff_rl_free() was added in 324e50ee95929a9491b855c5e15451145bd5d1ec,
but never used; nonstatic storage was not used long before that.

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
Andreas Rheinhardt 2020-12-08 19:44:02 +01:00
parent 477dd2df60
commit 1ead0c6388
2 changed files with 11 additions and 50 deletions

View File

@ -25,27 +25,16 @@
#include "rl.h" #include "rl.h"
void ff_rl_free(RLTable *rl) av_cold void ff_rl_init(RLTable *rl,
{ uint8_t static_store[2][2 * MAX_RUN + MAX_LEVEL + 3])
int i;
for (i = 0; i < 2; i++) {
av_freep(&rl->max_run[i]);
av_freep(&rl->max_level[i]);
av_freep(&rl->index_run[i]);
}
}
av_cold int ff_rl_init(RLTable *rl,
uint8_t static_store[2][2 * MAX_RUN + MAX_LEVEL + 3])
{ {
int8_t max_level[MAX_RUN + 1], max_run[MAX_LEVEL + 1]; int8_t max_level[MAX_RUN + 1], max_run[MAX_LEVEL + 1];
uint8_t index_run[MAX_RUN + 1]; uint8_t index_run[MAX_RUN + 1];
int last, run, level, start, end, i; int last, run, level, start, end, i;
/* If table is static, we can quit if rl->max_level[0] is not NULL */ /* If rl->max_level[0] is set, this RLTable has already been initialized */
if (static_store && rl->max_level[0]) if (rl->max_level[0])
return 0; return;
/* compute max_level[], max_run[] and index_run[] */ /* compute max_level[], max_run[] and index_run[] */
for (last = 0; last < 2; last++) { for (last = 0; last < 2; last++) {
@ -70,36 +59,13 @@ av_cold int ff_rl_init(RLTable *rl,
if (run > max_run[level]) if (run > max_run[level])
max_run[level] = run; max_run[level] = run;
} }
if (static_store) rl->max_level[last] = static_store[last];
rl->max_level[last] = static_store[last];
else {
rl->max_level[last] = av_malloc(MAX_RUN + 1);
if (!rl->max_level[last])
goto fail;
}
memcpy(rl->max_level[last], max_level, MAX_RUN + 1); memcpy(rl->max_level[last], max_level, MAX_RUN + 1);
if (static_store) rl->max_run[last] = static_store[last] + MAX_RUN + 1;
rl->max_run[last] = static_store[last] + MAX_RUN + 1;
else {
rl->max_run[last] = av_malloc(MAX_LEVEL + 1);
if (!rl->max_run[last])
goto fail;
}
memcpy(rl->max_run[last], max_run, MAX_LEVEL + 1); memcpy(rl->max_run[last], max_run, MAX_LEVEL + 1);
if (static_store) rl->index_run[last] = static_store[last] + MAX_RUN + MAX_LEVEL + 2;
rl->index_run[last] = static_store[last] + MAX_RUN + MAX_LEVEL + 2;
else {
rl->index_run[last] = av_malloc(MAX_RUN + 1);
if (!rl->index_run[last])
goto fail;
}
memcpy(rl->index_run[last], index_run, MAX_RUN + 1); memcpy(rl->index_run[last], index_run, MAX_RUN + 1);
} }
return 0;
fail:
ff_rl_free(rl);
return AVERROR(ENOMEM);
} }
av_cold void ff_rl_init_vlc(RLTable *rl, unsigned static_size) av_cold void ff_rl_init_vlc(RLTable *rl, unsigned static_size)

View File

@ -49,17 +49,12 @@ typedef struct RLTable {
} RLTable; } RLTable;
/** /**
* @param static_store static uint8_t array[2][2*MAX_RUN + MAX_LEVEL + 3] which will hold * @param static_store static uint8_t array[2][2*MAX_RUN + MAX_LEVEL + 3]
* the level and run tables, if this is NULL av_malloc() will be used * to hold the level and run tables.
*/ */
int ff_rl_init(RLTable *rl, uint8_t static_store[2][2*MAX_RUN + MAX_LEVEL + 3]); void ff_rl_init(RLTable *rl, uint8_t static_store[2][2*MAX_RUN + MAX_LEVEL + 3]);
void ff_rl_init_vlc(RLTable *rl, unsigned static_size); void ff_rl_init_vlc(RLTable *rl, unsigned static_size);
/**
* Free the contents of a dynamically allocated table.
*/
void ff_rl_free(RLTable *rl);
#define INIT_VLC_RL(rl, static_size)\ #define INIT_VLC_RL(rl, static_size)\
{\ {\
int q;\ int q;\