Skip to content

Instantly share code, notes, and snippets.

@msg7086
Last active August 29, 2015 14:18
Show Gist options
  • Save msg7086/d4067485f4e3d798a082 to your computer and use it in GitHub Desktop.
Save msg7086/d4067485f4e3d798a082 to your computer and use it in GitHub Desktop.
# HG changeset patch
# User Xinyue Lu <[email protected]>
# Date 1428359964 25200
# Mon Apr 06 15:39:24 2015 -0700
# Branch Yuuki
# Node ID 6de8cdf3795b7fbdfc2df5ae34cbc211676a561a
# Parent ebe5e57c4b45b45338035a1009b64585f21d66d5
cli: rewrite pts_queue to use new/delete, not to confuse the leak tool
diff -r ebe5e57c4b45 -r 6de8cdf3795b source/x265.cpp
--- a/source/x265.cpp Sat Apr 04 15:11:39 2015 -0500
+++ b/source/x265.cpp Mon Apr 06 15:39:24 2015 -0700
@@ -507,8 +507,8 @@
x265_picture pic_orig, pic_out;
x265_picture *pic_in = &pic_orig;
/* Allocate recon picture if analysisMode is enabled */
- bool usePTS = cliopt.output->needPTS();
- x265_picture *pic_recon = (cliopt.recon || !!param->analysisMode || usePTS) ? &pic_out : NULL;
+ std::priority_queue<int64_t>* pts_queue = cliopt.output->needPTS() ? new std::priority_queue<int64_t>() : NULL;
+ x265_picture *pic_recon = (cliopt.recon || !!param->analysisMode || pts_queue) ? &pic_out : NULL;
uint32_t inFrameCount = 0;
uint32_t outFrameCount = 0;
x265_nal *p_nal;
@@ -516,7 +516,6 @@
uint32_t nal;
int16_t *errorBuf = NULL;
int ret = 0;
- std::priority_queue<int64_t> pts_queue;
if (!param->bRepeatHeaders)
{
@@ -590,11 +589,11 @@
if (nal)
{
cliopt.totalbytes += cliopt.output->writeFrame(p_nal, nal, pic_out);
- if (usePTS)
+ if (pts_queue)
{
- pts_queue.push(-pic_out.pts);
- if (pts_queue.size() > 2)
- pts_queue.pop();
+ pts_queue->push(-pic_out.pts);
+ if (pts_queue->size() > 2)
+ pts_queue->pop();
}
}
@@ -616,11 +615,11 @@
if (nal)
{
cliopt.totalbytes += cliopt.output->writeFrame(p_nal, nal, pic_out);
- if (usePTS)
+ if (pts_queue)
{
- pts_queue.push(-pic_out.pts);
- if (pts_queue.size() > 2)
- pts_queue.pop();
+ pts_queue->push(-pic_out.pts);
+ if (pts_queue->size() > 2)
+ pts_queue->pop();
}
}
@@ -642,12 +641,14 @@
int64_t second_largest_pts = 0;
int64_t largest_pts = 0;
- if (usePTS && pts_queue.size() >= 2)
+ if (pts_queue && pts_queue->size() >= 2)
{
- second_largest_pts = -pts_queue.top();
- pts_queue.pop();
- largest_pts = -pts_queue.top();
- pts_queue.pop();
+ second_largest_pts = -pts_queue->top();
+ pts_queue->pop();
+ largest_pts = -pts_queue->top();
+ pts_queue->pop();
+ delete pts_queue;
+ pts_queue = NULL;
}
cliopt.output->closeFile(largest_pts, second_largest_pts);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment