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