<div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif">From c64bccd79a63ec3e7a3fdeeaa21656730695dd2b Mon Sep 17 00:00:00 2001<br>From: Test <<a href="mailto:test@test.com">test@test.com</a>><br>Date: Thu, 28 Nov 2024 16:09:28 -0800<br>Subject: [PATCH 1/3] Fix SEI buffer memory leaks<br><br>---<br> source/encoder/encoder.cpp | 16 ++++++++++++++++<br> 1 file changed, 16 insertions(+)<br><br>diff --git a/source/encoder/encoder.cpp b/source/encoder/encoder.cpp<br>index 2e65cb1a9..e3285bbae 100644<br>--- a/source/encoder/encoder.cpp<br>+++ b/source/encoder/encoder.cpp<br>@@ -1082,6 +1082,16 @@ void Encoder::copyUserSEIMessages(Frame *frame, const x265_picture* pic_in)<br>     }<br> <br>     int numPayloads = pic_in->userSEI.numPayloads + toneMapPayload + userPayload;<br>+<br>+    // TODO: we may reuse buffer if become smaller than exist buffer<br>+    if (frame->m_userSEI.payloads && numPayloads != frame->m_userSEI.numPayloads)<br>+    {<br>+        for (int i = 0; i < frame->m_userSEI.numPayloads; i++)<br>+            delete[] frame->m_userSEI.payloads[i].payload;<br>+        delete[] frame->m_userSEI.payloads;<br>+        frame->m_userSEI.payloads = NULL;<br>+    }<br>+<br>     frame->m_userSEI.numPayloads = numPayloads;<br> <br>     if (frame->m_userSEI.numPayloads)<br>@@ -1102,6 +1112,12 @@ void Encoder::copyUserSEIMessages(Frame *frame, const x265_picture* pic_in)<br>             else<br>                 input = pic_in->userSEI.payloads[i];<br> <br>+            // TODO: condition may improve, because buffer size may change from big to small, but never back to original allocate size<br>+            if (frame->m_userSEI.payloads[i].payload && frame->m_userSEI.payloads[i].payloadSize < input.payloadSize)<br>+            {<br>+                delete[] frame->m_userSEI.payloads[i].payload;<br>+                frame->m_userSEI.payloads[i].payload = NULL;<br>+            }<br>             if (!frame->m_userSEI.payloads[i].payload)<br>                 frame->m_userSEI.payloads[i].payload = new uint8_t[input.payloadSize];<br>             memcpy(frame->m_userSEI.payloads[i].payload, input.payload, input.payloadSize);<br>-- <br>2.35.1.windows.2<br><br></div></div>