Step size and arithmetic coding for delta quantization.

Example performance: 1.8% bit rate savings using
the AQ test mode aq-mode=4 :
./aomenc --codec=av1 --ivf --tile-columns=1 --tile-rows=1 \
                 --kf-max-dist=1000 --kf-min-dist=1000 --cpu-used=0 \
                 --passes=1 --threads=1 --lag-in-frames=0 \
                 --end-usage=q --limit=600 --cq-level=42 \
                 --aq-mode=4 --error-resilient=1 out.bits FourPeople_1280x720_60.y4m

Change-Id: Iba01cf2732a57f3c27481ac2a3c8fc37bb9e5533
This commit is contained in:
Thomas Davies
2016-09-05 16:51:31 +01:00
committed by Yaowu Xu
parent 07441165fe
commit f693610a1a
10 changed files with 177 additions and 75 deletions

View File

@@ -3515,6 +3515,7 @@ static size_t read_uncompressed_header(AV1Decoder *pbi,
}
}
cm->delta_q_res = 1;
if (segment_quantizer_active == 0) {
cm->delta_q_present_flag = aom_rb_read_bit(rb);
} else {
@@ -3522,6 +3523,7 @@ static size_t read_uncompressed_header(AV1Decoder *pbi,
}
if (cm->delta_q_present_flag) {
xd->prev_qindex = cm->base_qindex;
cm->delta_q_res = 1 << aom_rb_read_literal(rb, 2);
}
}
#endif
@@ -3724,6 +3726,11 @@ static int read_compressed_header(AV1Decoder *pbi, const uint8_t *data,
for (k = 0; k < SKIP_CONTEXTS; ++k)
av1_diff_update_prob(&r, &fc->skip_probs[k], ACCT_STR);
#if CONFIG_DELTA_Q
for (k = 0; k < DELTA_Q_CONTEXTS; ++k)
av1_diff_update_prob(&r, &fc->delta_q_prob[k], ACCT_STR);
#endif
if (cm->seg.enabled && cm->seg.update_map) {
if (cm->seg.temporal_update) {
for (k = 0; k < PREDICTION_PROBS; k++)