From: Dmitry Kovalev Date: Thu, 4 Apr 2013 19:10:39 +0000 (-0700) Subject: Simplifying get_delta_q function. X-Git-Tag: v1.3.0~1106^2~311^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=52128c5894b77dcde710aa606db6c3e3396fa1e9;p=libvpx Simplifying get_delta_q function. Change-Id: I3a1e9cc5c3ed5be01ff75a84a6c82ec02c75af9c --- diff --git a/vp9/decoder/vp9_decodframe.c b/vp9/decoder/vp9_decodframe.c index 8f634ddcf..b17ba290e 100644 --- a/vp9/decoder/vp9_decodframe.c +++ b/vp9/decoder/vp9_decodframe.c @@ -901,22 +901,18 @@ static void decode_mb(VP9D_COMP *pbi, MACROBLOCKD *xd, #endif } +static int get_delta_q(vp9_reader *r, int *dq) { + const int old_value = *dq; -static int get_delta_q(vp9_reader *bc, int prev, int *q_update) { - int ret_val = 0; - - if (vp9_read_bit(bc)) { - ret_val = vp9_read_literal(bc, 4); - - if (vp9_read_bit(bc)) - ret_val = -ret_val; + if (vp9_read_bit(r)) { // Update bit + int value = vp9_read_literal(r, 4); + if (vp9_read_bit(r)) // Sign bit + value = -value; + *dq = value; } // Trigger a quantizer update if the delta-q value has changed - if (ret_val != prev) - *q_update = 1; - - return ret_val; + return old_value != *dq; } #ifdef PACKET_TESTING @@ -1716,9 +1712,9 @@ int vp9_decode_frame(VP9D_COMP *pbi, const uint8_t **p_data_end) { pc->base_qindex = vp9_read_literal(&header_bc, QINDEX_BITS); // AC 1st order Q = default - pc->y1dc_delta_q = get_delta_q(&header_bc, pc->y1dc_delta_q, &q_update); - pc->uvdc_delta_q = get_delta_q(&header_bc, pc->uvdc_delta_q, &q_update); - pc->uvac_delta_q = get_delta_q(&header_bc, pc->uvac_delta_q, &q_update); + q_update = get_delta_q(&header_bc, &pc->y1dc_delta_q) | + get_delta_q(&header_bc, &pc->uvdc_delta_q) | + get_delta_q(&header_bc, &pc->uvac_delta_q); if (q_update) vp9_init_de_quantizer(pbi);