[x265] [PATCH] motion: skip ME search if any of mvc sad cost iszero

gopu at multicorewareinc.com gopu at multicorewareinc.com
Tue Jun 30 11:37:50 CEST 2015


# HG changeset patch
# User Gopu Govindaswamy <gopu at multicorewareinc.com>
# Date 1435654760 -19800
#      Tue Jun 30 14:29:20 2015 +0530
# Node ID 0ef6f4e9d38f31d8f831f1f0b9f4321060c50072
# Parent  483c85f83f076732d8d196286218bbe7112c1c2c
motion: skip ME search if any of mvc sad cost iszero

this is an output changing commit and effects on the performance and quality
are below and the output not changing the many of the clips, output changed only
for animation clips

preset    clip                          fps     bitrate psnr    ssim
-----------------------------------------------------------------------
veryslow  ducks_take_off_420_720p50.y4m	1.42	6022.29	30.715	0.867116
slow      ducks_take_off_420_720p50.y4m	7.88	6038.35	30.639	0.864627
medium    ducks_take_off_420_720p50.y4m	25.67	6030.1	30.299	0.854118
veryfast  ducks_take_off_420_720p50.y4m	47.55	5974.51	29.951	0.840581
ultrafast ducks_take_off_420_720p50.y4m	94.23	6051.15	30.003	0.837419

veryslow  ParkScene_1920x1080_24.y4m	0.66	5616.22	40.114	0.952311
slow      ParkScene_1920x1080_24.y4m	4.44	5609.29	39.729	0.949371
medium    ParkScene_1920x1080_24.y4m	13.02	5602.15	39.325	0.945948
veryfast  ParkScene_1920x1080_24.y4m	24.76	5818.85	38.76	0.941318
ultrafast ParkScene_1920x1080_24.y4m	47.85	5823.47	38.142	0.929729

veryslow  crowd_run_1080p50.y4m	        0.72	5929.62	30.622	0.812728
slow      crowd_run_1080p50.y4m	        4.32	5933.85	30.274	0.802236
medium    crowd_run_1080p50.y4m	        13.54	5935.61	29.93	0.79162
veryfast  crowd_run_1080p50.y4m	        25.28	6046.02	29.299	0.765605
ultrafast crowd_run_1080p50.y4m	        44.94	6028.35	29.004	0.743116

veryslow  big_buck_bunny_360p24_2.y4m	1.57	7140.71	62.736	0.999442
slow      big_buck_bunny_360p24_2.y4m	10.48	7192.88	61.439	0.999278
medium    big_buck_bunny_360p24_2.y4m	31.46	7339.4	60.11	0.999082
veryfast  big_buck_bunny_360p24_2.y4m	94.43	7277.49	59.119	0.998966
ultrafast big_buck_bunny_360p24_2.y4m	200.4	7202.79	57.864	0.998493

veryslow  sintel_trailer_2k_480p24.y4m	1.18	7546.32	66.034	0.998991
slow      sintel_trailer_2k_480p24.y4m	6.56	7567.34	64.141	0.998634
medium    sintel_trailer_2k_480p24.y4m	26.85	7647.86	63.023	0.998453
veryfast  sintel_trailer_2k_480p24.y4m	57.52	8158.63	62.861	0.998296
ultrafast sintel_trailer_2k_480p24.y4m	120.99	6247.39	60.81	0.997574

After the code change
--------------------------

veryslow  ducks_take_off_420_720p50.y4m	1.39	6022.29	30.715	0.867116
slow      ducks_take_off_420_720p50.y4m	7.84	6038.35	30.639	0.864627
medium    ducks_take_off_420_720p50.y4m	25.8	6030.1	30.299	0.854118
veryfast  ducks_take_off_420_720p50.y4m	48.09	5974.51	29.951	0.840581
ultrafast ducks_take_off_420_720p50.y4m	96.04	6051.15	30.003	0.837419

veryslow  ParkScene_1920x1080_24.y4m	0.66	5616.22	40.114	0.952311
slow      ParkScene_1920x1080_24.y4m	4.42	5609.29	39.729	0.949371
medium    ParkScene_1920x1080_24.y4m	13	5602.15	39.325	0.945948
veryfast  ParkScene_1920x1080_24.y4m	24.84	5818.85	38.76	0.941318
ultrafast ParkScene_1920x1080_24.y4m	44.52	5823.47	38.142	0.929729

veryslow  crowd_run_1080p50.y4m	        0.73	5929.62	30.622	0.812728
slow      crowd_run_1080p50.y4m	        4.3	5933.85	30.274	0.802236
medium    crowd_run_1080p50.y4m	        13.75	5935.61	29.93	0.79162
veryfast  crowd_run_1080p50.y4m	        25.28	6046.02	29.299	0.765605
ultrafast crowd_run_1080p50.y4m	        43.97	6028.35	29.004	0.743116

veryslow  big_buck_bunny_360p24_2.y4m	1.56	7141.57	62.735	0.999442
slow      big_buck_bunny_360p24_2.y4m	10.56	7193.6	61.438	0.999278
medium    big_buck_bunny_360p24_2.y4m	33.68	7340.76	60.103	0.999078
veryfast  big_buck_bunny_360p24_2.y4m	95.28	7278.47	59.12	0.998965
ultrafast big_buck_bunny_360p24_2.y4m	202.43	7202.73	57.864	0.998493

veryslow  sintel_trailer_2k_480p24.y4m	1.21	7547.26	65.998	0.998989
slow      sintel_trailer_2k_480p24.y4m	6.58	7567.07	64.115	0.998633
medium    sintel_trailer_2k_480p24.y4m	26.8	7649.54	63.009	0.998454
veryfast  sintel_trailer_2k_480p24.y4m	57.47	8158.09	62.862	0.998297
ultrafast sintel_trailer_2k_480p24.y4m	121.14	6247.54	60.81	0.997574

diff -r 483c85f83f07 -r 0ef6f4e9d38f source/encoder/motion.cpp
--- a/source/encoder/motion.cpp	Mon Jun 29 12:18:38 2015 -0700
+++ b/source/encoder/motion.cpp	Tue Jun 30 14:29:20 2015 +0530
@@ -646,7 +646,17 @@
         MV m = mvc[i].clipped(qmvmin, qmvmax);
         if (m.notZero() && m != pmv && m != bestpre) // check already measured
         {
-            int cost = subpelCompare(ref, m, sad) + mvcost(m);
+            int cost = subpelCompare(ref, m, sad);
+            // skip ME Search if any of MVC sad cost is zero
+            if (!cost)
+            {
+                x265_emms();
+                outQMv = m;
+                return mvcost(m);
+            }
+            else
+                cost += mvcost(m);
+
             if (cost < bprecost)
             {
                 bprecost = cost;


More information about the x265-devel mailing list