| 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 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |