Mercurial > libavcodec.hg
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] ) ) |