Skip to content

Commit c2e53ae

Browse files
committed
Fixing memory leaks in hevc_enc plugin code for Beamr SDK.
1 parent f48150f commit c2e53ae

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

plugins/code/hevc_enc/beamr/src/hevc_enc_beamr.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,8 +357,15 @@ static Status close(HevcEncHandle handle) {
357357
if (state->encoder)
358358
state->encoder->close();
359359

360-
if (state->ctrl)
360+
if (state->ctrl) {
361361
delete state->ctrl;
362+
state->ctrl = nullptr;
363+
}
364+
365+
if (state->encoder) {
366+
delete state->encoder;
367+
state->encoder = nullptr;
368+
}
362369
}
363370
catch (std::exception& e) {
364371
state->ctrl->msg = std::string(e.what());

plugins/code/hevc_enc/beamr/src/hevc_enc_beamr_impl.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,6 @@ Encoder::Encoder()
116116

117117
Encoder::~Encoder() {
118118
FUNCTIONV_T(close);
119-
if (outBuffer)
120-
delete[] outBuffer;
121119
}
122120

123121
std::string Encoder::getVersion() {
@@ -586,9 +584,8 @@ void Encoder::getNal(HevcEncOutput* out, uint64_t maxSize) {
586584
return;
587585

588586
if (maxSize > outBufferSize) {
589-
if (outBuffer)
590-
delete[] outBuffer;
591-
outBuffer = new uint8_t[maxSize];
587+
outBufferMem.reset(new uint8_t[maxSize]);
588+
outBuffer = outBufferMem.get();
592589
outBufferSize = maxSize;
593590
}
594591

plugins/code/hevc_enc/beamr/src/hevc_enc_beamr_impl.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
#include <string>
4545
#include <thread>
4646
#include <vector>
47+
#include <memory>
4748

4849
#include "debugger.h"
4950
#include "hevc_enc_api.h"
@@ -146,6 +147,7 @@ class Encoder {
146147
hevce_settings_t settings;
147148
std::deque<vh3_Nal> qMS;
148149
std::vector<HevcEncNal> nal;
150+
std::unique_ptr<uint8_t[]> outBufferMem;
149151
uint8_t* outBuffer{nullptr};
150152
uint64_t outBufferSize{0};
151153
uint64_t nalUnitsToRelease{0};

0 commit comments

Comments
 (0)