Skip to content

Commit 7ff35fc

Browse files
author
Clement Champetier
committed
AudioDecoder: fix memory leak in demultiplexing cases
In a demultiplexing case, the buffer should be allocated by us, but only once (not in the decodeNextFrame method)!
1 parent 8e2818f commit 7ff35fc

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

src/AvTranscoder/decoder/AudioDecoder.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,6 @@ bool AudioDecoder::decodeNextFrame(IFrame& frameBuffer, const std::vector<size_t
159159
throw std::runtime_error(msg.str());
160160
}
161161
}
162-
// allocate data to store the subpart of the next frame
163-
audioBuffer.allocateData();
164162

165163
// copy frame properties of decoded frame
166164
audioBuffer.copyProperties(allDataOfNextFrame);

src/AvTranscoder/transcoder/StreamTranscoder.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,9 +261,13 @@ void StreamTranscoder::addDecoder(const InputStreamDesc& inputStreamDesc, IInput
261261

262262
// buffers to get the decoded data
263263
AudioFrameDesc inputFrameDesc(inputStream.getAudioCodec().getAudioFrameDesc());
264+
bool allocateDecodedData = false;
264265
if(inputStreamDesc.demultiplexing())
266+
{
265267
inputFrameDesc._nbChannels = inputStreamDesc._channelIndexArray.size();
266-
_decodedData.push_back(new AudioFrame(inputFrameDesc, false));
268+
allocateDecodedData = true;
269+
}
270+
_decodedData.push_back(new AudioFrame(inputFrameDesc, allocateDecodedData));
267271

268272
// generator decoder
269273
_generators.push_back(new AudioGenerator(inputFrameDesc));

0 commit comments

Comments
 (0)