On Thu, Feb 1, 2018 at 5:59 PM, <bha...@multicorewareinc.com> wrote:
> # 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 > > Thanks. Pushed to default.
_______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel