Skip to content

Commit b5d0d26

Browse files
committed
decode: fix memory leak in decoder simple sample
1 parent f468fc9 commit b5d0d26

File tree

1 file changed

+25
-5
lines changed
  • vk_video_decoder/test/vulkan-video-simple-dec

1 file changed

+25
-5
lines changed

vk_video_decoder/test/vulkan-video-simple-dec/Main.cpp

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,17 @@ static void DumpDecoderStreamInfo(VkSharedBaseObj<VulkanVideoDecoder>& vulkanVid
3636
std::cout << std::endl;
3737
}
3838

39-
static std::vector<VulkanDecodedFrame> frameDataQueue;
40-
static uint32_t curFrameDataQueueIndex = 0;
41-
bool GetNextFrame(VkSharedBaseObj<VulkanVideoDecoder>& vulkanVideoDecoder)
39+
static size_t init(std::vector<VulkanDecodedFrame>& frameDataQueue, uint32_t& curFrameDataQueueIndex,
40+
const uint32_t decoderQueueSize)
41+
{
42+
curFrameDataQueueIndex = 0;
43+
frameDataQueue.resize(decoderQueueSize);
44+
return frameDataQueue.size();
45+
}
46+
47+
static bool GetNextFrame(VkSharedBaseObj<VulkanVideoDecoder>& vulkanVideoDecoder,
48+
std::vector<VulkanDecodedFrame>& frameDataQueue,
49+
uint32_t& curFrameDataQueueIndex)
4250
{
4351
bool continueLoop = true;
4452

@@ -84,6 +92,13 @@ bool GetNextFrame(VkSharedBaseObj<VulkanVideoDecoder>& vulkanVideoDecoder)
8492
return continueLoop;
8593
}
8694

95+
static void deinit(std::vector<VulkanDecodedFrame>& frameDataQueue,
96+
uint32_t& curFrameDataQueueIndex)
97+
{
98+
frameDataQueue.clear();
99+
curFrameDataQueueIndex = 0;
100+
}
101+
87102
int main(int argc, const char** argv)
88103
{
89104
std::cout << "Enter decoder test" << std::endl;
@@ -151,14 +166,19 @@ int main(int argc, const char** argv)
151166

152167
DumpDecoderStreamInfo(vulkanVideoDecoder);
153168

169+
std::vector<VulkanDecodedFrame> frameDataQueue;
170+
uint32_t curFrameDataQueueIndex = 0;
171+
154172
frameDataQueue.resize(decoderConfig.decoderQueueSize);
155173

174+
init(frameDataQueue, curFrameDataQueueIndex, decoderConfig.decoderQueueSize);
175+
156176
bool continueLoop = true;
157177
do {
158-
continueLoop = GetNextFrame(vulkanVideoDecoder);
178+
continueLoop = GetNextFrame(vulkanVideoDecoder, frameDataQueue, curFrameDataQueueIndex);
159179
} while (continueLoop);
160180

161-
/*******************************************************************************************/
181+
deinit(frameDataQueue, curFrameDataQueueIndex);
162182

163183
std::cout << "Exit decoder test" << std::endl;
164184
}

0 commit comments

Comments
 (0)