Originally committed as revision 1469 to svn://svn.ffmpeg.org/ffmpeg/trunk

Michael Niedermayer authored on 2003/01/18 10:37:42
Showing 4 changed files
... ...
@@ -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