|
|
|
@ -106,7 +106,7 @@ typedef struct Plane { |
|
|
|
|
typedef struct SliceArgs { |
|
|
|
|
PutBitContext pb; |
|
|
|
|
int cache[DIRAC_MAX_QUANT_INDEX]; |
|
|
|
|
struct VC2EncContext *ctx; |
|
|
|
|
const struct VC2EncContext *ctx; |
|
|
|
|
int x; |
|
|
|
|
int y; |
|
|
|
|
int quant_idx; |
|
|
|
@ -116,7 +116,7 @@ typedef struct SliceArgs { |
|
|
|
|
} SliceArgs; |
|
|
|
|
|
|
|
|
|
typedef struct TransformArgs { |
|
|
|
|
struct VC2EncContext *ctx; |
|
|
|
|
const struct VC2EncContext *ctx; |
|
|
|
|
Plane *plane; |
|
|
|
|
const void *idata; |
|
|
|
|
ptrdiff_t istride; |
|
|
|
@ -527,8 +527,8 @@ static void encode_picture_start(VC2EncContext *s) |
|
|
|
|
#define QUANT(c, mul, add, shift) (((mul) * (c) + (add)) >> (shift)) |
|
|
|
|
|
|
|
|
|
/* VC-2 13.5.5.2 - slice_band() */ |
|
|
|
|
static void encode_subband(VC2EncContext *s, PutBitContext *pb, int sx, int sy, |
|
|
|
|
SubBand *b, int quant) |
|
|
|
|
static void encode_subband(const VC2EncContext *s, PutBitContext *pb, |
|
|
|
|
int sx, int sy, const SubBand *b, int quant) |
|
|
|
|
{ |
|
|
|
|
int x, y; |
|
|
|
|
|
|
|
|
@ -558,7 +558,7 @@ static int count_hq_slice(SliceArgs *slice, int quant_idx) |
|
|
|
|
int x, y; |
|
|
|
|
uint8_t quants[MAX_DWT_LEVELS][4]; |
|
|
|
|
int bits = 0, p, level, orientation; |
|
|
|
|
VC2EncContext *s = slice->ctx; |
|
|
|
|
const VC2EncContext *s = slice->ctx; |
|
|
|
|
|
|
|
|
|
if (slice->cache[quant_idx]) |
|
|
|
|
return slice->cache[quant_idx]; |
|
|
|
@ -576,7 +576,7 @@ static int count_hq_slice(SliceArgs *slice, int quant_idx) |
|
|
|
|
bits += 8; |
|
|
|
|
for (level = 0; level < s->wavelet_depth; level++) { |
|
|
|
|
for (orientation = !!level; orientation < 4; orientation++) { |
|
|
|
|
SubBand *b = &s->plane[p].band[level][orientation]; |
|
|
|
|
const SubBand *b = &s->plane[p].band[level][orientation]; |
|
|
|
|
|
|
|
|
|
const int q_idx = quants[level][orientation]; |
|
|
|
|
const uint64_t q_m = ((uint64_t)s->qmagic_lut[q_idx][0]) << 2; |
|
|
|
@ -618,7 +618,7 @@ static int count_hq_slice(SliceArgs *slice, int quant_idx) |
|
|
|
|
static int rate_control(AVCodecContext *avctx, void *arg) |
|
|
|
|
{ |
|
|
|
|
SliceArgs *slice_dat = arg; |
|
|
|
|
VC2EncContext *s = slice_dat->ctx; |
|
|
|
|
const VC2EncContext *s = slice_dat->ctx; |
|
|
|
|
const int top = slice_dat->bits_ceil; |
|
|
|
|
const int bottom = slice_dat->bits_floor; |
|
|
|
|
int quant_buf[2] = {-1, -1}; |
|
|
|
@ -724,7 +724,7 @@ static int calc_slice_sizes(VC2EncContext *s) |
|
|
|
|
static int encode_hq_slice(AVCodecContext *avctx, void *arg) |
|
|
|
|
{ |
|
|
|
|
SliceArgs *slice_dat = arg; |
|
|
|
|
VC2EncContext *s = slice_dat->ctx; |
|
|
|
|
const VC2EncContext *s = slice_dat->ctx; |
|
|
|
|
PutBitContext *pb = &slice_dat->pb; |
|
|
|
|
const int slice_x = slice_dat->x; |
|
|
|
|
const int slice_y = slice_dat->y; |
|
|
|
@ -839,7 +839,7 @@ static int encode_slices(VC2EncContext *s) |
|
|
|
|
static int dwt_plane(AVCodecContext *avctx, void *arg) |
|
|
|
|
{ |
|
|
|
|
TransformArgs *transform_dat = arg; |
|
|
|
|
VC2EncContext *s = transform_dat->ctx; |
|
|
|
|
const VC2EncContext *s = transform_dat->ctx; |
|
|
|
|
const void *frame_data = transform_dat->idata; |
|
|
|
|
const ptrdiff_t linesize = transform_dat->istride; |
|
|
|
|
const int field = transform_dat->field; |
|
|
|
|