From b2a6bbfc8bc522f2879e77b07f8161ff77e0dab6 Mon Sep 17 00:00:00 2001 From: "timkingh.huang" Date: Tue, 13 Jun 2017 16:55:18 +0800 Subject: [PATCH] [h264e]: add SSE parameter check To avoid floating point exception, SSE is set to ONE if it is less than ONE. Change-Id: Ib0754fdf9327e8f179e9bf56f29f349867f45d00 Signed-off-by: timkingh.huang --- mpp/hal/rkenc/h264e/hal_h264e_rkv.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mpp/hal/rkenc/h264e/hal_h264e_rkv.c b/mpp/hal/rkenc/h264e/hal_h264e_rkv.c index 58f8af2c..06f08062 100644 --- a/mpp/hal/rkenc/h264e/hal_h264e_rkv.c +++ b/mpp/hal/rkenc/h264e/hal_h264e_rkv.c @@ -3451,13 +3451,19 @@ MPP_RET hal_h264e_rkv_wait(void *hal, HalTaskInfo *task) double avg_qp = 0.0; RK_S32 avg_sse = 1; RK_S32 wlen = 15; - RK_S32 prev_sse = 0; + RK_S32 prev_sse = 1; avg_qp = fb->qp_sum * 1.0 / num_mb; if (syn->type == INTER_P_FRAME) { avg_sse = (RK_S32)sqrt((double)(fb->sse_sum)); prev_sse = mpp_data_avg(ctx->sse_p, 1, 1, 1); + + if (avg_sse < 1) + avg_sse = 1; + if (prev_sse < 1) + prev_sse = 1; + if (avg_sse > prev_sse) wlen = wlen * prev_sse / avg_sse; else