Browse code

100l (forget to reset me.skip for b frames)

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

Michael Niedermayer authored on 2003/08/27 07:26:18
Showing 2 changed files
... ...
@@ -28,6 +28,7 @@
28 28
  
29 29
 #include <stdlib.h>
30 30
 #include <stdio.h>
31
+#include <limits.h>
31 32
 #include "avcodec.h"
32 33
 #include "dsputil.h"
33 34
 #include "mpegvideo.h"
... ...
@@ -1494,20 +1495,27 @@ void ff_estimate_b_frame_motion(MpegEncContext * s,
1494 1494
     int fmin, bmin, dmin, fbmin;
1495 1495
     int type=0;
1496 1496
     
1497
-    dmin= direct_search(s, mb_x, mb_y);
1497
+    s->me.skip=0;
1498
+    if (s->codec_id == CODEC_ID_MPEG4)
1499
+        dmin= direct_search(s, mb_x, mb_y);
1500
+    else
1501
+        dmin= INT_MAX;
1498 1502
 
1503
+    s->me.skip=0;
1499 1504
     fmin= ff_estimate_motion_b(s, mb_x, mb_y, s->b_forw_mv_table, &s->last_picture, s->f_code) + 3*penalty_factor;
1505
+    
1506
+    s->me.skip=0;
1500 1507
     bmin= ff_estimate_motion_b(s, mb_x, mb_y, s->b_back_mv_table, &s->next_picture, s->b_code) + 2*penalty_factor;
1501 1508
 //printf(" %d %d ", s->b_forw_mv_table[xy][0], s->b_forw_mv_table[xy][1]);
1502 1509
 
1510
+    s->me.skip=0;
1503 1511
     fbmin= bidir_refine(s, mb_x, mb_y) + penalty_factor;
1504 1512
 //printf("%d %d %d %d\n", dmin, fmin, bmin, fbmin);
1505 1513
     {
1506 1514
         int score= fmin;
1507 1515
         type = MB_TYPE_FORWARD;
1508 1516
         
1509
-        // RAL: No MB_TYPE_DIRECT in MPEG-1 video (only MPEG-4)
1510
-        if (s->codec_id == CODEC_ID_MPEG4 && dmin <= score){
1517
+        if (dmin <= score){
1511 1518
             score = dmin;
1512 1519
             type = MB_TYPE_DIRECT;
1513 1520
         }
... ...
@@ -29,15 +29,15 @@ stddev:  5.28 bytes:7602176
29 29
 242a7a18c2793e115007bc163861ef4e *./data/a-huffyuv.avi
30 30
 dde5895817ad9d219f79a52d0bdfb001 *./data/out.yuv
31 31
 stddev:  0.00 bytes:7602176
32
-2a9ee5a50073e3c5c25653f83d2b78ae *./data/a-mpeg4-rc.avi
33
-6851f0023a361b2b088d115f6d42d03e *./data/out.yuv
34
-stddev:  5.12 bytes:7145472
32
+794463e80f8de682591e13b82510f967 *./data/a-mpeg4-rc.avi
33
+25f3d554edf174034b5e484a7cfb04d3 *./data/out.yuv
34
+stddev:  4.32 bytes:7145472
35 35
 aeb300900461bdf9e0321934aa6dcc93 *./data/a-mpeg4-adv.avi
36 36
 e465df12f2c8a6492a6ec0b1bddc1d0d *./data/out.yuv
37 37
 stddev:  4.97 bytes:7602176
38
-2ec827a941ee8e82911280405987f8ef *./data/a-mpeg1b.mpg
39
-2935a090a88c74ccb220c18c1399cea7 *./data/out.yuv
40
-stddev:  4.69 bytes:6993920
38
+a7ab3fba8d7cd004b4809b5fe04e37d0 *./data/a-mpeg1b.mpg
39
+c9b8f923d91d6a574b0673e05fd2d6bd *./data/out.yuv
40
+stddev:  4.61 bytes:6993920
41 41
 e9218a1db885fe0262e88f9df630307d *./data/a-mjpeg.avi
42 42
 a365b4da246ad68caf96b702b7f961a1 *./data/out.yuv
43 43
 stddev:  4.76 bytes:7602176