Originally committed as revision 1469 to svn://svn.ffmpeg.org/ffmpeg/trunk
Michael Niedermayer authored on 2003/01/18 10:37:42... | ... |
@@ -1894,10 +1894,11 @@ static int rd8x8_c(/*MpegEncContext*/ void *c, uint8_t *src1, uint8_t *src2, int |
1894 | 1894 |
run++; |
1895 | 1895 |
} |
1896 | 1896 |
i= scantable[last]; |
1897 |
- |
|
1898 |
- assert(level); |
|
1899 |
- |
|
1897 |
+ |
|
1900 | 1898 |
level= temp[i] + 64; |
1899 |
+ |
|
1900 |
+ assert(level - 64); |
|
1901 |
+ |
|
1901 | 1902 |
if((level&(~127)) == 0){ |
1902 | 1903 |
bits+= last_length[UNI_AC_ENC_INDEX(run, level)]; |
1903 | 1904 |
}else |
... | ... |
@@ -1,7 +1,7 @@ |
1 | 1 |
/* |
2 | 2 |
* Motion estimation |
3 | 3 |
* Copyright (c) 2000,2001 Fabrice Bellard. |
4 |
- * Copyright (c) 2002 Michael Niedermayer |
|
4 |
+ * Copyright (c) 2002-2003 Michael Niedermayer |
|
5 | 5 |
* |
6 | 6 |
* |
7 | 7 |
* This library is free software; you can redistribute it and/or |
... | ... |
@@ -313,6 +313,7 @@ static inline int get_penalty_factor(MpegEncContext *s, int type){ |
313 | 313 |
case FF_CMP_DCT: |
314 | 314 |
case FF_CMP_SATD: |
315 | 315 |
case FF_CMP_SSE: |
316 |
+ case FF_CMP_PSNR: |
|
316 | 317 |
return s->qscale*8; |
317 | 318 |
case FF_CMP_BIT: |
318 | 319 |
return 1; |
... | ... |
@@ -1030,7 +1031,7 @@ void ff_estimate_p_frame_motion(MpegEncContext * s, |
1030 | 1030 |
} |
1031 | 1031 |
#endif |
1032 | 1032 |
}else{ |
1033 |
- s->scene_change_score+= 20; |
|
1033 |
+ s->scene_change_score+= s->qscale; |
|
1034 | 1034 |
mb_type|= MB_TYPE_INTRA; |
1035 | 1035 |
mx = 0; |
1036 | 1036 |
my = 0; |
... | ... |
@@ -160,7 +160,7 @@ static int RENAME(hpel_motion_search)(MpegEncContext * s, |
160 | 160 |
|
161 | 161 |
if(s->avctx->me_cmp != s->avctx->me_sub_cmp){ |
162 | 162 |
CMP_HPEL(dmin, 0, 0, mx, my, size); |
163 |
- if(mx || my) |
|
163 |
+ if(mx || my || size>0) |
|
164 | 164 |
dmin += (mv_penalty[2*mx - pred_x] + mv_penalty[2*my - pred_y])*penalty_factor; |
165 | 165 |
} |
166 | 166 |
|
... | ... |
@@ -290,7 +290,7 @@ static int RENAME(qpel_motion_search)(MpegEncContext * s, |
290 | 290 |
|
291 | 291 |
if(s->avctx->me_cmp != s->avctx->me_sub_cmp){ |
292 | 292 |
CMP_QPEL(dmin, 0, 0, mx, my, size); |
293 |
- if(mx || my) |
|
293 |
+ if(mx || my || size>0) |
|
294 | 294 |
dmin += (mv_penalty[4*mx - pred_x] + mv_penalty[4*my - pred_y])*penalty_factor; |
295 | 295 |
} |
296 | 296 |
|
... | ... |
@@ -2592,7 +2592,7 @@ static void encode_mb(MpegEncContext *s, int motion_x, int motion_y) |
2592 | 2592 |
s->block_last_index[4]= |
2593 | 2593 |
s->block_last_index[5]= 0; |
2594 | 2594 |
s->block[4][0]= |
2595 |
- s->block[5][0]= 128; |
|
2595 |
+ s->block[5][0]= (1024 + s->c_dc_scale/2)/ s->c_dc_scale; |
|
2596 | 2596 |
} |
2597 | 2597 |
|
2598 | 2598 |
#ifdef CONFIG_ENCODERS |