<div dir="ltr">Pushed to the master branch</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jan 13, 2023 at 3:02 PM Kirithika Kalirathnam <<a href="mailto:kirithika@multicorewareinc.com">kirithika@multicorewareinc.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">From e3402211edcd19acf172d2597ff65890d7fc227e Mon Sep 17 00:00:00 2001<br>From: Kirithika <<a href="mailto:kirithika@multicorewareinc.com" target="_blank">kirithika@multicorewareinc.com</a>><br>Date: Thu, 12 Jan 2023 15:50:58 +0530<br>Subject: [PATCH] Add command line support for scene cut aware qp feature<br><br>This commit enables the scene cut aware qp feature through the command line parameters<br>--scenecut-aware-qp and --masking-strength.It doesn't disable the scenecut aware qp configuration via config file.<br>User can choose between either of these two ways to configure scenecut-aware-qp.<br>---<br> doc/reST/cli.rst        |   3 +-<br> source/CMakeLists.txt   |   2 +-<br> source/common/param.cpp | 290 ++++++++++++++++++++--------------------<br> source/common/param.h   |   1 +<br> 4 files changed, 151 insertions(+), 145 deletions(-)<br><br>diff --git a/doc/reST/cli.rst b/doc/reST/cli.rst<br>index f1d9fa36c..a98c860d0 100755<br>--- a/doc/reST/cli.rst<br>+++ b/doc/reST/cli.rst<br>@@ -1987,7 +1987,6 @@ Quality, rate control and rate distortion options<br>         It reduces the bits spent on the inter-frames within the scenecut window<br>     before and after a scenecut by increasing their QP in ratecontrol pass2 algorithm<br>    without any deterioration in visual quality.<br>- It is mentioned inside :option:`--scenecut-qp-config` file.<br>  :option:`--scenecut-aware-qp` works only with --pass 2. Default 0.<br> <br>       +-------+---------------------------------------------------------------+<br>@@ -2010,7 +2009,7 @@ Quality, rate control and rate distortion options<br> <br>       Comma separated list of values which specifies the duration and offset<br>       for the QP increment for inter-frames when :option:`--scenecut-aware-qp`<br>-     is enabled. It is mentioned inside :option:`--scenecut-qp-config` file.<br>+      is enabled.<br> <br>      When :option:`--scenecut-aware-qp` is:<br> <br>diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt<br>index 04ceea0ec..4c3274f63 100755<br>--- a/source/CMakeLists.txt<br>+++ b/source/CMakeLists.txt<br>@@ -29,7 +29,7 @@ option(NATIVE_BUILD "Target the build CPU" OFF)<br> option(STATIC_LINK_CRT "Statically link C runtime for release builds" OFF)<br> mark_as_advanced(FPROFILE_USE FPROFILE_GENERATE NATIVE_BUILD)<br> # X265_BUILD must be incremented each time the public API is changed<br>-set(X265_BUILD 206)<br>+set(X265_BUILD 207)<br> configure_file("${PROJECT_SOURCE_DIR}/<a href="http://x265.def.in" target="_blank">x265.def.in</a>"<br>                "${PROJECT_BINARY_DIR}/x265.def")<br> configure_file("${PROJECT_SOURCE_DIR}/<a href="http://x265_config.h.in" target="_blank">x265_config.h.in</a>"<br>diff --git a/source/common/param.cpp b/source/common/param.cpp<br>index fe85d8726..8c32fafa2 100755<br>--- a/source/common/param.cpp<br>+++ b/source/common/param.cpp<br>@@ -711,148 +711,7 @@ int x265_scenecut_aware_qp_param_parse(x265_param* p, const char* name, const ch<br> #define OPT(STR) else if (!strcmp(name, STR))<br>     if (0);<br>     OPT("scenecut-aware-qp") p->bEnableSceneCutAwareQp = x265_atoi(value, bError);<br>-    OPT("masking-strength")<br>-    {<br>-        int window1[6];<br>-        double refQpDelta1[6], nonRefQpDelta1[6];<br>-        if (p->bEnableSceneCutAwareQp == FORWARD)<br>-        {<br>-            if (3 == sscanf(value, "%d,%lf,%lf", &window1[0], &refQpDelta1[0], &nonRefQpDelta1[0]))<br>-            {<br>-                if (window1[0] > 0)<br>-                    p->fwdMaxScenecutWindow = window1[0];<br>-                if (refQpDelta1[0] > 0)<br>-                    p->fwdRefQpDelta[0] = refQpDelta1[0];<br>-                if (nonRefQpDelta1[0] > 0)<br>-                    p->fwdNonRefQpDelta[0] = nonRefQpDelta1[0];<br>-<br>-                p->fwdScenecutWindow[0] = p->fwdMaxScenecutWindow / 6;<br>-                for (int i = 1; i < 6; i++)<br>-                {<br>-                    p->fwdScenecutWindow[i] = p->fwdMaxScenecutWindow / 6;<br>-                    p->fwdRefQpDelta[i] = p->fwdRefQpDelta[i - 1] - (0.15 * p->fwdRefQpDelta[i - 1]);<br>-                    p->fwdNonRefQpDelta[i] = p->fwdNonRefQpDelta[i - 1] - (0.15 * p->fwdNonRefQpDelta[i - 1]);<br>-                }<br>-            }<br>-            else if (18 == sscanf(value, "%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf"<br>-                , &window1[0], &refQpDelta1[0], &nonRefQpDelta1[0], &window1[1], &refQpDelta1[1], &nonRefQpDelta1[1]<br>-                , &window1[2], &refQpDelta1[2], &nonRefQpDelta1[2], &window1[3], &refQpDelta1[3], &nonRefQpDelta1[3]<br>-                , &window1[4], &refQpDelta1[4], &nonRefQpDelta1[4], &window1[5], &refQpDelta1[5], &nonRefQpDelta1[5]))<br>-            {<br>-                p->fwdMaxScenecutWindow = 0;<br>-                for (int i = 0; i < 6; i++)<br>-                {<br>-                    p->fwdScenecutWindow[i] = window1[i];<br>-                    p->fwdRefQpDelta[i] = refQpDelta1[i];<br>-                    p->fwdNonRefQpDelta[i] = nonRefQpDelta1[i];<br>-                    p->fwdMaxScenecutWindow += p->fwdScenecutWindow[i];<br>-                }<br>-            }<br>-            else<br>-            {<br>-                x265_log(NULL, X265_LOG_ERROR, "Specify all the necessary offsets for masking-strength \n");<br>-                bError = true;<br>-            }<br>-        }<br>-        else if (p->bEnableSceneCutAwareQp == BACKWARD)<br>-        {<br>-            if (3 == sscanf(value, "%d,%lf,%lf", &window1[0], &refQpDelta1[0], &nonRefQpDelta1[0]))<br>-            {<br>-                if (window1[0] > 0)<br>-                    p->bwdMaxScenecutWindow = window1[0];<br>-                if (refQpDelta1[0] > 0)<br>-                    p->bwdRefQpDelta[0] = refQpDelta1[0];<br>-                if (nonRefQpDelta1[0] > 0)<br>-                    p->bwdNonRefQpDelta[0] = nonRefQpDelta1[0];<br>-<br>-                p->bwdScenecutWindow[0] = p->bwdMaxScenecutWindow / 6;<br>-                for (int i = 1; i < 6; i++)<br>-                {<br>-                    p->bwdScenecutWindow[i] = p->bwdMaxScenecutWindow / 6;<br>-                    p->bwdRefQpDelta[i] = p->bwdRefQpDelta[i - 1] - (0.15 * p->bwdRefQpDelta[i - 1]);<br>-                    p->bwdNonRefQpDelta[i] = p->bwdNonRefQpDelta[i - 1] - (0.15 * p->bwdNonRefQpDelta[i - 1]);<br>-                }<br>-            }<br>-            else if (18 == sscanf(value, "%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf"<br>-                , &window1[0], &refQpDelta1[0], &nonRefQpDelta1[0], &window1[1], &refQpDelta1[1], &nonRefQpDelta1[1]<br>-                , &window1[2], &refQpDelta1[2], &nonRefQpDelta1[2], &window1[3], &refQpDelta1[3], &nonRefQpDelta1[3]<br>-                , &window1[4], &refQpDelta1[4], &nonRefQpDelta1[4], &window1[5], &refQpDelta1[5], &nonRefQpDelta1[5]))<br>-            {<br>-                p->bwdMaxScenecutWindow = 0;<br>-                for (int i = 0; i < 6; i++)<br>-                {<br>-                    p->bwdScenecutWindow[i] = window1[i];<br>-                    p->bwdRefQpDelta[i] = refQpDelta1[i];<br>-                    p->bwdNonRefQpDelta[i] = nonRefQpDelta1[i];<br>-                    p->bwdMaxScenecutWindow += p->bwdScenecutWindow[i];<br>-                }<br>-            }<br>-            else<br>-            {<br>-                x265_log(NULL, X265_LOG_ERROR, "Specify all the necessary offsets for masking-strength \n");<br>-                bError = true;<br>-            }<br>-        }<br>-        else if (p->bEnableSceneCutAwareQp == BI_DIRECTIONAL)<br>-        {<br>-            int window2[6];<br>-            double refQpDelta2[6], nonRefQpDelta2[6];<br>-            if (6 == sscanf(value, "%d,%lf,%lf,%d,%lf,%lf", &window1[0], &refQpDelta1[0], &nonRefQpDelta1[0], &window2[0], &refQpDelta2[0], &nonRefQpDelta2[0]))<br>-            {<br>-                if (window1[0] > 0)<br>-                    p->fwdMaxScenecutWindow = window1[0];<br>-                if (refQpDelta1[0] > 0)<br>-                    p->fwdRefQpDelta[0] = refQpDelta1[0];<br>-                if (nonRefQpDelta1[0] > 0)<br>-                    p->fwdNonRefQpDelta[0] = nonRefQpDelta1[0];<br>-                if (window2[0] > 0)<br>-                    p->bwdMaxScenecutWindow = window2[0];<br>-                if (refQpDelta2[0] > 0)<br>-                    p->bwdRefQpDelta[0] = refQpDelta2[0];<br>-                if (nonRefQpDelta2[0] > 0)<br>-                    p->bwdNonRefQpDelta[0] = nonRefQpDelta2[0];<br>-<br>-                p->fwdScenecutWindow[0] = p->fwdMaxScenecutWindow / 6;<br>-                p->bwdScenecutWindow[0] = p->bwdMaxScenecutWindow / 6;<br>-                for (int i = 1; i < 6; i++)<br>-                {<br>-                    p->fwdScenecutWindow[i] = p->fwdMaxScenecutWindow / 6;<br>-                    p->bwdScenecutWindow[i] = p->bwdMaxScenecutWindow / 6;<br>-                    p->fwdRefQpDelta[i] = p->fwdRefQpDelta[i - 1] - (0.15 * p->fwdRefQpDelta[i - 1]);<br>-                    p->fwdNonRefQpDelta[i] = p->fwdNonRefQpDelta[i - 1] - (0.15 * p->fwdNonRefQpDelta[i - 1]);<br>-                    p->bwdRefQpDelta[i] = p->bwdRefQpDelta[i - 1] - (0.15 * p->bwdRefQpDelta[i - 1]);<br>-                    p->bwdNonRefQpDelta[i] = p->bwdNonRefQpDelta[i - 1] - (0.15 * p->bwdNonRefQpDelta[i - 1]);<br>-                }<br>-            }<br>-            else if (36 == sscanf(value, "%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf"<br>-                , &window1[0], &refQpDelta1[0], &nonRefQpDelta1[0], &window1[1], &refQpDelta1[1], &nonRefQpDelta1[1]<br>-                , &window1[2], &refQpDelta1[2], &nonRefQpDelta1[2], &window1[3], &refQpDelta1[3], &nonRefQpDelta1[3]<br>-                , &window1[4], &refQpDelta1[4], &nonRefQpDelta1[4], &window1[5], &refQpDelta1[5], &nonRefQpDelta1[5]<br>-                , &window2[0], &refQpDelta2[0], &nonRefQpDelta2[0], &window2[1], &refQpDelta2[1], &nonRefQpDelta2[1]<br>-                , &window2[2], &refQpDelta2[2], &nonRefQpDelta2[2], &window2[3], &refQpDelta2[3], &nonRefQpDelta2[3]<br>-                , &window2[4], &refQpDelta2[4], &nonRefQpDelta2[4], &window2[5], &refQpDelta2[5], &nonRefQpDelta2[5]))<br>-            {<br>-                p->fwdMaxScenecutWindow = 0;<br>-                p->bwdMaxScenecutWindow = 0;<br>-                for (int i = 0; i < 6; i++)<br>-                {<br>-                    p->fwdScenecutWindow[i] = window1[i];<br>-                    p->fwdRefQpDelta[i] = refQpDelta1[i];<br>-                    p->fwdNonRefQpDelta[i] = nonRefQpDelta1[i];<br>-                    p->bwdScenecutWindow[i] = window2[i];<br>-                    p->bwdRefQpDelta[i] = refQpDelta2[i];<br>-                    p->bwdNonRefQpDelta[i] = nonRefQpDelta2[i];<br>-                    p->fwdMaxScenecutWindow += p->fwdScenecutWindow[i];<br>-                    p->bwdMaxScenecutWindow += p->bwdScenecutWindow[i];<br>-                }<br>-            }<br>-            else<br>-            {<br>-                x265_log(NULL, X265_LOG_ERROR, "Specify all the necessary offsets for masking-strength \n");<br>-                bError = true;<br>-            }<br>-        }<br>-    }<br>+    OPT("masking-strength") bError = parseMaskingStrength(p, value);<br>     else<br>         return X265_PARAM_BAD_NAME;<br> #undef OPT<br>@@ -1534,6 +1393,8 @@ int x265_param_parse(x265_param* p, const char* name, const char* value)<br>             p->selectiveSAO = atoi(value);<br>         }<br>         OPT("fades") p->bEnableFades = atobool(value);<br>+        OPT("scenecut-aware-qp") p->bEnableSceneCutAwareQp = atoi(value);<br>+        OPT("masking-strength") bError |= parseMaskingStrength(p, value);<br>         OPT("field") p->bField = atobool( value );<br>         OPT("cll") p->bEmitCLL = atobool(value);<br>         OPT("frame-dup") p->bEnableFrameDuplication = atobool(value);<br>@@ -2548,6 +2409,151 @@ bool parseLambdaFile(x265_param* param)<br>     return false;<br> }<br> <br>+bool parseMaskingStrength(x265_param* p, const char* value)<br>+{<br>+    bool bError = false;<br>+    int window1[6];<br>+    double refQpDelta1[6], nonRefQpDelta1[6];<br>+    if (p->bEnableSceneCutAwareQp == FORWARD)<br>+    {<br>+        if (3 == sscanf(value, "%d,%lf,%lf", &window1[0], &refQpDelta1[0], &nonRefQpDelta1[0]))<br>+        {<br>+            if (window1[0] > 0)<br>+                p->fwdMaxScenecutWindow = window1[0];<br>+            if (refQpDelta1[0] > 0)<br>+                p->fwdRefQpDelta[0] = refQpDelta1[0];<br>+            if (nonRefQpDelta1[0] > 0)<br>+                p->fwdNonRefQpDelta[0] = nonRefQpDelta1[0];<br>+<br>+            p->fwdScenecutWindow[0] = p->fwdMaxScenecutWindow / 6;<br>+            for (int i = 1; i < 6; i++)<br>+            {<br>+                p->fwdScenecutWindow[i] = p->fwdMaxScenecutWindow / 6;<br>+                p->fwdRefQpDelta[i] = p->fwdRefQpDelta[i - 1] - (0.15 * p->fwdRefQpDelta[i - 1]);<br>+                p->fwdNonRefQpDelta[i] = p->fwdNonRefQpDelta[i - 1] - (0.15 * p->fwdNonRefQpDelta[i - 1]);<br>+            }<br>+        }<br>+        else if (18 == sscanf(value, "%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf"<br>+            , &window1[0], &refQpDelta1[0], &nonRefQpDelta1[0], &window1[1], &refQpDelta1[1], &nonRefQpDelta1[1]<br>+            , &window1[2], &refQpDelta1[2], &nonRefQpDelta1[2], &window1[3], &refQpDelta1[3], &nonRefQpDelta1[3]<br>+            , &window1[4], &refQpDelta1[4], &nonRefQpDelta1[4], &window1[5], &refQpDelta1[5], &nonRefQpDelta1[5]))<br>+        {<br>+            p->fwdMaxScenecutWindow = 0;<br>+            for (int i = 0; i < 6; i++)<br>+            {<br>+                p->fwdScenecutWindow[i] = window1[i];<br>+                p->fwdRefQpDelta[i] = refQpDelta1[i];<br>+                p->fwdNonRefQpDelta[i] = nonRefQpDelta1[i];<br>+                p->fwdMaxScenecutWindow += p->fwdScenecutWindow[i];<br>+            }<br>+        }<br>+        else<br>+        {<br>+            x265_log(NULL, X265_LOG_ERROR, "Specify all the necessary offsets for masking-strength \n");<br>+            bError = true;<br>+        }<br>+    }<br>+    else if (p->bEnableSceneCutAwareQp == BACKWARD)<br>+    {<br>+        if (3 == sscanf(value, "%d,%lf,%lf", &window1[0], &refQpDelta1[0], &nonRefQpDelta1[0]))<br>+        {<br>+            if (window1[0] > 0)<br>+                p->bwdMaxScenecutWindow = window1[0];<br>+            if (refQpDelta1[0] > 0)<br>+                p->bwdRefQpDelta[0] = refQpDelta1[0];<br>+            if (nonRefQpDelta1[0] > 0)<br>+                p->bwdNonRefQpDelta[0] = nonRefQpDelta1[0];<br>+<br>+            p->bwdScenecutWindow[0] = p->bwdMaxScenecutWindow / 6;<br>+            for (int i = 1; i < 6; i++)<br>+            {<br>+                p->bwdScenecutWindow[i] = p->bwdMaxScenecutWindow / 6;<br>+                p->bwdRefQpDelta[i] = p->bwdRefQpDelta[i - 1] - (0.15 * p->bwdRefQpDelta[i - 1]);<br>+                p->bwdNonRefQpDelta[i] = p->bwdNonRefQpDelta[i - 1] - (0.15 * p->bwdNonRefQpDelta[i - 1]);<br>+            }<br>+        }<br>+        else if (18 == sscanf(value, "%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf"<br>+            , &window1[0], &refQpDelta1[0], &nonRefQpDelta1[0], &window1[1], &refQpDelta1[1], &nonRefQpDelta1[1]<br>+            , &window1[2], &refQpDelta1[2], &nonRefQpDelta1[2], &window1[3], &refQpDelta1[3], &nonRefQpDelta1[3]<br>+            , &window1[4], &refQpDelta1[4], &nonRefQpDelta1[4], &window1[5], &refQpDelta1[5], &nonRefQpDelta1[5]))<br>+        {<br>+            p->bwdMaxScenecutWindow = 0;<br>+            for (int i = 0; i < 6; i++)<br>+            {<br>+                p->bwdScenecutWindow[i] = window1[i];<br>+                p->bwdRefQpDelta[i] = refQpDelta1[i];<br>+                p->bwdNonRefQpDelta[i] = nonRefQpDelta1[i];<br>+                p->bwdMaxScenecutWindow += p->bwdScenecutWindow[i];<br>+            }<br>+        }<br>+        else<br>+        {<br>+            x265_log(NULL, X265_LOG_ERROR, "Specify all the necessary offsets for masking-strength \n");<br>+            bError = true;<br>+        }<br>+    }<br>+    else if (p->bEnableSceneCutAwareQp == BI_DIRECTIONAL)<br>+    {<br>+        int window2[6];<br>+        double refQpDelta2[6], nonRefQpDelta2[6];<br>+        if (6 == sscanf(value, "%d,%lf,%lf,%d,%lf,%lf", &window1[0], &refQpDelta1[0], &nonRefQpDelta1[0], &window2[0], &refQpDelta2[0], &nonRefQpDelta2[0]))<br>+        {<br>+            if (window1[0] > 0)<br>+                p->fwdMaxScenecutWindow = window1[0];<br>+            if (refQpDelta1[0] > 0)<br>+                p->fwdRefQpDelta[0] = refQpDelta1[0];<br>+            if (nonRefQpDelta1[0] > 0)<br>+                p->fwdNonRefQpDelta[0] = nonRefQpDelta1[0];<br>+            if (window2[0] > 0)<br>+                p->bwdMaxScenecutWindow = window2[0];<br>+            if (refQpDelta2[0] > 0)<br>+                p->bwdRefQpDelta[0] = refQpDelta2[0];<br>+            if (nonRefQpDelta2[0] > 0)<br>+                p->bwdNonRefQpDelta[0] = nonRefQpDelta2[0];<br>+<br>+            p->fwdScenecutWindow[0] = p->fwdMaxScenecutWindow / 6;<br>+            p->bwdScenecutWindow[0] = p->bwdMaxScenecutWindow / 6;<br>+            for (int i = 1; i < 6; i++)<br>+            {<br>+                p->fwdScenecutWindow[i] = p->fwdMaxScenecutWindow / 6;<br>+                p->bwdScenecutWindow[i] = p->bwdMaxScenecutWindow / 6;<br>+                p->fwdRefQpDelta[i] = p->fwdRefQpDelta[i - 1] - (0.15 * p->fwdRefQpDelta[i - 1]);<br>+                p->fwdNonRefQpDelta[i] = p->fwdNonRefQpDelta[i - 1] - (0.15 * p->fwdNonRefQpDelta[i - 1]);<br>+                p->bwdRefQpDelta[i] = p->bwdRefQpDelta[i - 1] - (0.15 * p->bwdRefQpDelta[i - 1]);<br>+                p->bwdNonRefQpDelta[i] = p->bwdNonRefQpDelta[i - 1] - (0.15 * p->bwdNonRefQpDelta[i - 1]);<br>+            }<br>+        }<br>+        else if (36 == sscanf(value, "%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf,%d,%lf,%lf"<br>+            , &window1[0], &refQpDelta1[0], &nonRefQpDelta1[0], &window1[1], &refQpDelta1[1], &nonRefQpDelta1[1]<br>+            , &window1[2], &refQpDelta1[2], &nonRefQpDelta1[2], &window1[3], &refQpDelta1[3], &nonRefQpDelta1[3]<br>+            , &window1[4], &refQpDelta1[4], &nonRefQpDelta1[4], &window1[5], &refQpDelta1[5], &nonRefQpDelta1[5]<br>+            , &window2[0], &refQpDelta2[0], &nonRefQpDelta2[0], &window2[1], &refQpDelta2[1], &nonRefQpDelta2[1]<br>+            , &window2[2], &refQpDelta2[2], &nonRefQpDelta2[2], &window2[3], &refQpDelta2[3], &nonRefQpDelta2[3]<br>+            , &window2[4], &refQpDelta2[4], &nonRefQpDelta2[4], &window2[5], &refQpDelta2[5], &nonRefQpDelta2[5]))<br>+        {<br>+            p->fwdMaxScenecutWindow = 0;<br>+            p->bwdMaxScenecutWindow = 0;<br>+            for (int i = 0; i < 6; i++)<br>+            {<br>+                p->fwdScenecutWindow[i] = window1[i];<br>+                p->fwdRefQpDelta[i] = refQpDelta1[i];<br>+                p->fwdNonRefQpDelta[i] = nonRefQpDelta1[i];<br>+                p->bwdScenecutWindow[i] = window2[i];<br>+                p->bwdRefQpDelta[i] = refQpDelta2[i];<br>+                p->bwdNonRefQpDelta[i] = nonRefQpDelta2[i];<br>+                p->fwdMaxScenecutWindow += p->fwdScenecutWindow[i];<br>+                p->bwdMaxScenecutWindow += p->bwdScenecutWindow[i];<br>+            }<br>+        }<br>+        else<br>+        {<br>+            x265_log(NULL, X265_LOG_ERROR, "Specify all the necessary offsets for masking-strength \n");<br>+            bError = true;<br>+        }<br>+    }<br>+    return bError;<br>+}<br>+<br> void x265_copy_params(x265_param* dst, x265_param* src)<br> {<br>     dst->cpuid = src->cpuid;<br>diff --git a/source/common/param.h b/source/common/param.h<br>index 7808947f6..f504ec9e4 100644<br>--- a/source/common/param.h<br>+++ b/source/common/param.h<br>@@ -38,6 +38,7 @@ void  setParamAspectRatio(x265_param *p, int width, int height);<br> void  getParamAspectRatio(x265_param *p, int& width, int& height);<br> bool  parseLambdaFile(x265_param *param);<br> void x265_copy_params(x265_param* dst, x265_param* src);<br>+bool parseMaskingStrength(x265_param* p, const char* value);<br> <br> /* this table is kept internal to avoid confusion, since log level indices start at -1 */<br> static const char * const logLevelNames[] = { "none", "error", "warning", "info", "debug", "full", 0 };<br>-- <br>2.28.0.windows.1<br><br><div><div dir="ltr"><div dir="ltr"><i>Thanks,</i><div><i>Kirithika</i></div></div></div></div></div>
_______________________________________________<br>
x265-devel mailing list<br>
<a href="mailto:x265-devel@videolan.org" target="_blank">x265-devel@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/x265-devel" rel="noreferrer" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br>
</blockquote></div>