Mercurial > libavcodec.hg
comparison h264_loopfilter.c @ 10984:541acd292c48 libavcodec
Remove all uses of slice_type* from the loop filter, also remove its
initialization befre the loop filter.
author | michael |
---|---|
date | Sun, 24 Jan 2010 13:20:17 +0000 |
parents | 776dba50775c |
children | 5e5d44c920b6 |
comparison
equal
deleted
inserted
replaced
10983:b97c4ad11022 | 10984:541acd292c48 |
---|---|
379 && (s->current_picture.mb_type[mb_xy-1] & (MB_TYPE_16x16 | MB_TYPE_8x16)) | 379 && (s->current_picture.mb_type[mb_xy-1] & (MB_TYPE_16x16 | MB_TYPE_8x16)) |
380 ? 3 : 0; | 380 ? 3 : 0; |
381 int step = IS_8x8DCT(mb_type) ? 2 : 1; | 381 int step = IS_8x8DCT(mb_type) ? 2 : 1; |
382 edges = (mb_type & MB_TYPE_16x16) && !(h->cbp & 15) ? 1 : 4; | 382 edges = (mb_type & MB_TYPE_16x16) && !(h->cbp & 15) ? 1 : 4; |
383 s->dsp.h264_loop_filter_strength( bS, h->non_zero_count_cache, h->ref_cache, h->mv_cache, | 383 s->dsp.h264_loop_filter_strength( bS, h->non_zero_count_cache, h->ref_cache, h->mv_cache, |
384 (h->slice_type_nos == FF_B_TYPE), edges, step, mask_edge0, mask_edge1, FIELD_PICTURE); | 384 h->list_count==2, edges, step, mask_edge0, mask_edge1, FIELD_PICTURE); |
385 } | 385 } |
386 if( IS_INTRA(s->current_picture.mb_type[mb_xy-1]) ) | 386 if( IS_INTRA(s->current_picture.mb_type[mb_xy-1]) ) |
387 bSv[0][0] = 0x0004000400040004ULL; | 387 bSv[0][0] = 0x0004000400040004ULL; |
388 if( IS_INTRA(s->current_picture.mb_type[h->top_mb_xy]) ) | 388 if( IS_INTRA(s->current_picture.mb_type[h->top_mb_xy]) ) |
389 bSv[1][0] = FIELD_PICTURE ? 0x0003000300030003ULL : 0x0004000400040004ULL; | 389 bSv[1][0] = FIELD_PICTURE ? 0x0003000300030003ULL : 0x0004000400040004ULL; |
511 else if( mask_par0 && (edge || (mbn_type & (MB_TYPE_16x16 | (MB_TYPE_8x16 >> dir)))) ) { | 511 else if( mask_par0 && (edge || (mbn_type & (MB_TYPE_16x16 | (MB_TYPE_8x16 >> dir)))) ) { |
512 int b_idx= 8 + 4 + edge * (dir ? 8:1); | 512 int b_idx= 8 + 4 + edge * (dir ? 8:1); |
513 int bn_idx= b_idx - (dir ? 8:1); | 513 int bn_idx= b_idx - (dir ? 8:1); |
514 int v = 0; | 514 int v = 0; |
515 | 515 |
516 for( l = 0; !v && l < 1 + (h->slice_type_nos == FF_B_TYPE); l++ ) { | 516 for( l = 0; !v && l < h->list_count; l++ ) { |
517 v |= h->ref_cache[l][b_idx] != h->ref_cache[l][bn_idx] | | 517 v |= h->ref_cache[l][b_idx] != h->ref_cache[l][bn_idx] | |
518 h->mv_cache[l][b_idx][0] - h->mv_cache[l][bn_idx][0] + 3 >= 7U | | 518 h->mv_cache[l][b_idx][0] - h->mv_cache[l][bn_idx][0] + 3 >= 7U | |
519 FFABS( h->mv_cache[l][b_idx][1] - h->mv_cache[l][bn_idx][1] ) >= mvy_limit; | 519 FFABS( h->mv_cache[l][b_idx][1] - h->mv_cache[l][bn_idx][1] ) >= mvy_limit; |
520 } | 520 } |
521 | 521 |
522 if(h->slice_type_nos == FF_B_TYPE && v){ | 522 if(h->list_count==2 && v){ |
523 v=0; | 523 v=0; |
524 for( l = 0; !v && l < 2; l++ ) { | 524 for( l = 0; !v && l < 2; l++ ) { |
525 int ln= 1-l; | 525 int ln= 1-l; |
526 v |= h->ref_cache[l][b_idx] != h->ref_cache[ln][bn_idx] | | 526 v |= h->ref_cache[l][b_idx] != h->ref_cache[ln][bn_idx] | |
527 h->mv_cache[l][b_idx][0] - h->mv_cache[ln][bn_idx][0] + 3 >= 7U | | 527 h->mv_cache[l][b_idx][0] - h->mv_cache[ln][bn_idx][0] + 3 >= 7U | |
546 bS[i] = 2; | 546 bS[i] = 2; |
547 } | 547 } |
548 else if(!mv_done) | 548 else if(!mv_done) |
549 { | 549 { |
550 bS[i] = 0; | 550 bS[i] = 0; |
551 for( l = 0; l < 1 + (h->slice_type_nos == FF_B_TYPE); l++ ) { | 551 for( l = 0; l < h->list_count; l++ ) { |
552 if( h->ref_cache[l][b_idx] != h->ref_cache[l][bn_idx] | | 552 if( h->ref_cache[l][b_idx] != h->ref_cache[l][bn_idx] | |
553 h->mv_cache[l][b_idx][0] - h->mv_cache[l][bn_idx][0] + 3 >= 7U | | 553 h->mv_cache[l][b_idx][0] - h->mv_cache[l][bn_idx][0] + 3 >= 7U | |
554 FFABS( h->mv_cache[l][b_idx][1] - h->mv_cache[l][bn_idx][1] ) >= mvy_limit ) { | 554 FFABS( h->mv_cache[l][b_idx][1] - h->mv_cache[l][bn_idx][1] ) >= mvy_limit ) { |
555 bS[i] = 1; | 555 bS[i] = 1; |
556 break; | 556 break; |
557 } | 557 } |
558 } | 558 } |
559 | 559 |
560 if(h->slice_type_nos == FF_B_TYPE && bS[i]){ | 560 if(h->list_count == 2 && bS[i]){ |
561 bS[i] = 0; | 561 bS[i] = 0; |
562 for( l = 0; l < 2; l++ ) { | 562 for( l = 0; l < 2; l++ ) { |
563 int ln= 1-l; | 563 int ln= 1-l; |
564 if( h->ref_cache[l][b_idx] != h->ref_cache[ln][bn_idx] | | 564 if( h->ref_cache[l][b_idx] != h->ref_cache[ln][bn_idx] | |
565 h->mv_cache[l][b_idx][0] - h->mv_cache[ln][bn_idx][0] + 3 >= 7U | | 565 h->mv_cache[l][b_idx][0] - h->mv_cache[ln][bn_idx][0] + 3 >= 7U | |