comparison h264_loopfilter.c @ 10947:df6bda2aa59a libavcodec

Set bS with 64bits at a time.
author michael
date Wed, 20 Jan 2010 01:38:32 +0000
parents 5a23fa01dec1
children c80f0dfbf47d
comparison
equal deleted inserted replaced
10946:5a23fa01dec1 10947:df6bda2aa59a
457 int i, j; 457 int i, j;
458 int16_t bS[4]; 458 int16_t bS[4];
459 459
460 for(j=0; j<2; j++, mbn_xy += s->mb_stride){ 460 for(j=0; j<2; j++, mbn_xy += s->mb_stride){
461 if( IS_INTRA(mb_type|s->current_picture.mb_type[mbn_xy]) ) { 461 if( IS_INTRA(mb_type|s->current_picture.mb_type[mbn_xy]) ) {
462 bS[0] = bS[1] = bS[2] = bS[3] = 3; 462 *(uint64_t*)bS= 0x0003000300030003ULL;
463 } else { 463 } else {
464 const uint8_t *mbn_nnz = h->non_zero_count[mbn_xy]; 464 const uint8_t *mbn_nnz = h->non_zero_count[mbn_xy];
465 for( i = 0; i < 4; i++ ) { 465 for( i = 0; i < 4; i++ ) {
466 if( h->non_zero_count_cache[scan8[0]+i] != 0 || 466 if( h->non_zero_count_cache[scan8[0]+i] != 0 ||
467 mbn_nnz[i+4+3*8] != 0 ) 467 mbn_nnz[i+4+3*8] != 0 )
507 } else { 507 } else {
508 int i, l; 508 int i, l;
509 int mv_done; 509 int mv_done;
510 510
511 if( edge & mask_edge ) { 511 if( edge & mask_edge ) {
512 bS[0] = bS[1] = bS[2] = bS[3] = 0; 512 *(uint64_t*)bS= 0;
513 mv_done = 1; 513 mv_done = 1;
514 } 514 }
515 else if( FRAME_MBAFF && IS_INTERLACED(mb_type ^ mbn_type)) { 515 else if( FRAME_MBAFF && IS_INTERLACED(mb_type ^ mbn_type)) {
516 bS[0] = bS[1] = bS[2] = bS[3] = 1; 516 *(uint64_t*)bS= 0x0001000100010001ULL;
517 mv_done = 1; 517 mv_done = 1;
518 } 518 }
519 else if( mask_par0 && (edge || (mbn_type & (MB_TYPE_16x16 | (MB_TYPE_8x16 >> dir)))) ) { 519 else if( mask_par0 && (edge || (mbn_type & (MB_TYPE_16x16 | (MB_TYPE_8x16 >> dir)))) ) {
520 int b_idx= 8 + 4 + edge * (dir ? 8:1); 520 int b_idx= 8 + 4 + edge * (dir ? 8:1);
521 int bn_idx= b_idx - (dir ? 8:1); 521 int bn_idx= b_idx - (dir ? 8:1);
639 int mb_qp, mbn0_qp, mbn1_qp; 639 int mb_qp, mbn0_qp, mbn1_qp;
640 int i; 640 int i;
641 first_vertical_edge_done = 1; 641 first_vertical_edge_done = 1;
642 642
643 if( IS_INTRA(mb_type) ) 643 if( IS_INTRA(mb_type) )
644 bS[0] = bS[1] = bS[2] = bS[3] = bS[4] = bS[5] = bS[6] = bS[7] = 4; 644 *(uint64_t*)&bS[0]=
645 *(uint64_t*)&bS[4]= 0x0004000400040004ULL;
645 else { 646 else {
646 for( i = 0; i < 8; i++ ) { 647 for( i = 0; i < 8; i++ ) {
647 int mbn_xy = MB_FIELD ? left_mb_xy[i>>2] : left_mb_xy[i&1]; 648 int mbn_xy = MB_FIELD ? left_mb_xy[i>>2] : left_mb_xy[i&1];
648 649
649 if( IS_INTRA( s->current_picture.mb_type[mbn_xy] ) ) 650 if( IS_INTRA( s->current_picture.mb_type[mbn_xy] ) )