Mercurial > libavcodec.hg
comparison h264.c @ 11349:33f8308382f5 libavcodec
Reorder indexes in weight tables.
5 cpu cycles faster.
author | michael |
---|---|
date | Wed, 03 Mar 2010 21:10:08 +0000 |
parents | 0fd8dca684c7 |
children | 2e9cf41e2c2e |
comparison
equal
deleted
inserted
replaced
11348:3c624d573966 | 11349:33f8308382f5 |
---|---|
493 luma_weight_avg( dest_y, tmp_y, h-> mb_linesize, 5, weight0, weight1, 0); | 493 luma_weight_avg( dest_y, tmp_y, h-> mb_linesize, 5, weight0, weight1, 0); |
494 chroma_weight_avg(dest_cb, tmp_cb, h->mb_uvlinesize, 5, weight0, weight1, 0); | 494 chroma_weight_avg(dest_cb, tmp_cb, h->mb_uvlinesize, 5, weight0, weight1, 0); |
495 chroma_weight_avg(dest_cr, tmp_cr, h->mb_uvlinesize, 5, weight0, weight1, 0); | 495 chroma_weight_avg(dest_cr, tmp_cr, h->mb_uvlinesize, 5, weight0, weight1, 0); |
496 }else{ | 496 }else{ |
497 luma_weight_avg(dest_y, tmp_y, h->mb_linesize, h->luma_log2_weight_denom, | 497 luma_weight_avg(dest_y, tmp_y, h->mb_linesize, h->luma_log2_weight_denom, |
498 h->luma_weight[0][refn0][0], h->luma_weight[1][refn1][0], | 498 h->luma_weight[refn0][0][0] , h->luma_weight[refn1][1][0], |
499 h->luma_weight[0][refn0][1] + h->luma_weight[1][refn1][1]); | 499 h->luma_weight[refn0][0][1] + h->luma_weight[refn1][1][1]); |
500 chroma_weight_avg(dest_cb, tmp_cb, h->mb_uvlinesize, h->chroma_log2_weight_denom, | 500 chroma_weight_avg(dest_cb, tmp_cb, h->mb_uvlinesize, h->chroma_log2_weight_denom, |
501 h->chroma_weight[0][refn0][0][0], h->chroma_weight[1][refn1][0][0], | 501 h->chroma_weight[refn0][0][0][0] , h->chroma_weight[refn1][1][0][0], |
502 h->chroma_weight[0][refn0][0][1] + h->chroma_weight[1][refn1][0][1]); | 502 h->chroma_weight[refn0][0][0][1] + h->chroma_weight[refn1][1][0][1]); |
503 chroma_weight_avg(dest_cr, tmp_cr, h->mb_uvlinesize, h->chroma_log2_weight_denom, | 503 chroma_weight_avg(dest_cr, tmp_cr, h->mb_uvlinesize, h->chroma_log2_weight_denom, |
504 h->chroma_weight[0][refn0][1][0], h->chroma_weight[1][refn1][1][0], | 504 h->chroma_weight[refn0][0][1][0] , h->chroma_weight[refn1][1][1][0], |
505 h->chroma_weight[0][refn0][1][1] + h->chroma_weight[1][refn1][1][1]); | 505 h->chroma_weight[refn0][0][1][1] + h->chroma_weight[refn1][1][1][1]); |
506 } | 506 } |
507 }else{ | 507 }else{ |
508 int list = list1 ? 1 : 0; | 508 int list = list1 ? 1 : 0; |
509 int refn = h->ref_cache[list][ scan8[n] ]; | 509 int refn = h->ref_cache[list][ scan8[n] ]; |
510 Picture *ref= &h->ref_list[list][refn]; | 510 Picture *ref= &h->ref_list[list][refn]; |
511 mc_dir_part(h, ref, n, square, chroma_height, delta, list, | 511 mc_dir_part(h, ref, n, square, chroma_height, delta, list, |
512 dest_y, dest_cb, dest_cr, x_offset, y_offset, | 512 dest_y, dest_cb, dest_cr, x_offset, y_offset, |
513 qpix_put, chroma_put); | 513 qpix_put, chroma_put); |
514 | 514 |
515 luma_weight_op(dest_y, h->mb_linesize, h->luma_log2_weight_denom, | 515 luma_weight_op(dest_y, h->mb_linesize, h->luma_log2_weight_denom, |
516 h->luma_weight[list][refn][0], h->luma_weight[list][refn][1]); | 516 h->luma_weight[refn][list][0], h->luma_weight[refn][list][1]); |
517 if(h->use_weight_chroma){ | 517 if(h->use_weight_chroma){ |
518 chroma_weight_op(dest_cb, h->mb_uvlinesize, h->chroma_log2_weight_denom, | 518 chroma_weight_op(dest_cb, h->mb_uvlinesize, h->chroma_log2_weight_denom, |
519 h->chroma_weight[list][refn][0][0], h->chroma_weight[list][refn][0][1]); | 519 h->chroma_weight[refn][list][0][0], h->chroma_weight[refn][list][0][1]); |
520 chroma_weight_op(dest_cr, h->mb_uvlinesize, h->chroma_log2_weight_denom, | 520 chroma_weight_op(dest_cr, h->mb_uvlinesize, h->chroma_log2_weight_denom, |
521 h->chroma_weight[list][refn][1][0], h->chroma_weight[list][refn][1][1]); | 521 h->chroma_weight[refn][list][1][0], h->chroma_weight[refn][list][1][1]); |
522 } | 522 } |
523 } | 523 } |
524 } | 524 } |
525 | 525 |
526 static inline void mc_part(H264Context *h, int n, int square, int chroma_height, int delta, | 526 static inline void mc_part(H264Context *h, int n, int square, int chroma_height, int delta, |
1366 for(i=0; i<h->ref_count[list]; i++){ | 1366 for(i=0; i<h->ref_count[list]; i++){ |
1367 int luma_weight_flag, chroma_weight_flag; | 1367 int luma_weight_flag, chroma_weight_flag; |
1368 | 1368 |
1369 luma_weight_flag= get_bits1(&s->gb); | 1369 luma_weight_flag= get_bits1(&s->gb); |
1370 if(luma_weight_flag){ | 1370 if(luma_weight_flag){ |
1371 h->luma_weight[list][i][0]= get_se_golomb(&s->gb); | 1371 h->luma_weight[i][list][0]= get_se_golomb(&s->gb); |
1372 h->luma_weight[list][i][1]= get_se_golomb(&s->gb); | 1372 h->luma_weight[i][list][1]= get_se_golomb(&s->gb); |
1373 if( h->luma_weight[list][i][0] != luma_def | 1373 if( h->luma_weight[i][list][0] != luma_def |
1374 || h->luma_weight[list][i][1] != 0) { | 1374 || h->luma_weight[i][list][1] != 0) { |
1375 h->use_weight= 1; | 1375 h->use_weight= 1; |
1376 h->luma_weight_flag[list]= 1; | 1376 h->luma_weight_flag[list]= 1; |
1377 } | 1377 } |
1378 }else{ | 1378 }else{ |
1379 h->luma_weight[list][i][0]= luma_def; | 1379 h->luma_weight[i][list][0]= luma_def; |
1380 h->luma_weight[list][i][1]= 0; | 1380 h->luma_weight[i][list][1]= 0; |
1381 } | 1381 } |
1382 | 1382 |
1383 if(CHROMA){ | 1383 if(CHROMA){ |
1384 chroma_weight_flag= get_bits1(&s->gb); | 1384 chroma_weight_flag= get_bits1(&s->gb); |
1385 if(chroma_weight_flag){ | 1385 if(chroma_weight_flag){ |
1386 int j; | 1386 int j; |
1387 for(j=0; j<2; j++){ | 1387 for(j=0; j<2; j++){ |
1388 h->chroma_weight[list][i][j][0]= get_se_golomb(&s->gb); | 1388 h->chroma_weight[i][list][j][0]= get_se_golomb(&s->gb); |
1389 h->chroma_weight[list][i][j][1]= get_se_golomb(&s->gb); | 1389 h->chroma_weight[i][list][j][1]= get_se_golomb(&s->gb); |
1390 if( h->chroma_weight[list][i][j][0] != chroma_def | 1390 if( h->chroma_weight[i][list][j][0] != chroma_def |
1391 || h->chroma_weight[list][i][j][1] != 0) { | 1391 || h->chroma_weight[i][list][j][1] != 0) { |
1392 h->use_weight_chroma= 1; | 1392 h->use_weight_chroma= 1; |
1393 h->chroma_weight_flag[list]= 1; | 1393 h->chroma_weight_flag[list]= 1; |
1394 } | 1394 } |
1395 } | 1395 } |
1396 }else{ | 1396 }else{ |
1397 int j; | 1397 int j; |
1398 for(j=0; j<2; j++){ | 1398 for(j=0; j<2; j++){ |
1399 h->chroma_weight[list][i][j][0]= chroma_def; | 1399 h->chroma_weight[i][list][j][0]= chroma_def; |
1400 h->chroma_weight[list][i][j][1]= 0; | 1400 h->chroma_weight[i][list][j][1]= 0; |
1401 } | 1401 } |
1402 } | 1402 } |
1403 } | 1403 } |
1404 } | 1404 } |
1405 if(h->slice_type_nos != FF_B_TYPE) break; | 1405 if(h->slice_type_nos != FF_B_TYPE) break; |