|
|
|
@@ -971,7 +971,7 @@ void ff_estimate_p_frame_motion(MpegEncContext * s, |
|
|
|
int i_score= varc-500+(s->lambda2>>FF_LAMBDA_SHIFT)*20; |
|
|
|
c->scene_change_score+= ff_sqrt(p_score) - ff_sqrt(i_score); |
|
|
|
|
|
|
|
if (vard*2 + 200*256 > varc) |
|
|
|
if (vard*2 + 200*256 > varc && !s->intra_penalty) |
|
|
|
mb_type|= CANDIDATE_MB_TYPE_INTRA; |
|
|
|
if (varc*2 + 200*256 > vard || s->qscale > 24){ |
|
|
|
// if (varc*2 + 200*256 + 50*(s->lambda2>>FF_LAMBDA_SHIFT) > vard){ |
|
|
|
@@ -1040,7 +1040,7 @@ void ff_estimate_p_frame_motion(MpegEncContext * s, |
|
|
|
|
|
|
|
intra_score= s->mecc.mb_cmp[0](s, c->scratchpad, pix, s->linesize, 16); |
|
|
|
} |
|
|
|
intra_score += c->mb_penalty_factor*16; |
|
|
|
intra_score += c->mb_penalty_factor*16 + s->intra_penalty; |
|
|
|
|
|
|
|
if(intra_score < dmin){ |
|
|
|
mb_type= CANDIDATE_MB_TYPE_INTRA; |
|
|
|
@@ -1648,7 +1648,7 @@ int ff_get_best_fcode(MpegEncContext * s, int16_t (*mv_table)[2], int type) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void ff_fix_long_p_mvs(MpegEncContext * s) |
|
|
|
void ff_fix_long_p_mvs(MpegEncContext * s, int type) |
|
|
|
{ |
|
|
|
MotionEstContext * const c= &s->me; |
|
|
|
const int f_code= s->f_code; |
|
|
|
@@ -1682,8 +1682,8 @@ void ff_fix_long_p_mvs(MpegEncContext * s) |
|
|
|
if( mx >=range || mx <-range |
|
|
|
|| my >=range || my <-range){ |
|
|
|
s->mb_type[i] &= ~CANDIDATE_MB_TYPE_INTER4V; |
|
|
|
s->mb_type[i] |= CANDIDATE_MB_TYPE_INTRA; |
|
|
|
s->current_picture.mb_type[i] = CANDIDATE_MB_TYPE_INTRA; |
|
|
|
s->mb_type[i] |= type; |
|
|
|
s->current_picture.mb_type[i] = type; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|