comparison motion_est.c @ 2811:edc4fccb3bec libavcodec

motion vector limit for mpeg2
author michael
date Wed, 27 Jul 2005 13:16:35 +0000
parents 2b37bcabe608
children c6ab4b91a5c5
comparison
equal deleted inserted replaced
2810:b866af0c02d6 2811:edc4fccb3bec
1894 int i, y, range= s->avctx->me_range; 1894 int i, y, range= s->avctx->me_range;
1895 uint8_t * fcode_tab= s->fcode_tab; 1895 uint8_t * fcode_tab= s->fcode_tab;
1896 int best_fcode=-1; 1896 int best_fcode=-1;
1897 int best_score=-10000000; 1897 int best_score=-10000000;
1898 1898
1899 if(s->msmpeg4_version)
1900 range= FFMIN(range, 16);
1901 else if(s->codec_id == CODEC_ID_MPEG2VIDEO && s->avctx->strict_std_compliance >= FF_COMPLIANCE_NORMAL)
1902 range= FFMIN(range, 256);
1903
1899 for(i=0; i<8; i++) score[i]= s->mb_num*(8-i); 1904 for(i=0; i<8; i++) score[i]= s->mb_num*(8-i);
1900 1905
1901 for(y=0; y<s->mb_height; y++){ 1906 for(y=0; y<s->mb_height; y++){
1902 int x; 1907 int x;
1903 int xy= y*s->mb_stride; 1908 int xy= y*s->mb_stride;
1948 MotionEstContext * const c= &s->me; 1953 MotionEstContext * const c= &s->me;
1949 const int f_code= s->f_code; 1954 const int f_code= s->f_code;
1950 int y, range; 1955 int y, range;
1951 assert(s->pict_type==P_TYPE); 1956 assert(s->pict_type==P_TYPE);
1952 1957
1953 range = (((s->out_format == FMT_MPEG1) ? 8 : 16) << f_code); 1958 range = (((s->out_format == FMT_MPEG1 || s->msmpeg4_version) ? 8 : 16) << f_code);
1954 1959
1955 if(s->msmpeg4_version) range= 16; 1960 assert(range <= 16 || !s->msmpeg4_version);
1961 assert(range <=256 || !(s->codec_id == CODEC_ID_MPEG2VIDEO && s->avctx->strict_std_compliance >= FF_COMPLIANCE_NORMAL));
1956 1962
1957 if(c->avctx->me_range && range > c->avctx->me_range) range= c->avctx->me_range; 1963 if(c->avctx->me_range && range > c->avctx->me_range) range= c->avctx->me_range;
1958 1964
1959 //printf("%d no:%d %d//\n", clip, noclip, f_code); 1965 //printf("%d no:%d %d//\n", clip, noclip, f_code);
1960 if(s->flags&CODEC_FLAG_4MV){ 1966 if(s->flags&CODEC_FLAG_4MV){
1998 { 2004 {
1999 MotionEstContext * const c= &s->me; 2005 MotionEstContext * const c= &s->me;
2000 int y, h_range, v_range; 2006 int y, h_range, v_range;
2001 2007
2002 // RAL: 8 in MPEG-1, 16 in MPEG-4 2008 // RAL: 8 in MPEG-1, 16 in MPEG-4
2003 int range = (((s->out_format == FMT_MPEG1) ? 8 : 16) << f_code); 2009 int range = (((s->out_format == FMT_MPEG1 || s->msmpeg4_version) ? 8 : 16) << f_code);
2004 2010
2005 if(s->msmpeg4_version) range= 16;
2006 if(c->avctx->me_range && range > c->avctx->me_range) range= c->avctx->me_range; 2011 if(c->avctx->me_range && range > c->avctx->me_range) range= c->avctx->me_range;
2007 2012
2008 h_range= range; 2013 h_range= range;
2009 v_range= field_select_table ? range>>1 : range; 2014 v_range= field_select_table ? range>>1 : range;
2010 2015