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:
parent
477dd2df60
commit
1ead0c6388
@ -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)
|
||||||
|
@ -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;\
|
||||||
|
Loading…
x
Reference in New Issue
Block a user