OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. | 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 { | 94 { |
95 eob = i; /* last nonzero coeffs */ | 95 eob = i; /* last nonzero coeffs */ |
96 zbin_boost_ptr = b->zrun_zbin_boost; /* reset zero runlength */ | 96 zbin_boost_ptr = b->zrun_zbin_boost; /* reset zero runlength */ |
97 } | 97 } |
98 } | 98 } |
99 } | 99 } |
100 | 100 |
101 *d->eob = (char)(eob + 1); | 101 *d->eob = (char)(eob + 1); |
102 } | 102 } |
103 | 103 |
104 void vp8_quantize_mby_c(MACROBLOCK *x) | 104 void vp8_quantize_mby(MACROBLOCK *x) |
105 { | 105 { |
106 int i; | 106 int i; |
107 int has_2nd_order = (x->e_mbd.mode_info_context->mbmi.mode != B_PRED | 107 int has_2nd_order = (x->e_mbd.mode_info_context->mbmi.mode != B_PRED |
108 && x->e_mbd.mode_info_context->mbmi.mode != SPLITMV); | 108 && x->e_mbd.mode_info_context->mbmi.mode != SPLITMV); |
109 | 109 |
110 for (i = 0; i < 16; i++) | 110 for (i = 0; i < 16; i++) |
111 x->quantize_b(&x->block[i], &x->e_mbd.block[i]); | 111 x->quantize_b(&x->block[i], &x->e_mbd.block[i]); |
112 | 112 |
113 if(has_2nd_order) | 113 if(has_2nd_order) |
114 x->quantize_b(&x->block[24], &x->e_mbd.block[24]); | 114 x->quantize_b(&x->block[24], &x->e_mbd.block[24]); |
115 } | 115 } |
116 | 116 |
117 void vp8_quantize_mb_c(MACROBLOCK *x) | 117 void vp8_quantize_mb(MACROBLOCK *x) |
118 { | 118 { |
119 int i; | 119 int i; |
120 int has_2nd_order=(x->e_mbd.mode_info_context->mbmi.mode != B_PRED | 120 int has_2nd_order=(x->e_mbd.mode_info_context->mbmi.mode != B_PRED |
121 && x->e_mbd.mode_info_context->mbmi.mode != SPLITMV); | 121 && x->e_mbd.mode_info_context->mbmi.mode != SPLITMV); |
122 | 122 |
123 for (i = 0; i < 24+has_2nd_order; i++) | 123 for (i = 0; i < 24+has_2nd_order; i++) |
124 x->quantize_b(&x->block[i], &x->e_mbd.block[i]); | 124 x->quantize_b(&x->block[i], &x->e_mbd.block[i]); |
125 } | 125 } |
126 | 126 |
127 | 127 |
128 void vp8_quantize_mbuv_c(MACROBLOCK *x) | 128 void vp8_quantize_mbuv(MACROBLOCK *x) |
129 { | 129 { |
130 int i; | 130 int i; |
131 | 131 |
132 for (i = 16; i < 24; i++) | 132 for (i = 16; i < 24; i++) |
133 x->quantize_b(&x->block[i], &x->e_mbd.block[i]); | 133 x->quantize_b(&x->block[i], &x->e_mbd.block[i]); |
134 } | 134 } |
135 | 135 |
136 /* quantize_b_pair function pointer in MACROBLOCK structure is set to one of | |
137 * these two C functions if corresponding optimized routine is not available. | |
138 * NEON optimized version implements currently the fast quantization for pair | |
139 * of blocks. */ | |
140 void vp8_regular_quantize_b_pair(BLOCK *b1, BLOCK *b2, BLOCKD *d1, BLOCKD *d2) | |
141 { | |
142 vp8_regular_quantize_b(b1, d1); | |
143 vp8_regular_quantize_b(b2, d2); | |
144 } | |
145 | |
146 void vp8_fast_quantize_b_pair_c(BLOCK *b1, BLOCK *b2, BLOCKD *d1, BLOCKD *d2) | |
147 { | |
148 vp8_fast_quantize_b_c(b1, d1); | |
149 vp8_fast_quantize_b_c(b2, d2); | |
150 } | |
151 | |
152 | |
153 static const int qrounding_factors[129] = | 136 static const int qrounding_factors[129] = |
154 { | 137 { |
155 48, 48, 48, 48, 48, 48, 48, 48, | 138 48, 48, 48, 48, 48, 48, 48, 48, |
156 48, 48, 48, 48, 48, 48, 48, 48, | 139 48, 48, 48, 48, 48, 48, 48, 48, |
157 48, 48, 48, 48, 48, 48, 48, 48, | 140 48, 48, 48, 48, 48, 48, 48, 48, |
158 48, 48, 48, 48, 48, 48, 48, 48, | 141 48, 48, 48, 48, 48, 48, 48, 48, |
159 48, 48, 48, 48, 48, 48, 48, 48, | 142 48, 48, 48, 48, 48, 48, 48, 48, |
160 48, 48, 48, 48, 48, 48, 48, 48, | 143 48, 48, 48, 48, 48, 48, 48, 48, |
161 48, 48, 48, 48, 48, 48, 48, 48, | 144 48, 48, 48, 48, 48, 48, 48, 48, |
162 48, 48, 48, 48, 48, 48, 48, 48, | 145 48, 48, 48, 48, 48, 48, 48, 48, |
(...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
577 mbd->segment_feature_data[MB_LVL_ALT_Q][0] = cpi->segment_feature_data[MB_LV
L_ALT_Q][0]; | 560 mbd->segment_feature_data[MB_LVL_ALT_Q][0] = cpi->segment_feature_data[MB_LV
L_ALT_Q][0]; |
578 mbd->segment_feature_data[MB_LVL_ALT_Q][1] = cpi->segment_feature_data[MB_LV
L_ALT_Q][1]; | 561 mbd->segment_feature_data[MB_LVL_ALT_Q][1] = cpi->segment_feature_data[MB_LV
L_ALT_Q][1]; |
579 mbd->segment_feature_data[MB_LVL_ALT_Q][2] = cpi->segment_feature_data[MB_LV
L_ALT_Q][2]; | 562 mbd->segment_feature_data[MB_LVL_ALT_Q][2] = cpi->segment_feature_data[MB_LV
L_ALT_Q][2]; |
580 mbd->segment_feature_data[MB_LVL_ALT_Q][3] = cpi->segment_feature_data[MB_LV
L_ALT_Q][3]; | 563 mbd->segment_feature_data[MB_LVL_ALT_Q][3] = cpi->segment_feature_data[MB_LV
L_ALT_Q][3]; |
581 | 564 |
582 /* quantizer has to be reinitialized for any delta_q changes */ | 565 /* quantizer has to be reinitialized for any delta_q changes */ |
583 if(update) | 566 if(update) |
584 vp8cx_init_quantizer(cpi); | 567 vp8cx_init_quantizer(cpi); |
585 | 568 |
586 } | 569 } |
OLD | NEW |