Fix subpel iteration counts with B-frame analysis and subme 6/8
authorFiona Glaser <fiona@x264.com>
Thu, 4 Feb 2010 02:36:44 +0000 (18:36 -0800)
committerFiona Glaser <fiona@x264.com>
Mon, 15 Feb 2010 08:27:53 +0000 (00:27 -0800)
Since subme 6 means "like subme 5, except RD on P-frames", B-frame analysis
shouldn't use the RD subpel counts at subme 6.  Similarly with subme 8.
Slightly faster (and very marginally worse) compression at subme 6 and 8.

encoder/analyse.c

index 96d95e53f3efff08f8313d2ec1f6431e9ef6ad9a..9d900733f17e08a96021072f3edf6a3aafd84c73 100644 (file)
@@ -362,6 +362,8 @@ static void x264_mb_analyse_init( x264_t *h, x264_mb_analysis_t *a, int i_qp )
 
     h->mb.i_me_method = h->param.analyse.i_me_method;
     h->mb.i_subpel_refine = h->param.analyse.i_subpel_refine;
+    if( h->sh.i_type == SLICE_TYPE_B && (h->mb.i_subpel_refine == 6 || h->mb.i_subpel_refine == 8) )
+        h->mb.i_subpel_refine--;
     h->mb.b_chroma_me = h->param.analyse.b_chroma_me && h->sh.i_type == SLICE_TYPE_P
                         && h->mb.i_subpel_refine >= 5;
     h->mb.b_dct_decimate = h->sh.i_type == SLICE_TYPE_B ||