ref: 130c3a48487073c63f52ddfd64787d396166c4ea
parent: 23e9683747ca5bd3110f3fb8fe350f7c4f9a6cac
parent: 14ca6e356881614f5ff152200cf75486a2db5a40
author: guangwei <[email protected]>
date: Fri Mar 30 05:20:45 EDT 2018
Merge pull request #2946 from huili2/fix_ubsan_warning fix ubsan warning
--- a/codec/encoder/core/src/ratectl.cpp
+++ b/codec/encoder/core/src/ratectl.cpp
@@ -95,6 +95,8 @@
return g_kiQpToQstepTable[iQP];
}
static inline int32_t RcConvertQStep2Qp (int32_t iQpStep) {
+ if (iQpStep <= g_kiQpToQstepTable[0]) //Qp step too small, return qp=0
+ return 0;
return WELS_ROUND ((6 * log (iQpStep * 1.0f / INT_MULTIPLY) / log (2.0) + 4.0));
}
--- a/test/encoder/EncUT_EncoderExt.cpp
+++ b/test/encoder/EncUT_EncoderExt.cpp
@@ -728,8 +728,8 @@
SEncParamExt sEncParamExt;
pPtrEnc->GetDefaultParams (&sEncParamExt);
sEncParamExt.iUsageType = CAMERA_VIDEO_REAL_TIME;
- sEncParamExt.iPicWidth = MB_SIZE + abs ((rand() * 2) % (MAX_WIDTH - MB_SIZE));
- sEncParamExt.iPicHeight = MB_SIZE + abs ((rand() * 2) % (MAX_HEIGHT - MB_SIZE));
+ sEncParamExt.iPicWidth = MB_SIZE + abs ((rand() / 2 * 2) % (MAX_WIDTH - MB_SIZE));
+ sEncParamExt.iPicHeight = MB_SIZE + abs ((rand() / 2 * 2) % (MAX_HEIGHT - MB_SIZE));
sEncParamExt.iTargetBitrate = rand() + 1; //!=0
// Force a bitrate of at least w*h/50, otherwise we will only get skipped frames
sEncParamExt.iTargetBitrate = WELS_CLIP3 (sEncParamExt.iTargetBitrate,