Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(121)

Side by Side Diff: source/libvpx/vp8/encoder/tokenize.c

Issue 232133009: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « source/libvpx/vp8/encoder/rdopt.c ('k') | source/libvpx/vp8/vp8_common.mk » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 const short *qcoeff_ptr; 206 const short *qcoeff_ptr;
207 ENTROPY_CONTEXT * a; 207 ENTROPY_CONTEXT * a;
208 ENTROPY_CONTEXT * l; 208 ENTROPY_CONTEXT * l;
209 int band, rc, v; 209 int band, rc, v;
210 int tmp1, tmp2; 210 int tmp1, tmp2;
211 211
212 b = xd->block; 212 b = xd->block;
213 /* Luma */ 213 /* Luma */
214 for (block = 0; block < 16; block++, b++) 214 for (block = 0; block < 16; block++, b++)
215 { 215 {
216 const int eob = *b->eob;
216 tmp1 = vp8_block2above[block]; 217 tmp1 = vp8_block2above[block];
217 tmp2 = vp8_block2left[block]; 218 tmp2 = vp8_block2left[block];
218 qcoeff_ptr = b->qcoeff; 219 qcoeff_ptr = b->qcoeff;
219 a = (ENTROPY_CONTEXT *)xd->above_context + tmp1; 220 a = (ENTROPY_CONTEXT *)xd->above_context + tmp1;
220 l = (ENTROPY_CONTEXT *)xd->left_context + tmp2; 221 l = (ENTROPY_CONTEXT *)xd->left_context + tmp2;
221 222
222 VP8_COMBINEENTROPYCONTEXTS(pt, *a, *l); 223 VP8_COMBINEENTROPYCONTEXTS(pt, *a, *l);
223 224
224 c = type ? 0 : 1; 225 c = type ? 0 : 1;
225 226
226 if(c >= *b->eob) 227 if(c >= eob)
227 { 228 {
228 /* c = band for this case */ 229 /* c = band for this case */
229 t->Token = DCT_EOB_TOKEN; 230 t->Token = DCT_EOB_TOKEN;
230 t->context_tree = cpi->common.fc.coef_probs [type] [c] [pt]; 231 t->context_tree = cpi->common.fc.coef_probs [type] [c] [pt];
231 t->skip_eob_node = 0; 232 t->skip_eob_node = 0;
232 233
233 ++x->coef_counts [type] [c] [pt] [DCT_EOB_TOKEN]; 234 ++x->coef_counts [type] [c] [pt] [DCT_EOB_TOKEN];
234 t++; 235 t++;
235 *tp = t; 236 *tp = t;
236 *a = *l = 0; 237 *a = *l = 0;
237 continue; 238 continue;
238 } 239 }
239 240
240 v = qcoeff_ptr[c]; 241 v = qcoeff_ptr[c];
241 242
242 t->Extra = vp8_dct_value_tokens_ptr[v].Extra; 243 t->Extra = vp8_dct_value_tokens_ptr[v].Extra;
243 token = vp8_dct_value_tokens_ptr[v].Token; 244 token = vp8_dct_value_tokens_ptr[v].Token;
244 t->Token = token; 245 t->Token = token;
245 246
246 t->context_tree = cpi->common.fc.coef_probs [type] [c] [pt]; 247 t->context_tree = cpi->common.fc.coef_probs [type] [c] [pt];
247 t->skip_eob_node = 0; 248 t->skip_eob_node = 0;
248 ++x->coef_counts [type] [c] [pt] [token]; 249 ++x->coef_counts [type] [c] [pt] [token];
249 pt = vp8_prev_token_class[token]; 250 pt = vp8_prev_token_class[token];
250 t++; 251 t++;
251 c++; 252 c++;
252 253
253 for (; c < *b->eob; c++) 254 assert(eob <= 16);
255 for (; c < eob; c++)
254 { 256 {
255 rc = vp8_default_zig_zag1d[c]; 257 rc = vp8_default_zig_zag1d[c];
256 band = vp8_coef_bands[c]; 258 band = vp8_coef_bands[c];
257 v = qcoeff_ptr[rc]; 259 v = qcoeff_ptr[rc];
258 260
259 t->Extra = vp8_dct_value_tokens_ptr[v].Extra; 261 t->Extra = vp8_dct_value_tokens_ptr[v].Extra;
260 token = vp8_dct_value_tokens_ptr[v].Token; 262 token = vp8_dct_value_tokens_ptr[v].Token;
261 263
262 t->Token = token; 264 t->Token = token;
263 t->context_tree = cpi->common.fc.coef_probs [type] [band] [pt]; 265 t->context_tree = cpi->common.fc.coef_probs [type] [band] [pt];
(...skipping 15 matching lines...) Expand all
279 281
280 t++; 282 t++;
281 } 283 }
282 *tp = t; 284 *tp = t;
283 *a = *l = 1; 285 *a = *l = 1;
284 } 286 }
285 287
286 /* Chroma */ 288 /* Chroma */
287 for (block = 16; block < 24; block++, b++) 289 for (block = 16; block < 24; block++, b++)
288 { 290 {
291 const int eob = *b->eob;
289 tmp1 = vp8_block2above[block]; 292 tmp1 = vp8_block2above[block];
290 tmp2 = vp8_block2left[block]; 293 tmp2 = vp8_block2left[block];
291 qcoeff_ptr = b->qcoeff; 294 qcoeff_ptr = b->qcoeff;
292 a = (ENTROPY_CONTEXT *)xd->above_context + tmp1; 295 a = (ENTROPY_CONTEXT *)xd->above_context + tmp1;
293 l = (ENTROPY_CONTEXT *)xd->left_context + tmp2; 296 l = (ENTROPY_CONTEXT *)xd->left_context + tmp2;
294 297
295 VP8_COMBINEENTROPYCONTEXTS(pt, *a, *l); 298 VP8_COMBINEENTROPYCONTEXTS(pt, *a, *l);
296 299
297 if(!(*b->eob)) 300 if(!eob)
298 { 301 {
299 /* c = band for this case */ 302 /* c = band for this case */
300 t->Token = DCT_EOB_TOKEN; 303 t->Token = DCT_EOB_TOKEN;
301 t->context_tree = cpi->common.fc.coef_probs [2] [0] [pt]; 304 t->context_tree = cpi->common.fc.coef_probs [2] [0] [pt];
302 t->skip_eob_node = 0; 305 t->skip_eob_node = 0;
303 306
304 ++x->coef_counts [2] [0] [pt] [DCT_EOB_TOKEN]; 307 ++x->coef_counts [2] [0] [pt] [DCT_EOB_TOKEN];
305 t++; 308 t++;
306 *tp = t; 309 *tp = t;
307 *a = *l = 0; 310 *a = *l = 0;
308 continue; 311 continue;
309 } 312 }
310 313
311 v = qcoeff_ptr[0]; 314 v = qcoeff_ptr[0];
312 315
313 t->Extra = vp8_dct_value_tokens_ptr[v].Extra; 316 t->Extra = vp8_dct_value_tokens_ptr[v].Extra;
314 token = vp8_dct_value_tokens_ptr[v].Token; 317 token = vp8_dct_value_tokens_ptr[v].Token;
315 t->Token = token; 318 t->Token = token;
316 319
317 t->context_tree = cpi->common.fc.coef_probs [2] [0] [pt]; 320 t->context_tree = cpi->common.fc.coef_probs [2] [0] [pt];
318 t->skip_eob_node = 0; 321 t->skip_eob_node = 0;
319 ++x->coef_counts [2] [0] [pt] [token]; 322 ++x->coef_counts [2] [0] [pt] [token];
320 pt = vp8_prev_token_class[token]; 323 pt = vp8_prev_token_class[token];
321 t++; 324 t++;
322 c = 1; 325 c = 1;
323 326
324 for (; c < *b->eob; c++) 327 assert(eob <= 16);
328 for (; c < eob; c++)
325 { 329 {
326 rc = vp8_default_zig_zag1d[c]; 330 rc = vp8_default_zig_zag1d[c];
327 band = vp8_coef_bands[c]; 331 band = vp8_coef_bands[c];
328 v = qcoeff_ptr[rc]; 332 v = qcoeff_ptr[rc];
329 333
330 t->Extra = vp8_dct_value_tokens_ptr[v].Extra; 334 t->Extra = vp8_dct_value_tokens_ptr[v].Extra;
331 token = vp8_dct_value_tokens_ptr[v].Token; 335 token = vp8_dct_value_tokens_ptr[v].Token;
332 336
333 t->Token = token; 337 t->Token = token;
334 t->context_tree = cpi->common.fc.coef_probs [2] [band] [pt]; 338 t->context_tree = cpi->common.fc.coef_probs [2] [band] [pt];
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 vpx_memset(x->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES)); 599 vpx_memset(x->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES));
596 vpx_memset(x->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES)); 600 vpx_memset(x->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES));
597 } 601 }
598 else 602 else
599 { 603 {
600 vpx_memset(x->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES)-1); 604 vpx_memset(x->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES)-1);
601 vpx_memset(x->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES)-1); 605 vpx_memset(x->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES)-1);
602 } 606 }
603 607
604 } 608 }
OLDNEW
« no previous file with comments | « source/libvpx/vp8/encoder/rdopt.c ('k') | source/libvpx/vp8/vp8_common.mk » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698