>From e617839b27edb8ba29844dd572f9e440136955c1 Mon Sep 17 00:00:00 2001 From: Min Chen <[email protected]> Date: Tue, 19 Nov 2024 08:02:34 -0800 Subject: [PATCH] Fix abr-ladder seg fault
---
source/abrEncApp.cpp | 5 ++++-
source/abrEncApp.h | 2 ++
source/x265.cpp | 5 +++--
3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/source/abrEncApp.cpp b/source/abrEncApp.cpp
index 66787ff11..93d660152 100644
--- a/source/abrEncApp.cpp
+++ b/source/abrEncApp.cpp
@@ -51,6 +51,7 @@ namespace X265_NS {
m_numActiveEncodes.set(numEncodes);
m_queueSize = (numEncodes > 1) ? X265_INPUT_QUEUE_SIZE : 1;
m_passEnc = X265_MALLOC(PassEncoder*, m_numEncodes);
+ m_param = X265_MALLOC(x265_param, m_numEncodes);
for (uint8_t i = 0; i < m_numEncodes; i++)
{
@@ -178,7 +179,7 @@ namespace X265_NS {
{
X265_FREE(m_inputPicBuffer[pass][index]->planes[0]);
x265_picture_free(m_inputPicBuffer[pass][index]);
- X265_FREE(m_analysisBuffer[pass][index].wt);
+ x265_free_analysis_data(&m_param[pass],
&m_analysisBuffer[pass][index]);
}
X265_FREE(m_inputPicBuffer[pass]);
@@ -207,6 +208,7 @@ namespace X265_NS {
X265_FREE(m_analysisRead);
X265_FREE(m_passEnc);
+ X265_FREE_ZERO(m_param);
}
PassEncoder::PassEncoder(uint32_t id, CLIOptions cliopt, AbrEncoder
*parent)
@@ -588,6 +590,7 @@ ret:
#if ENABLE_LIBVMAF
x265_vmaf_data* vmafdata = m_cliopt.vmafData;
#endif
+ memcpy(&m_parent->m_param[m_id], m_param, sizeof(x265_param));
/* This allows muxers to modify bitstream format */
m_cliopt.output->setParam(m_param);
const x265_api* api = m_cliopt.api;
diff --git a/source/abrEncApp.h b/source/abrEncApp.h
index 7c1142baf..7f66c49aa 100644
--- a/source/abrEncApp.h
+++ b/source/abrEncApp.h
@@ -46,6 +46,8 @@ namespace X265_NS {
PassEncoder **m_passEnc;
uint32_t m_queueSize;
ThreadSafeInteger m_numActiveEncodes;
+ // Temporary duplicated param for free the analysis info,
unnecessary free here
+ x265_param *m_param; //[numEncodes]
x265_picture ***m_inputPicBuffer; //[numEncodes][queueSize]
x265_analysis_data **m_analysisBuffer; //[numEncodes][queueSize]
diff --git a/source/x265.cpp b/source/x265.cpp
index 357f5d6ea..bd1afb3f4 100644
--- a/source/x265.cpp
+++ b/source/x265.cpp
@@ -154,13 +154,14 @@ static bool parseAbrConfig(FILE* abrConfig,
CLIOptions cliopt[], uint8_t numEnco
char line[1024];
char* argLine;
- char **argv = (char**)malloc(256 * sizeof(char *));
char *strPool = (char*)malloc(256 * X265_MAX_STRING_SIZE *
sizeof(char));
int strPoolSize = 256 * X265_MAX_STRING_SIZE;
for (uint32_t i = 0; i < numEncodes; i++)
{
+ char **argv = (char**)malloc(256 * sizeof(char *));
cliopt[i].stringPool = (i == 0 ? strPool : NULL);
- cliopt[i].argString = (i == 0 ? argv : NULL);
+ cliopt[i].argString = argv;
+ cliopt[i].orgArgv = NULL;
if (fgets(line, sizeof(line), abrConfig) == NULL) {
fprintf(stderr, "Error reading line from configuration
file.\n");
return false;
--
2.35.1.windows.2
0010-Fix_abr_ladder_seg_fault.patch
Description: Binary data
_______________________________________________ x265-devel mailing list [email protected] https://mailman.videolan.org/listinfo/x265-devel
