# HG changeset patch # User Bhavna Hariharan <bha...@multicorewareinc.com> # Date 1517408059 -19800 # Wed Jan 31 19:44:19 2018 +0530 # Node ID 4345744c5e23e925ed658837359d5502b5ff94a7 # Parent 79c5e3bfeb59041be822f7a4a21b95548ddccd07 csv: Bypass luma calculatations when --max-cll is OFF or when csv-log-level < 2
The maxFall and maxCll values are calculated from the min, max and average luma values. The luma values were being calculated even when --max-cll is disabled. This patch bypasses the luma calculations when --max-cll is OFF or when csv-log-level < 2 diff -r 79c5e3bfeb59 -r 4345744c5e23 source/common/picyuv.cpp --- a/source/common/picyuv.cpp Tue Jan 30 15:57:08 2018 +0530 +++ b/source/common/picyuv.cpp Wed Jan 31 19:44:19 2018 +0530 @@ -358,17 +358,21 @@ pixel *uPic = m_picOrg[1]; pixel *vPic = m_picOrg[2]; - for (int r = 0; r < height; r++) + + if (param.csvLogLevel >= 2 || param.maxCLL || param.maxFALL) { - for (int c = 0; c < width; c++) + for (int r = 0; r < height; r++) { - m_maxLumaLevel = X265_MAX(yPic[c], m_maxLumaLevel); - m_minLumaLevel = X265_MIN(yPic[c], m_minLumaLevel); - lumaSum += yPic[c]; + for (int c = 0; c < width; c++) + { + m_maxLumaLevel = X265_MAX(yPic[c], m_maxLumaLevel); + m_minLumaLevel = X265_MIN(yPic[c], m_minLumaLevel); + lumaSum += yPic[c]; + } + yPic += m_stride; } - yPic += m_stride; + m_avgLumaLevel = (double)lumaSum / (m_picHeight * m_picWidth); } - m_avgLumaLevel = (double)lumaSum / (m_picHeight * m_picWidth); if (param.csvLogLevel >= 2) { diff -r 79c5e3bfeb59 -r 4345744c5e23 source/encoder/api.cpp --- a/source/encoder/api.cpp Tue Jan 30 15:57:08 2018 +0530 +++ b/source/encoder/api.cpp Wed Jan 31 19:44:19 2018 +0530 @@ -67,8 +67,7 @@ "Y PSNR, U PSNR, V PSNR, Global PSNR, SSIM, SSIM (dB), " "I count, I ave-QP, I kbps, I-PSNR Y, I-PSNR U, I-PSNR V, I-SSIM (dB), " "P count, P ave-QP, P kbps, P-PSNR Y, P-PSNR U, P-PSNR V, P-SSIM (dB), " - "B count, B ave-QP, B kbps, B-PSNR Y, B-PSNR U, B-PSNR V, B-SSIM (dB), " - "MaxCLL, MaxFALL, Version\n"; + "B count, B ave-QP, B kbps, B-PSNR Y, B-PSNR U, B-PSNR V, B-SSIM (dB), "; x265_encoder *x265_encoder_open(x265_param *p) { @@ -757,7 +756,12 @@ fprintf(csvfp, "\n"); } else + { fputs(summaryCSVHeader, csvfp); + if (param->csvLogLevel >= 2 || param->maxCLL || param->maxFALL) + fputs("MaxCLL, MaxFALL,", csvfp); + fputs(" Version\n", csvfp); + } } return csvfp; } @@ -881,6 +885,9 @@ // adding summary to a per-frame csv log file, so it needs a summary header fprintf(p->csvfpt, "\nSummary\n"); fputs(summaryCSVHeader, p->csvfpt); + if (p->csvLogLevel >= 2 || p->maxCLL || p->maxFALL) + fputs("MaxCLL, MaxFALL,", p->csvfpt); + fputs(" Version\n",p->csvfpt); } // CLI arguments or other @@ -974,7 +981,9 @@ else fprintf(p->csvfpt, " -, -, -, -, -, -, -,"); - fprintf(p->csvfpt, " %-6u, %-6u, %s\n", stats->maxCLL, stats->maxFALL, api->version_str); + if (p->csvLogLevel >= 2 || p->maxCLL || p->maxFALL) + fprintf(p->csvfpt, " %-6u, %-6u,", stats->maxCLL, stats->maxFALL); + fprintf(p->csvfpt, " %s\n", api->version_str); } } diff -r 79c5e3bfeb59 -r 4345744c5e23 source/encoder/encoder.cpp --- a/source/encoder/encoder.cpp Tue Jan 30 15:57:08 2018 +0530 +++ b/source/encoder/encoder.cpp Wed Jan 31 19:44:19 2018 +0530 @@ -1984,8 +1984,11 @@ stats->statsB.psnrV = m_analyzeB.m_psnrSumV / (double)m_analyzeB.m_numPics; stats->statsB.ssim = x265_ssim2dB(m_analyzeB.m_globalSsim / (double)m_analyzeB.m_numPics); - stats->maxCLL = m_analyzeAll.m_maxCLL; - stats->maxFALL = (uint16_t)(m_analyzeAll.m_maxFALL / m_analyzeAll.m_numPics); + if (m_param->csvLogLevel >= 2 || m_param->maxCLL || m_param->maxFALL) + { + stats->maxCLL = m_analyzeAll.m_maxCLL; + stats->maxFALL = (uint16_t)(m_analyzeAll.m_maxFALL / m_analyzeAll.m_numPics); + } } /* If new statistics are added to x265_stats, we must check here whether the @@ -2060,8 +2063,11 @@ m_analyzeB.addSsim(ssim); } - m_analyzeAll.m_maxFALL += curFrame->m_fencPic->m_avgLumaLevel; - m_analyzeAll.m_maxCLL = X265_MAX(m_analyzeAll.m_maxCLL, curFrame->m_fencPic->m_maxLumaLevel); + if (m_param->csvLogLevel >= 2 || m_param->maxCLL || m_param->maxFALL) + { + m_analyzeAll.m_maxFALL += curFrame->m_fencPic->m_avgLumaLevel; + m_analyzeAll.m_maxCLL = X265_MAX(m_analyzeAll.m_maxCLL, curFrame->m_fencPic->m_maxLumaLevel); + } char c = (slice->isIntra() ? (curFrame->m_lowres.sliceType == X265_TYPE_IDR ? 'I' : 'i') : slice->isInterP() ? 'P' : 'B'); int poc = slice->m_poc; @@ -2104,10 +2110,6 @@ #define ELAPSED_MSEC(start, end) (((double)(end) - (start)) / 1000) - frameStats->maxLumaLevel = curFrame->m_fencPic->m_maxLumaLevel; - frameStats->minLumaLevel = curFrame->m_fencPic->m_minLumaLevel; - frameStats->avgLumaLevel = curFrame->m_fencPic->m_avgLumaLevel; - if (m_param->csvLogLevel >= 2) { frameStats->decideWaitTime = ELAPSED_MSEC(0, curEncoder->m_slicetypeWaitTime); @@ -2128,6 +2130,10 @@ frameStats->avgPsyEnergy = curFrame->m_encData->m_frameStats.avgPsyEnergy; frameStats->avgResEnergy = curFrame->m_encData->m_frameStats.avgResEnergy; + frameStats->maxLumaLevel = curFrame->m_fencPic->m_maxLumaLevel; + frameStats->minLumaLevel = curFrame->m_fencPic->m_minLumaLevel; + frameStats->avgLumaLevel = curFrame->m_fencPic->m_avgLumaLevel; + frameStats->maxChromaULevel = curFrame->m_fencPic->m_maxChromaULevel; frameStats->minChromaULevel = curFrame->m_fencPic->m_minChromaULevel; frameStats->avgChromaULevel = curFrame->m_fencPic->m_avgChromaULevel;
# HG changeset patch # User Bhavna Hariharan <bha...@multicorewareinc.com> # Date 1517408059 -19800 # Wed Jan 31 19:44:19 2018 +0530 # Node ID 4345744c5e23e925ed658837359d5502b5ff94a7 # Parent 79c5e3bfeb59041be822f7a4a21b95548ddccd07 csv: Bypass luma calculatations when --max-cll is OFF or when csv-log-level < 2 The maxFall and maxCll values are calculated from the min, max and average luma values. The luma values were being calculated even when --max-cll is disabled. This patch bypasses the luma calculations when --max-cll is OFF or when csv-log-level < 2 diff -r 79c5e3bfeb59 -r 4345744c5e23 source/common/picyuv.cpp --- a/source/common/picyuv.cpp Tue Jan 30 15:57:08 2018 +0530 +++ b/source/common/picyuv.cpp Wed Jan 31 19:44:19 2018 +0530 @@ -358,17 +358,21 @@ pixel *uPic = m_picOrg[1]; pixel *vPic = m_picOrg[2]; - for (int r = 0; r < height; r++) + + if (param.csvLogLevel >= 2 || param.maxCLL || param.maxFALL) { - for (int c = 0; c < width; c++) + for (int r = 0; r < height; r++) { - m_maxLumaLevel = X265_MAX(yPic[c], m_maxLumaLevel); - m_minLumaLevel = X265_MIN(yPic[c], m_minLumaLevel); - lumaSum += yPic[c]; + for (int c = 0; c < width; c++) + { + m_maxLumaLevel = X265_MAX(yPic[c], m_maxLumaLevel); + m_minLumaLevel = X265_MIN(yPic[c], m_minLumaLevel); + lumaSum += yPic[c]; + } + yPic += m_stride; } - yPic += m_stride; + m_avgLumaLevel = (double)lumaSum / (m_picHeight * m_picWidth); } - m_avgLumaLevel = (double)lumaSum / (m_picHeight * m_picWidth); if (param.csvLogLevel >= 2) { diff -r 79c5e3bfeb59 -r 4345744c5e23 source/encoder/api.cpp --- a/source/encoder/api.cpp Tue Jan 30 15:57:08 2018 +0530 +++ b/source/encoder/api.cpp Wed Jan 31 19:44:19 2018 +0530 @@ -67,8 +67,7 @@ "Y PSNR, U PSNR, V PSNR, Global PSNR, SSIM, SSIM (dB), " "I count, I ave-QP, I kbps, I-PSNR Y, I-PSNR U, I-PSNR V, I-SSIM (dB), " "P count, P ave-QP, P kbps, P-PSNR Y, P-PSNR U, P-PSNR V, P-SSIM (dB), " - "B count, B ave-QP, B kbps, B-PSNR Y, B-PSNR U, B-PSNR V, B-SSIM (dB), " - "MaxCLL, MaxFALL, Version\n"; + "B count, B ave-QP, B kbps, B-PSNR Y, B-PSNR U, B-PSNR V, B-SSIM (dB), "; x265_encoder *x265_encoder_open(x265_param *p) { @@ -757,7 +756,12 @@ fprintf(csvfp, "\n"); } else + { fputs(summaryCSVHeader, csvfp); + if (param->csvLogLevel >= 2 || param->maxCLL || param->maxFALL) + fputs("MaxCLL, MaxFALL,", csvfp); + fputs(" Version\n", csvfp); + } } return csvfp; } @@ -881,6 +885,9 @@ // adding summary to a per-frame csv log file, so it needs a summary header fprintf(p->csvfpt, "\nSummary\n"); fputs(summaryCSVHeader, p->csvfpt); + if (p->csvLogLevel >= 2 || p->maxCLL || p->maxFALL) + fputs("MaxCLL, MaxFALL,", p->csvfpt); + fputs(" Version\n",p->csvfpt); } // CLI arguments or other @@ -974,7 +981,9 @@ else fprintf(p->csvfpt, " -, -, -, -, -, -, -,"); - fprintf(p->csvfpt, " %-6u, %-6u, %s\n", stats->maxCLL, stats->maxFALL, api->version_str); + if (p->csvLogLevel >= 2 || p->maxCLL || p->maxFALL) + fprintf(p->csvfpt, " %-6u, %-6u,", stats->maxCLL, stats->maxFALL); + fprintf(p->csvfpt, " %s\n", api->version_str); } } diff -r 79c5e3bfeb59 -r 4345744c5e23 source/encoder/encoder.cpp --- a/source/encoder/encoder.cpp Tue Jan 30 15:57:08 2018 +0530 +++ b/source/encoder/encoder.cpp Wed Jan 31 19:44:19 2018 +0530 @@ -1984,8 +1984,11 @@ stats->statsB.psnrV = m_analyzeB.m_psnrSumV / (double)m_analyzeB.m_numPics; stats->statsB.ssim = x265_ssim2dB(m_analyzeB.m_globalSsim / (double)m_analyzeB.m_numPics); - stats->maxCLL = m_analyzeAll.m_maxCLL; - stats->maxFALL = (uint16_t)(m_analyzeAll.m_maxFALL / m_analyzeAll.m_numPics); + if (m_param->csvLogLevel >= 2 || m_param->maxCLL || m_param->maxFALL) + { + stats->maxCLL = m_analyzeAll.m_maxCLL; + stats->maxFALL = (uint16_t)(m_analyzeAll.m_maxFALL / m_analyzeAll.m_numPics); + } } /* If new statistics are added to x265_stats, we must check here whether the @@ -2060,8 +2063,11 @@ m_analyzeB.addSsim(ssim); } - m_analyzeAll.m_maxFALL += curFrame->m_fencPic->m_avgLumaLevel; - m_analyzeAll.m_maxCLL = X265_MAX(m_analyzeAll.m_maxCLL, curFrame->m_fencPic->m_maxLumaLevel); + if (m_param->csvLogLevel >= 2 || m_param->maxCLL || m_param->maxFALL) + { + m_analyzeAll.m_maxFALL += curFrame->m_fencPic->m_avgLumaLevel; + m_analyzeAll.m_maxCLL = X265_MAX(m_analyzeAll.m_maxCLL, curFrame->m_fencPic->m_maxLumaLevel); + } char c = (slice->isIntra() ? (curFrame->m_lowres.sliceType == X265_TYPE_IDR ? 'I' : 'i') : slice->isInterP() ? 'P' : 'B'); int poc = slice->m_poc; @@ -2104,10 +2110,6 @@ #define ELAPSED_MSEC(start, end) (((double)(end) - (start)) / 1000) - frameStats->maxLumaLevel = curFrame->m_fencPic->m_maxLumaLevel; - frameStats->minLumaLevel = curFrame->m_fencPic->m_minLumaLevel; - frameStats->avgLumaLevel = curFrame->m_fencPic->m_avgLumaLevel; - if (m_param->csvLogLevel >= 2) { frameStats->decideWaitTime = ELAPSED_MSEC(0, curEncoder->m_slicetypeWaitTime); @@ -2128,6 +2130,10 @@ frameStats->avgPsyEnergy = curFrame->m_encData->m_frameStats.avgPsyEnergy; frameStats->avgResEnergy = curFrame->m_encData->m_frameStats.avgResEnergy; + frameStats->maxLumaLevel = curFrame->m_fencPic->m_maxLumaLevel; + frameStats->minLumaLevel = curFrame->m_fencPic->m_minLumaLevel; + frameStats->avgLumaLevel = curFrame->m_fencPic->m_avgLumaLevel; + frameStats->maxChromaULevel = curFrame->m_fencPic->m_maxChromaULevel; frameStats->minChromaULevel = curFrame->m_fencPic->m_minChromaULevel; frameStats->avgChromaULevel = curFrame->m_fencPic->m_avgChromaULevel;
_______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel