mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
avcodec/rl: Add analogue for ff_rl_init() without RLTable
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
65beba7889
commit
0486f0f5d2
@ -24,6 +24,23 @@
|
||||
|
||||
#include "rl.h"
|
||||
|
||||
av_cold void ff_rl_init_level_run(uint8_t max_level[MAX_LEVEL + 1],
|
||||
uint8_t index_run[MAX_RUN + 1],
|
||||
const uint8_t table_run[/* n */],
|
||||
const uint8_t table_level[/* n*/],
|
||||
int n)
|
||||
{
|
||||
memset(index_run, n, MAX_RUN + 1);
|
||||
for (int i = 0; i < n; i++) {
|
||||
int run = table_run[i];
|
||||
int level = table_level[i];
|
||||
if (index_run[run] == n)
|
||||
index_run[run] = i;
|
||||
if (level > max_level[run])
|
||||
max_level[run] = level;
|
||||
}
|
||||
}
|
||||
|
||||
av_cold void ff_rl_init(RLTable *rl,
|
||||
uint8_t static_store[2][2 * MAX_RUN + MAX_LEVEL + 3])
|
||||
{
|
||||
|
@ -48,6 +48,16 @@ typedef struct RLTable {
|
||||
RL_VLC_ELEM *rl_vlc[32]; ///< decoding only
|
||||
} RLTable;
|
||||
|
||||
/**
|
||||
* Initialize max_level and index_run from table_run and table_level;
|
||||
* this is equivalent to initializing RLTable.max_level[0] and
|
||||
* RLTable.index_run[0] with ff_rl_init().
|
||||
*/
|
||||
void ff_rl_init_level_run(uint8_t max_level[MAX_LEVEL + 1],
|
||||
uint8_t index_run[MAX_RUN + 1],
|
||||
const uint8_t table_run[/* n */],
|
||||
const uint8_t table_level[/* n*/], int n);
|
||||
|
||||
/**
|
||||
* Initialize index_run, max_level and max_run from n, last, table_vlc,
|
||||
* table_run and table_level.
|
||||
|
Loading…
Reference in New Issue
Block a user