mirror of https://git.ffmpeg.org/ffmpeg.git
try direct mode MB after QPRD, slight PSNR/bitrate gain if b frames + QPRD
Originally committed as revision 7336 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
e825b5009f
commit
cb284d4b77
|
@ -5172,16 +5172,6 @@ static int encode_thread(AVCodecContext *c, void *arg){
|
|||
encode_mb_hq(s, &backup_s, &best_s, CANDIDATE_MB_TYPE_BIDIR, pb, pb2, tex_pb,
|
||||
&dmin, &next_block, 0, 0);
|
||||
}
|
||||
if(mb_type&CANDIDATE_MB_TYPE_DIRECT){
|
||||
int mx= s->b_direct_mv_table[xy][0];
|
||||
int my= s->b_direct_mv_table[xy][1];
|
||||
|
||||
s->mv_dir = MV_DIR_FORWARD | MV_DIR_BACKWARD | MV_DIRECT;
|
||||
s->mb_intra= 0;
|
||||
ff_mpeg4_set_direct_mv(s, mx, my);
|
||||
encode_mb_hq(s, &backup_s, &best_s, CANDIDATE_MB_TYPE_DIRECT, pb, pb2, tex_pb,
|
||||
&dmin, &next_block, mx, my);
|
||||
}
|
||||
if(mb_type&CANDIDATE_MB_TYPE_FORWARD_I){
|
||||
s->mv_dir = MV_DIR_FORWARD;
|
||||
s->mv_type = MV_TYPE_FIELD;
|
||||
|
@ -5280,10 +5270,20 @@ static int encode_thread(AVCodecContext *c, void *arg){
|
|||
}
|
||||
}
|
||||
}
|
||||
qp= best_s.qscale;
|
||||
s->current_picture.qscale_table[xy]= qp;
|
||||
}
|
||||
}
|
||||
if(mb_type&CANDIDATE_MB_TYPE_DIRECT){
|
||||
int mx= s->b_direct_mv_table[xy][0];
|
||||
int my= s->b_direct_mv_table[xy][1];
|
||||
|
||||
backup_s.dquant = 0;
|
||||
s->mv_dir = MV_DIR_FORWARD | MV_DIR_BACKWARD | MV_DIRECT;
|
||||
s->mb_intra= 0;
|
||||
ff_mpeg4_set_direct_mv(s, mx, my);
|
||||
encode_mb_hq(s, &backup_s, &best_s, CANDIDATE_MB_TYPE_DIRECT, pb, pb2, tex_pb,
|
||||
&dmin, &next_block, mx, my);
|
||||
}
|
||||
s->current_picture.qscale_table[xy]= best_s.qscale;
|
||||
|
||||
copy_context_after_encode(s, &best_s, -1);
|
||||
|
||||
|
|
Loading…
Reference in New Issue