Browse code

fix constrained parameters flag

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

Michael Niedermayer authored on 2004/10/19 08:07:18
Showing 2 changed files
... ...
@@ -1882,7 +1882,7 @@ int ff_get_best_fcode(MpegEncContext * s, int16_t (*mv_table)[2], int type)
1882 1882
 {
1883 1883
     if(s->me_method>=ME_EPZS){
1884 1884
         int score[8];
1885
-        int i, y;
1885
+        int i, y, range= s->avctx->me_range;
1886 1886
         uint8_t * fcode_tab= s->fcode_tab;
1887 1887
         int best_fcode=-1;
1888 1888
         int best_score=-10000000;
... ...
@@ -1894,10 +1894,18 @@ int ff_get_best_fcode(MpegEncContext * s, int16_t (*mv_table)[2], int type)
1894 1894
             int xy= y*s->mb_stride;
1895 1895
             for(x=0; x<s->mb_width; x++){
1896 1896
                 if(s->mb_type[xy] & type){
1897
-                    int fcode= FFMAX(fcode_tab[mv_table[xy][0] + MAX_MV],
1898
-                                     fcode_tab[mv_table[xy][1] + MAX_MV]);
1897
+                    int mx= mv_table[xy][0];
1898
+                    int my= mv_table[xy][1];
1899
+                    int fcode= FFMAX(fcode_tab[mx + MAX_MV],
1900
+                                     fcode_tab[my + MAX_MV]);
1899 1901
                     int j;
1900 1902
                     
1903
+                    if(range){
1904
+                        if(mx >= range || mx < -range || 
1905
+                           my >= range || my < -range)
1906
+                            continue;
1907
+                    }
1908
+                    
1901 1909
                     for(j=0; j<fcode && j<8; j++){
1902 1910
                         if(s->pict_type==B_TYPE || s->current_picture.mc_mb_var[xy] < s->current_picture.mb_var[xy])
1903 1911
                             score[j]-= 170;
... ...
@@ -303,6 +303,7 @@ static void mpeg1_encode_sequence_header(MpegEncContext *s)
303 303
                 s->mb_width * s->mb_height <= 396 &&
304 304
                 s->mb_width * s->mb_height * framerate.num <= framerate.den*396*25 &&
305 305
                 framerate.num <= framerate.den*30 &&
306
+                s->avctx->me_range && s->avctx->me_range < 128 &&
306 307
                 vbv_buffer_size <= 20 &&
307 308
                 v <= 1856000/400 &&
308 309
                 s->codec_id == CODEC_ID_MPEG1VIDEO;