mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-09-19 21:06:42 +00:00
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:
parent
e940baa65b
commit
3ba52f18e4
@ -43,3 +43,9 @@ const uint8_t ff_prores_interlaced_scan[64] = {
|
|||||||
30, 23, 31, 38, 45, 52, 60, 53,
|
30, 23, 31, 38, 45, 52, 60, 53,
|
||||||
46, 39, 47, 54, 61, 62, 55, 63
|
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 };
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
extern const uint8_t ff_prores_progressive_scan[64];
|
extern const uint8_t ff_prores_progressive_scan[64];
|
||||||
extern const uint8_t ff_prores_interlaced_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
|
#define FIRST_DC_CB 0xB8 // rice_order = 5, exp_golomb_order = 6, switch_bits = 0
|
||||||
|
|
||||||
|
@ -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,
|
static void encode_ac_coeffs(PutBitContext *pb,
|
||||||
int16_t *in, int blocks_per_slice, int *qmat, const uint8_t ff_prores_scan[64])
|
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++) {
|
for (j = 0; j < blocks_per_slice; j++) {
|
||||||
int val = QSCALE(qmat, indp, in[(j << 6) + indp]);
|
int val = QSCALE(qmat, indp, in[(j << 6) + indp]);
|
||||||
if (val) {
|
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;
|
prev_run = run;
|
||||||
run = 0;
|
run = 0;
|
||||||
level = get_level(val);
|
level = get_level(val);
|
||||||
code = level - 1;
|
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;
|
prev_level = level;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user