[x265] [PATCH] csv: dump input sequence and preset info in csv

Mahesh Pittala mahesh at multicorewareinc.com
Fri Sep 11 15:24:05 CEST 2015


planning to re-organize performance tracking charts so we thought it would
be helpful if we dump input sequence and preset info in separate columns.

On Fri, Sep 11, 2015 at 6:37 PM, <mahesh at multicorewareinc.com> wrote:

> # HG changeset patch
> # User Mahesh Pittala <mahesh at multicorewareinc.com>
> # Date 1441976825 -19800
> #      Fri Sep 11 18:37:05 2015 +0530
> # Node ID ee6208293726f96786389b342bc810557763bd26
> # Parent  365f7ed4d89628d49cd6af8d81d4edc01f73ffad
> csv: dump input sequence and preset info in csv
>
> diff -r 365f7ed4d896 -r ee6208293726 source/x265-extras.cpp
> --- a/source/x265-extras.cpp    Tue Sep 08 16:38:01 2015 +0530
> +++ b/source/x265-extras.cpp    Fri Sep 11 18:37:05 2015 +0530
> @@ -31,7 +31,7 @@
>  using namespace X265_NS;
>
>  static const char* summaryCSVHeader =
> -    "Command, Date/Time, Elapsed Time, FPS, Bitrate, "
> +    "Input Sequence, Preset, Command, Date/Time, Elapsed Time, FPS,
> Bitrate, "
>      "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), "
> @@ -185,7 +185,7 @@
>      fflush(stderr);
>  }
>
> -void x265_csvlog_encode(FILE* csvfp, const x265_api& api, const
> x265_param& param, const x265_stats& stats, int level, int argc, char**
> argv)
> +void x265_csvlog_encode(FILE* csvfp, const x265_api& api, const
> x265_param& param, const x265_stats& stats, int level, int argc, char**
> argv, char *prst, const char *inputseq)
>  {
>      if (!csvfp)
>          return;
> @@ -197,11 +197,31 @@
>          fputs(summaryCSVHeader, csvfp);
>      }
>
> +    // strip input sequence path
> +    char *tok;
> +    char *prevtok = NULL;
> +    char temp[256];
> +    strcpy(temp,inputseq);
> +    tok = strtok(temp,"\\://");
> +    while(tok != NULL)
> +    {
> +        prevtok = tok;
> +        tok = strtok(NULL,"//:\\");
> +    }
> +
> +    fputs(prevtok, csvfp);
> +    fputc(',', csvfp);
> +    if (prst == NULL)
> +        fputs("medium", csvfp);
> +    else
> +        fputs(prst, csvfp);
> +    fputc(',', csvfp);
> +
>      // CLI arguments or other
> -    for (int i = 1; i < argc; i++)
> -    {
> -        if (i) fputc(' ', csvfp);
> -        fputs(argv[i], csvfp);
> +    for (int i = 1; i < argc; i++)
> +    {
> +        if (i) fputc(' ', csvfp);
> +        fputs(argv[i], csvfp);
>      }
>
>      // current date and time
> diff -r 365f7ed4d896 -r ee6208293726 source/x265-extras.h
> --- a/source/x265-extras.h      Tue Sep 08 16:38:01 2015 +0530
> +++ b/source/x265-extras.h      Fri Sep 11 18:37:05 2015 +0530
> @@ -53,7 +53,7 @@
>  /* Log final encode statistics to the CSV file handle. 'argc' and 'argv'
> are
>   * intended to be command line arguments passed to the encoder. Encode
>   * statistics should be queried from the encoder just prior to closing
> it. */
> -LIBAPI void x265_csvlog_encode(FILE* csvfp, const x265_api& api, const
> x265_param& param, const x265_stats& stats, int level, int argc, char**
> argv);
> +LIBAPI void x265_csvlog_encode(FILE* csvfp, const x265_api& api, const
> x265_param& param, const x265_stats& stats, int level, int argc, char**
> argv, char * prst, const char *inputseq);
>
>  /* In-place downshift from a bit-depth greater than 8 to a bit-depth of
> 8, using
>   * the residual bits to dither each row. */
> diff -r 365f7ed4d896 -r ee6208293726 source/x265.cpp
> --- a/source/x265.cpp   Tue Sep 08 16:38:01 2015 +0530
> +++ b/source/x265.cpp   Fri Sep 11 18:37:05 2015 +0530
> @@ -90,6 +90,8 @@
>      uint64_t totalbytes;
>      int64_t startTime;
>      int64_t prevUpdateTime;
> +    char *prst;
> +    const char *inputseq;
>
>      /* in microseconds */
>      static const int UPDATE_INTERVAL = 250000;
> @@ -113,6 +115,8 @@
>          prevUpdateTime = 0;
>          bDither = false;
>          csvLogLevel = 0;
> +        prst = NULL;
> +        inputseq = NULL;
>      }
>
>      void destroy();
> @@ -194,7 +198,10 @@
>          if (c == -1)
>              break;
>          else if (c == 'p')
> +        {
>              preset = optarg;
> +            prst = optarg;
> +        }
>          else if (c == 't')
>              tune = optarg;
>          else if (c == 'D')
> @@ -204,7 +211,6 @@
>          else if (c == '?')
>              bShowHelp = true;
>      }
> -
>      if (!outputBitDepth && profile)
>      {
>          /* try to derive the output bit depth from the requested profile
> */
> @@ -373,6 +379,7 @@
>      info.sarHeight = param->vui.sarHeight;
>      info.skipFrames = seek;
>      info.frameCount = 0;
> +    inputseq = info.filename;
>      getParamAspectRatio(param, info.sarWidth, info.sarHeight);
>
>      this->input = InputFile::open(info, this->bForceY4m);
> @@ -715,7 +722,7 @@
>
>      api->encoder_get_stats(encoder, &stats, sizeof(stats));
>      if (cliopt.csvfpt && !b_ctrl_c)
> -        x265_csvlog_encode(cliopt.csvfpt, *api, *param, stats,
> cliopt.csvLogLevel, argc, argv);
> +        x265_csvlog_encode(cliopt.csvfpt, *api, *param, stats,
> cliopt.csvLogLevel, argc, argv, cliopt.prst, cliopt.inputseq);
>      api->encoder_close(encoder);
>
>      int64_t second_largest_pts = 0;
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20150911/a1f148c5/attachment.html>


More information about the x265-devel mailing list