[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