Mercurial > libavcodec.hg
comparison motion_est.c @ 691:199b324b2693 libavcodec
fixing variance scaling for b frames (messed adaptive quants up)
cliping too long MVs in b frames instead of setting them to 0
author | michaelni |
---|---|
date | Mon, 23 Sep 2002 15:16:09 +0000 |
parents | a1c69cb685b3 |
children | 7f0d502a42c5 |
comparison
equal
deleted
inserted
replaced
690:a1c69cb685b3 | 691:199b324b2693 |
---|---|
1544 } | 1544 } |
1545 if(fbmin<score){ | 1545 if(fbmin<score){ |
1546 score=fbmin; | 1546 score=fbmin; |
1547 type= MB_TYPE_BIDIR; | 1547 type= MB_TYPE_BIDIR; |
1548 } | 1548 } |
1549 score= (score*score)>>8; | 1549 score= (score*score + 128*256)>>16; |
1550 s->mc_mb_var_sum += score; | 1550 s->mc_mb_var_sum += score; |
1551 s->mc_mb_var[mb_y*s->mb_width + mb_x] = score; //FIXME use SSD | 1551 s->mc_mb_var[mb_y*s->mb_width + mb_x] = score; //FIXME use SSD |
1552 } | 1552 } |
1553 | 1553 |
1554 if(s->flags&CODEC_FLAG_HQ){ | 1554 if(s->flags&CODEC_FLAG_HQ){ |
1696 for(y=0; y<s->mb_height; y++){ | 1696 for(y=0; y<s->mb_height; y++){ |
1697 int x; | 1697 int x; |
1698 int xy= (y+1)* (s->mb_width+2)+1; | 1698 int xy= (y+1)* (s->mb_width+2)+1; |
1699 int i= y*s->mb_width; | 1699 int i= y*s->mb_width; |
1700 for(x=0; x<s->mb_width; x++){ | 1700 for(x=0; x<s->mb_width; x++){ |
1701 if(s->mb_type[i]&type){ | 1701 if( fcode_tab[mv_table[xy][0] + MAX_MV] > f_code |
1702 if( fcode_tab[mv_table[xy][0] + MAX_MV] > f_code | 1702 || fcode_tab[mv_table[xy][0] + MAX_MV] == 0){ |
1703 || fcode_tab[mv_table[xy][0] + MAX_MV] == 0 | 1703 if(mv_table[xy][0]>0) mv_table[xy][0]= (16<<f_code)-1; |
1704 || fcode_tab[mv_table[xy][1] + MAX_MV] > f_code | 1704 else mv_table[xy][0]= -(16<<f_code); |
1705 || fcode_tab[mv_table[xy][1] + MAX_MV] == 0 ){ | 1705 } |
1706 if(s->mb_type[i]&(~type)) s->mb_type[i] &= ~type; | 1706 if( fcode_tab[mv_table[xy][1] + MAX_MV] > f_code |
1707 else{ | 1707 || fcode_tab[mv_table[xy][1] + MAX_MV] == 0){ |
1708 mv_table[xy][0] = 0; | 1708 if(mv_table[xy][1]>0) mv_table[xy][1]= (16<<f_code)-1; |
1709 mv_table[xy][1] = 0; | 1709 else mv_table[xy][1]= -(16<<f_code); |
1710 //this is certainly bad FIXME | |
1711 } | |
1712 } | |
1713 } | 1710 } |
1714 xy++; | 1711 xy++; |
1715 i++; | 1712 i++; |
1716 } | 1713 } |
1717 } | 1714 } |