Mercurial > libavcodec.hg
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 |