avcodec/proresenc_anatoliy: move run/lev to codebook LUT to shared proresdata

This is going to be shared with proresenc_kostya in the upcoming commit.
This commit is contained in:
Clément Bœsch 2023-12-11 01:07:16 +01:00
parent e940baa65b
commit 3ba52f18e4
3 changed files with 10 additions and 7 deletions

View File

@ -43,3 +43,9 @@ const uint8_t ff_prores_interlaced_scan[64] = {
30, 23, 31, 38, 45, 52, 60, 53,
46, 39, 47, 54, 61, 62, 55, 63
};
const uint8_t ff_prores_run_to_cb[16] = { 0x06, 0x06, 0x05, 0x05, 0x04, 0x29,
0x29, 0x29, 0x29, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x4C };
const uint8_t ff_prores_level_to_cb[10] = { 0x04, 0x0A, 0x05, 0x06, 0x04, 0x28,
0x28, 0x28, 0x28, 0x4C };

View File

@ -29,6 +29,8 @@
extern const uint8_t ff_prores_progressive_scan[64];
extern const uint8_t ff_prores_interlaced_scan[64];
extern const uint8_t ff_prores_run_to_cb[16];
extern const uint8_t ff_prores_level_to_cb[10];
#define FIRST_DC_CB 0xB8 // rice_order = 5, exp_golomb_order = 6, switch_bits = 0

View File

@ -296,11 +296,6 @@ static void encode_dc_coeffs(PutBitContext *pb, int16_t *in,
}
}
static const uint8_t run_to_cb[16] = { 0x06, 0x06, 0x05, 0x05, 0x04, 0x29,
0x29, 0x29, 0x29, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x4C };
static const uint8_t lev_to_cb[10] = { 0x04, 0x0A, 0x05, 0x06, 0x04, 0x28,
0x28, 0x28, 0x28, 0x4C };
static void encode_ac_coeffs(PutBitContext *pb,
int16_t *in, int blocks_per_slice, int *qmat, const uint8_t ff_prores_scan[64])
{
@ -313,14 +308,14 @@ static void encode_ac_coeffs(PutBitContext *pb,
for (j = 0; j < blocks_per_slice; j++) {
int val = QSCALE(qmat, indp, in[(j << 6) + indp]);
if (val) {
encode_codeword(pb, run, run_to_cb[FFMIN(prev_run, 15)]);
encode_codeword(pb, run, ff_prores_run_to_cb[FFMIN(prev_run, 15)]);
prev_run = run;
run = 0;
level = get_level(val);
code = level - 1;
encode_codeword(pb, code, lev_to_cb[FFMIN(prev_level, 9)]);
encode_codeword(pb, code, ff_prores_level_to_cb[FFMIN(prev_level, 9)]);
prev_level = level;