<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Jan 4, 2018 at 3:35 PM,  <span dir="ltr"><<a href="mailto:aarthi@multicorewareinc.com" target="_blank">aarthi@multicorewareinc.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"># HG changeset patch<br>
# User Aarthi Thirumalai <<a href="mailto:aarthi@multicorewareinc.com">aarthi@multicorewareinc.com</a>><br>
# Date 1515059166 -19800<br>
#      Thu Jan 04 15:16:06 2018 +0530<br>
# Node ID f29e88d85ca29d23c05d3c7d03f0f5<wbr>06a12bc780<br>
# Parent  5f6f6189a239aad91505ee1ed8b187<wbr>4450779a2a<br>
api: change signature of x265_csvlog_encode()<br>
<br>
replace x265_encoder* with x265_param* and int padx, int pady as function arguments.<br></blockquote><div><br></div><div>Pushed to default branch</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
diff -r 5f6f6189a239 -r f29e88d85ca2 source/CMakeLists.txt<br>
--- a/source/CMakeLists.txt     Thu Jan 04 13:56:07 2018 +0530<br>
+++ b/source/CMakeLists.txt     Thu Jan 04 15:16:06 2018 +0530<br>
@@ -29,7 +29,7 @@<br>
 option(STATIC_LINK_CRT "Statically link C runtime for release builds" OFF)<br>
 mark_as_advanced(FPROFILE_USE FPROFILE_GENERATE NATIVE_BUILD)<br>
 # X265_BUILD must be incremented each time the public API is changed<br>
-set(X265_BUILD 150)<br>
+set(X265_BUILD 151)<br>
 configure_file("${PROJECT_<wbr>SOURCE_DIR}/<a href="http://x265.def.in" rel="noreferrer" target="_blank">x265.def.in</a>"<br>
                "${PROJECT_BINARY_DIR}/x265.<wbr>def")<br>
 configure_file("${PROJECT_<wbr>SOURCE_DIR}/<a href="http://x265_config.h.in" rel="noreferrer" target="_blank">x265_config.h.in</a>"<br>
diff -r 5f6f6189a239 -r f29e88d85ca2 source/encoder/api.cpp<br>
--- a/source/encoder/api.cpp    Thu Jan 04 13:56:07 2018 +0530<br>
+++ b/source/encoder/api.cpp    Thu Jan 04 15:16:06 2018 +0530<br>
@@ -312,7 +312,9 @@<br>
         Encoder *encoder = static_cast<Encoder*>(enc);<br>
         x265_stats stats;<br>
         encoder->fetchStats(&stats, sizeof(stats));<br>
-        x265_csvlog_encode(enc, &stats, argc, argv);<br>
+        int padx = encoder->m_sps.<wbr>conformanceWindow.rightOffset;<br>
+        int pady = encoder->m_sps.<wbr>conformanceWindow.<wbr>bottomOffset;<br>
+        x265_csvlog_encode(encoder->m_<wbr>param, &stats, padx, pady, argc, argv);<br>
     }<br>
 }<br>
<br>
@@ -868,45 +870,38 @@<br>
     fflush(stderr);<br>
 }<br>
<br>
-void x265_csvlog_encode(x265_<wbr>encoder *enc, const x265_stats* stats, int argc, char** argv)<br>
+void x265_csvlog_encode(const x265_param *p, const x265_stats *stats, int padx, int pady, int argc, char** argv)<br>
 {<br>
-    if (enc)<br>
+    if (p && p->csvfpt)<br>
     {<br>
-        Encoder *encoder = static_cast<Encoder*>(enc);<br>
-        int padx = encoder->m_sps.<wbr>conformanceWindow.rightOffset;<br>
-        int pady = encoder->m_sps.<wbr>conformanceWindow.<wbr>bottomOffset;<br>
         const x265_api * api = x265_api_get(0);<br>
<br>
-        if (!encoder->m_param->csvfpt)<br>
-            return;<br>
-<br>
-        if (encoder->m_param-><wbr>csvLogLevel)<br>
+        if (p->csvLogLevel)<br>
         {<br>
             // adding summary to a per-frame csv log file, so it needs a summary header<br>
-            fprintf(encoder->m_param-><wbr>csvfpt, "\nSummary\n");<br>
-            fputs(summaryCSVHeader, encoder->m_param->csvfpt);<br>
+            fprintf(p->csvfpt, "\nSummary\n");<br>
+            fputs(summaryCSVHeader, p->csvfpt);<br>
         }<br>
<br>
         // CLI arguments or other<br>
         if (argc)<br>
         {<br>
-            fputc('"', encoder->m_param->csvfpt);<br>
+            fputc('"', p->csvfpt);<br>
             for (int i = 1; i < argc; i++)<br>
             {<br>
-                fputc(' ', encoder->m_param->csvfpt);<br>
-                fputs(argv[i], encoder->m_param->csvfpt);<br>
+                fputc(' ', p->csvfpt);<br>
+                fputs(argv[i], p->csvfpt);<br>
             }<br>
-            fputc('"', encoder->m_param->csvfpt);<br>
+            fputc('"', p->csvfpt);<br>
         }<br>
         else<br>
         {<br>
-            const x265_param* paramTemp = encoder->m_param;<br>
-            char *opts = x265_param2string((x265_param*<wbr>)paramTemp, padx, pady);<br>
+            char *opts = x265_param2string((x265_param*<wbr>)p, padx, pady);<br>
             if (opts)<br>
             {<br>
-                fputc('"', encoder->m_param->csvfpt);<br>
-                fputs(opts, encoder->m_param->csvfpt);<br>
-                fputc('"', encoder->m_param->csvfpt);<br>
+                fputc('"', p->csvfpt);<br>
+                fputs(opts, p->csvfpt);<br>
+                fputc('"', p->csvfpt);<br>
             }<br>
         }<br>
<br>
@@ -917,70 +912,71 @@<br>
         timeinfo = localtime(&now);<br>
         char buffer[200];<br>
         strftime(buffer, 128, "%c", timeinfo);<br>
-        fprintf(encoder->m_param-><wbr>csvfpt, ", %s, ", buffer);<br>
+        fprintf(p->csvfpt, ", %s, ", buffer);<br>
<br>
         // elapsed time, fps, bitrate<br>
-        fprintf(encoder->m_param-><wbr>csvfpt, "%.2f, %.2f, %.2f,",<br>
+        fprintf(p->csvfpt, "%.2f, %.2f, %.2f,",<br>
             stats->elapsedEncodeTime, stats->encodedPictureCount / stats->elapsedEncodeTime, stats->bitrate);<br>
<br>
-        if (encoder->m_param-><wbr>bEnablePsnr)<br>
-            fprintf(encoder->m_param-><wbr>csvfpt, " %.3lf, %.3lf, %.3lf, %.3lf,",<br>
+        if (p->bEnablePsnr)<br>
+            fprintf(p->csvfpt, " %.3lf, %.3lf, %.3lf, %.3lf,",<br>
             stats->globalPsnrY / stats->encodedPictureCount, stats->globalPsnrU / stats->encodedPictureCount,<br>
             stats->globalPsnrV / stats->encodedPictureCount, stats->globalPsnr);<br>
         else<br>
-            fprintf(encoder->m_param-><wbr>csvfpt, " -, -, -, -,");<br>
-        if (encoder->m_param-><wbr>bEnableSsim)<br>
-            fprintf(encoder->m_param-><wbr>csvfpt, " %.6f, %6.3f,", stats->globalSsim, x265_ssim2dB(stats-><wbr>globalSsim));<br>
+            fprintf(p->csvfpt, " -, -, -, -,");<br>
+        if (p->bEnableSsim)<br>
+            fprintf(p->csvfpt, " %.6f, %6.3f,", stats->globalSsim, x265_ssim2dB(stats-><wbr>globalSsim));<br>
         else<br>
-            fprintf(encoder->m_param-><wbr>csvfpt, " -, -,");<br>
+            fprintf(p->csvfpt, " -, -,");<br>
<br>
         if (stats->statsI.numPics)<br>
         {<br>
-            fprintf(encoder->m_param-><wbr>csvfpt, " %-6u, %2.2lf, %-8.2lf,", stats->statsI.numPics, stats->statsI.avgQp, stats->statsI.bitrate);<br>
-            if (encoder->m_param-><wbr>bEnablePsnr)<br>
-                fprintf(encoder->m_param-><wbr>csvfpt, " %.3lf, %.3lf, %.3lf,", stats->statsI.psnrY, stats->statsI.psnrU, stats->statsI.psnrV);<br>
+            fprintf(p->csvfpt, " %-6u, %2.2lf, %-8.2lf,", stats->statsI.numPics, stats->statsI.avgQp, stats->statsI.bitrate);<br>
+            if (p->bEnablePsnr)<br>
+                fprintf(p->csvfpt, " %.3lf, %.3lf, %.3lf,", stats->statsI.psnrY, stats->statsI.psnrU, stats->statsI.psnrV);<br>
             else<br>
-                fprintf(encoder->m_param-><wbr>csvfpt, " -, -, -,");<br>
-            if (encoder->m_param-><wbr>bEnableSsim)<br>
-                fprintf(encoder->m_param-><wbr>csvfpt, " %.3lf,", stats->statsI.ssim);<br>
+                fprintf(p->csvfpt, " -, -, -,");<br>
+            if (p->bEnableSsim)<br>
+                fprintf(p->csvfpt, " %.3lf,", stats->statsI.ssim);<br>
             else<br>
-                fprintf(encoder->m_param-><wbr>csvfpt, " -,");<br>
+                fprintf(p->csvfpt, " -,");<br>
         }<br>
         else<br>
-            fprintf(encoder->m_param-><wbr>csvfpt, " -, -, -, -, -, -, -,");<br>
+            fprintf(p->csvfpt, " -, -, -, -, -, -, -,");<br>
<br>
         if (stats->statsP.numPics)<br>
         {<br>
-            fprintf(encoder->m_param-><wbr>csvfpt, " %-6u, %2.2lf, %-8.2lf,", stats->statsP.numPics, stats->statsP.avgQp, stats->statsP.bitrate);<br>
-            if (encoder->m_param-><wbr>bEnablePsnr)<br>
-                fprintf(encoder->m_param-><wbr>csvfpt, " %.3lf, %.3lf, %.3lf,", stats->statsP.psnrY, stats->statsP.psnrU, stats->statsP.psnrV);<br>
+            fprintf(p->csvfpt, " %-6u, %2.2lf, %-8.2lf,", stats->statsP.numPics, stats->statsP.avgQp, stats->statsP.bitrate);<br>
+            if (p->bEnablePsnr)<br>
+                fprintf(p->csvfpt, " %.3lf, %.3lf, %.3lf,", stats->statsP.psnrY, stats->statsP.psnrU, stats->statsP.psnrV);<br>
             else<br>
-                fprintf(encoder->m_param-><wbr>csvfpt, " -, -, -,");<br>
-            if (encoder->m_param-><wbr>bEnableSsim)<br>
-                fprintf(encoder->m_param-><wbr>csvfpt, " %.3lf,", stats->statsP.ssim);<br>
+                fprintf(p->csvfpt, " -, -, -,");<br>
+            if (p->bEnableSsim)<br>
+                fprintf(p->csvfpt, " %.3lf,", stats->statsP.ssim);<br>
             else<br>
-                fprintf(encoder->m_param-><wbr>csvfpt, " -,");<br>
+                fprintf(p->csvfpt, " -,");<br>
         }<br>
         else<br>
-            fprintf(encoder->m_param-><wbr>csvfpt, " -, -, -, -, -, -, -,");<br>
+            fprintf(p->csvfpt, " -, -, -, -, -, -, -,");<br>
<br>
         if (stats->statsB.numPics)<br>
         {<br>
-            fprintf(encoder->m_param-><wbr>csvfpt, " %-6u, %2.2lf, %-8.2lf,", stats->statsB.numPics, stats->statsB.avgQp, stats->statsB.bitrate);<br>
-            if (encoder->m_param-><wbr>bEnablePsnr)<br>
-                fprintf(encoder->m_param-><wbr>csvfpt, " %.3lf, %.3lf, %.3lf,", stats->statsB.psnrY, stats->statsB.psnrU, stats->statsB.psnrV);<br>
+            fprintf(p->csvfpt, " %-6u, %2.2lf, %-8.2lf,", stats->statsB.numPics, stats->statsB.avgQp, stats->statsB.bitrate);<br>
+            if (p->bEnablePsnr)<br>
+                fprintf(p->csvfpt, " %.3lf, %.3lf, %.3lf,", stats->statsB.psnrY, stats->statsB.psnrU, stats->statsB.psnrV);<br>
             else<br>
-                fprintf(encoder->m_param-><wbr>csvfpt, " -, -, -,");<br>
-            if (encoder->m_param-><wbr>bEnableSsim)<br>
-                fprintf(encoder->m_param-><wbr>csvfpt, " %.3lf,", stats->statsB.ssim);<br>
+                fprintf(p->csvfpt, " -, -, -,");<br>
+            if (p->bEnableSsim)<br>
+                fprintf(p->csvfpt, " %.3lf,", stats->statsB.ssim);<br>
             else<br>
-                fprintf(encoder->m_param-><wbr>csvfpt, " -,");<br>
+                fprintf(p->csvfpt, " -,");<br>
         }<br>
         else<br>
-            fprintf(encoder->m_param-><wbr>csvfpt, " -, -, -, -, -, -, -,");<br>
+            fprintf(p->csvfpt, " -, -, -, -, -, -, -,");<br>
<br>
-        fprintf(encoder->m_param-><wbr>csvfpt, " %-6u, %-6u, %s\n", stats->maxCLL, stats->maxFALL, api->version_str);<br>
+        fprintf(p->csvfpt, " %-6u, %-6u, %s\n", stats->maxCLL, stats->maxFALL, api->version_str);<br>
     }<br>
+<br>
 }<br>
<br>
 /* The dithering algorithm is based on Sierra-2-4A error diffusion.<br>
diff -r 5f6f6189a239 -r f29e88d85ca2 source/x265.h<br>
--- a/source/x265.h     Thu Jan 04 13:56:07 2018 +0530<br>
+++ b/source/x265.h     Thu Jan 04 15:16:06 2018 +0530<br>
@@ -1779,9 +1779,10 @@<br>
 void x265_csvlog_frame(const x265_param *, const x265_picture *);<br>
<br>
 /* Log final encode statistics to the CSV file handle. 'argc' and 'argv' are<br>
- * intended to be command line arguments passed to the encoder. Encode<br>
+ * intended to be command line arguments passed to the encoder. padx and pady are<br>
+ * padding offsets for conformance and can be given from sps settings. Encode<br>
  * statistics should be queried from the encoder just prior to closing it. */<br>
-void x265_csvlog_encode(x265_<wbr>encoder *encoder, const x265_stats *, int argc, char** argv);<br>
+void x265_csvlog_encode(const x265_param*, const x265_stats *, int padx, int pady, int argc, char** argv);<br>
<br>
 /* In-place downshift from a bit-depth greater than 8 to a bit-depth of 8, using<br>
  * the residual bits to dither each row. */<br>
@@ -1836,7 +1837,7 @@<br>
     int           (*get_ref_frame_list)(x265_<wbr>encoder*, x265_picyuv**, x265_picyuv**, int, int, int*, int*);<br>
     FILE*         (*csvlog_open)(const x265_param*);<br>
     void          (*csvlog_frame)(const x265_param*, const x265_picture*);<br>
-    void          (*csvlog_encode)(x265_encoder*<wbr>, const x265_stats*, int, char**);<br>
+    void          (*csvlog_encode)(const x265_param*, const x265_stats *, int, int, int, char**);<br>
     void          (*dither_image)(x265_picture*, int, int, int16_t*, int);<br>
     int           (*set_analysis_data)(x265_<wbr>encoder *encoder, x265_analysis_data *analysis_data, int poc, uint32_t cuBytes);<br>
     /* add new pointers to the end, or increment X265_MAJOR_VERSION */<br>
<br>______________________________<wbr>_________________<br>
x265-devel mailing list<br>
<a href="mailto:x265-devel@videolan.org">x265-devel@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/x265-devel" rel="noreferrer" target="_blank">https://mailman.videolan.org/<wbr>listinfo/x265-devel</a><br>
<br></blockquote></div><br></div></div>