[x265] [PATCH] stats: write encoder summary in the console to libx265
Divya Manivannan
divya at multicorewareinc.com
Fri Jun 12 11:32:09 CEST 2015
# HG changeset patch
# User Divya Manivannan <divya at multicorewareinc.com>
# Date 1434101056 -19800
# Fri Jun 12 14:54:16 2015 +0530
# Node ID 91f6f8daef59781f45d3d13a931b7b6196a31465
# Parent 54c798d021019d820224bdd74cb78e20bf317fc8
stats: write encoder summary in the console to libx265
diff -r 54c798d02101 -r 91f6f8daef59 source/encoder/encoder.cpp
--- a/source/encoder/encoder.cpp Fri Jun 12 14:27:01 2015 +0530
+++ b/source/encoder/encoder.cpp Fri Jun 12 14:54:16 2015 +0530
@@ -786,8 +786,6 @@
x265_log(m_param, X265_LOG_INFO, "frame P: %s\n", statsString(m_analyzeP, buffer));
if (m_analyzeB.m_numPics)
x265_log(m_param, X265_LOG_INFO, "frame B: %s\n", statsString(m_analyzeB, buffer));
- if (m_analyzeAll.m_numPics)
- x265_log(m_param, X265_LOG_INFO, "global : %s\n", statsString(m_analyzeAll, buffer));
if (m_param->bEnableWeightedPred && m_analyzeP.m_numPics)
{
x265_log(m_param, X265_LOG_INFO, "Weighted P-Frames: Y:%.1f%% UV:%.1f%%\n",
@@ -821,6 +819,30 @@
x265_log(m_param, X265_LOG_INFO, "lossless compression ratio %.2f::1\n", uncompressed / m_analyzeAll.m_accBits);
}
+ if (m_analyzeAll.m_numPics)
+ {
+ int p = 0;
+ double elapsedEncodeTime = (double)(x265_mdate() - m_encodeStartTime) / 1000000;
+ double elapsedVideoTime = (double)m_analyzeAll.m_numPics * m_param->fpsDenom / m_param->fpsNum;
+ double bitrate = (0.001f * m_analyzeAll.m_accBits) / elapsedVideoTime;
+
+ p += sprintf(buffer + p, "\nencoded %d frames in %.2fs (%.2f fps), %.2f kb/s, Avg QP:%2.2lf", m_analyzeAll.m_numPics,
+ elapsedEncodeTime, m_analyzeAll.m_numPics / elapsedEncodeTime, bitrate, m_analyzeAll.m_totalQp / (double)m_analyzeAll.m_numPics);
+
+ if (m_param->bEnablePsnr)
+ {
+ double globalPsnr = (m_analyzeAll.m_psnrSumY * 6 + m_analyzeAll.m_psnrSumU + m_analyzeAll.m_psnrSumV) / (8 * m_analyzeAll.m_numPics);
+ p += sprintf(buffer + p, ", Global PSNR: %.3f", globalPsnr);
+ }
+
+ if (m_param->bEnableSsim)
+ p += sprintf(buffer + p, ", SSIM Mean Y: %.7f (%6.3f dB)", m_analyzeAll.m_globalSsim / m_analyzeAll.m_numPics, x265_ssim2dB(m_analyzeAll.m_globalSsim / m_analyzeAll.m_numPics));
+
+ sprintf(buffer + p, "\n");
+ general_log(m_param, NULL, X265_LOG_INFO, buffer);
+ }
+ else
+ general_log(m_param, NULL, X265_LOG_INFO, "\nencoded 0 frames\n");
#if DETAILED_CU_STATS
/* Summarize stats from all frame encoders */
diff -r 54c798d02101 -r 91f6f8daef59 source/x265.cpp
--- a/source/x265.cpp Fri Jun 12 14:27:01 2015 +0530
+++ b/source/x265.cpp Fri Jun 12 14:54:16 2015 +0530
@@ -896,26 +896,6 @@
general_log(param, NULL, X265_LOG_INFO, "aborted at input frame %d, output frame %d\n",
cliopt.seek + inFrameCount, stats.encodedPictureCount);
- if (stats.encodedPictureCount)
- {
- char buffer[4096];
- int p = sprintf(buffer, "\nencoded %d frames in %.2fs (%.2f fps), %.2f kb/s", stats.encodedPictureCount,
- stats.elapsedEncodeTime, stats.encodedPictureCount / stats.elapsedEncodeTime, stats.bitrate);
-
- if (param->bEnablePsnr)
- p += sprintf(buffer + p, ", Global PSNR: %.3f", stats.globalPsnr);
-
- if (param->bEnableSsim)
- p += sprintf(buffer + p, ", SSIM Mean Y: %.7f (%6.3f dB)", stats.globalSsim, x265_ssim2dB(stats.globalSsim));
-
- sprintf(buffer + p, "\n");
- general_log(param, NULL, X265_LOG_INFO, buffer);
- }
- else
- {
- general_log(param, NULL, X265_LOG_INFO, "\nencoded 0 frames\n");
- }
-
api->cleanup(); /* Free library singletons */
cliopt.destroy();
More information about the x265-devel
mailing list