[x265] [PATCH] Fix Avg I Slice QP value issue in zonefile
Karam Singh
karam.singh at multicorewareinc.com
Fri May 5 15:59:13 UTC 2023
>From 0a9a9bb09d0c214cabaecccf69725034366e6938 Mon Sep 17 00:00:00 2001
From: Karam Singh <karam.singh at multicorewareinc.com>
Date: Fri, 5 May 2023 12:55:22 +0530
Subject: [PATCH] Fix Avg I Slice QP value issue in zonefile
---
source/CMakeLists.txt | 2 +-
source/common/param.cpp | 1 +
source/encoder/ratecontrol.cpp | 3 ++-
source/x265.h | 4 ++++
source/x265cli.cpp | 2 ++
source/x265cli.h | 1 +
6 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index 4150eb9c6..ca6a2ceee 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -29,7 +29,7 @@ option(NATIVE_BUILD "Target the build CPU" OFF)
option(STATIC_LINK_CRT "Statically link C runtime for release builds" OFF)
mark_as_advanced(FPROFILE_USE FPROFILE_GENERATE NATIVE_BUILD)
# X265_BUILD must be incremented each time the public API is changed
-set(X265_BUILD 207)
+set(X265_BUILD 208)
configure_file("${PROJECT_SOURCE_DIR}/x265.def.in"
"${PROJECT_BINARY_DIR}/x265.def")
configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in"
diff --git a/source/common/param.cpp b/source/common/param.cpp
index e9ca077d7..6af9f8184 100644
--- a/source/common/param.cpp
+++ b/source/common/param.cpp
@@ -2587,6 +2587,7 @@ void x265_copy_params(x265_param* dst, x265_param*
src)
dst->rc.zonefileCount = src->rc.zonefileCount;
dst->reconfigWindowSize = src->reconfigWindowSize;
dst->bResetZoneConfig = src->bResetZoneConfig;
+ dst->bNoResetZoneConfig = src->bNoResetZoneConfig;
dst->decoderVbvMaxRate = src->decoderVbvMaxRate;
if (src->rc.zonefileCount && src->rc.zones && src->bResetZoneConfig)
diff --git a/source/encoder/ratecontrol.cpp b/source/encoder/ratecontrol.cpp
index a275fca42..08327c52d 100644
--- a/source/encoder/ratecontrol.cpp
+++ b/source/encoder/ratecontrol.cpp
@@ -1306,7 +1306,8 @@ int RateControl::rateControlStart(Frame* curFrame,
RateControlEntry* rce, Encode
{
m_param = m_param->rc.zones[i].zoneParam;
reconfigureRC();
- init(*m_curSlice->m_sps);
+ if (!m_param->bNoResetZoneConfig)
+ init(*m_curSlice->m_sps);
}
}
}
diff --git a/source/x265.h b/source/x265.h
index d621e4394..7bf25c368 100644
--- a/source/x265.h
+++ b/source/x265.h
@@ -1928,6 +1928,10 @@ typedef struct x265_param
Default 1 (Enabled). API only. */
int bResetZoneConfig;
+ /*Flag to indicate rate-control history has not to be reset during
zone reconfiguration.
+ Default 0 (Disabled) */
+ int bNoResetZoneConfig;
+
/* It reduces the bits spent on the inter-frames within the
scenecutWindow before and / or after a scenecut
* by increasing their QP in ratecontrol pass2 algorithm without any
deterioration in visual quality.
* 0 - Disabled (default).
diff --git a/source/x265cli.cpp b/source/x265cli.cpp
index 120a6706d..612c0891f 100755
--- a/source/x265cli.cpp
+++ b/source/x265cli.cpp
@@ -284,6 +284,7 @@ namespace X265_NS {
H1(" q=<integer> (force
QP)\n");
H1(" or b=<float> (bitrate
multiplier)\n");
H0(" --zonefile <filename> Zone file containing the zone
boundaries and the parameters to be reconfigured.\n");
+ H0(" --no-zonefile-rc-init This allow to use
rate-control history across zones in zonefile.\n");
H1(" --lambda-file <string> Specify a file containing
replacement values for the lambda tables\n");
H1(" MAX_MAX_QP+1 floats for
lambda table, then again for lambda2 table\n");
H1(" Blank lines and lines
starting with hash(#) are ignored\n");
@@ -733,6 +734,7 @@ namespace X265_NS {
if (!this->zoneFile)
x265_log_file(param, X265_LOG_ERROR, "%s zone file
not found or error in opening zone file\n", optarg);
}
+ OPT("no-zonefile-rc-init") this->param->bNoResetZoneConfig
= true;
OPT("fullhelp")
{
param->logLevel = X265_LOG_FULL;
diff --git a/source/x265cli.h b/source/x265cli.h
index 8683ce481..462745a0a 100644
--- a/source/x265cli.h
+++ b/source/x265cli.h
@@ -274,6 +274,7 @@ static const struct option long_options[] =
{ "zones", required_argument, NULL, 0 },
{ "qpfile", required_argument, NULL, 0 },
{ "zonefile", required_argument, NULL, 0 },
+ { "no-zonefile-rc-init", no_argument, NULL, 0 },
{ "lambda-file", required_argument, NULL, 0 },
{ "b-intra", no_argument, NULL, 0 },
{ "no-b-intra", no_argument, NULL, 0 },
--
2.36.0.windows.1
Karam Singh
Senior Video Codec Engineer
MulticoreWare, India
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20230505/bbb9525d/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Fix_Avg_I_Slice_QP_value_issue_in_zonefile.diff
Type: application/octet-stream
Size: 4914 bytes
Desc: not available
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20230505/bbb9525d/attachment-0001.obj>
More information about the x265-devel
mailing list