Revision: 34881
http://sourceforge.net/p/opalvoip/code/34881
Author: rjongbloed
Date: 2016-07-25 17:56:17 +0000 (Mon, 25 Jul 2016)
Log Message:
-----------
Fixed crash if x264 encoder helper app increases resolution on the fly.
Modified Paths:
--------------
opal/trunk/plugins/video/x264/gpl/h264_helper.cxx
Modified: opal/trunk/plugins/video/x264/gpl/h264_helper.cxx
===================================================================
--- opal/trunk/plugins/video/x264/gpl/h264_helper.cxx 2016-07-20 17:35:20 UTC (rev 34880)
+++ opal/trunk/plugins/video/x264/gpl/h264_helper.cxx 2016-07-25 17:56:17 UTC (rev 34881)
@@ -175,9 +175,12 @@
H264Encoder x264;
-void ResizeBuffer()
+void ResizeBuffer(size_t len)
{
- size_t newBufSize = x264.GetWidth()*x264.GetHeight()*3/2 + rtpSize + 1024;
+ size_t newBufSize =x264.GetWidth()*x264.GetHeight()*3/2;
+ if (newBufSize < len)
+ newBufSize = len;
+ newBufSize += rtpSize + 1024;
if (newBufSize > bufSize) {
buffer = (unsigned char *)realloc(buffer, newBufSize);
if (buffer == NULL) {
@@ -266,15 +269,15 @@
WritePipe(&msg, sizeof(msg));
break;
case ENCODE_FRAMES:
- ResizeBuffer();
ReadPipe(&srcLen, sizeof(srcLen));
+ ResizeBuffer(srcLen);
ReadPipe(buffer+rtpSize, srcLen);
ReadPipe(&headerLen, sizeof(headerLen));
ReadPipe(buffer, headerLen);
ReadPipe(&flags, sizeof(flags));
case ENCODE_FRAMES_BUFFERED:
{
- ResizeBuffer();
+ ResizeBuffer(0);
unsigned dstLen = rtpSize;
unsigned ret = x264.EncodeFrames(buffer+rtpSize, srcLen, buffer, dstLen, headerLen, flags);
WritePipe(&msg, sizeof(msg));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|