[x265] [PATCH] x265.h: change references into pointers for C compatibility

Pradeep Ramachandran pradeep at multicorewareinc.com
Tue Nov 14 06:13:38 CET 2017


On Mon, Nov 13, 2017 at 2:00 AM, Ma0 <mateuszb at poczta.onet.pl> wrote:

> # HG changeset patch
> # User Ma0 <mateuszb at poczta.onet.pl>
> # Date 1510517111 -3600
> #      Sun Nov 12 21:05:11 2017 +0100
> # Node ID 06d89671aec95337c3b458985bd1f5361bf61bb0
> # Parent  563cbe1f4a21dcfe2117ccaa874b713d94434f92
> x265.h: change references into pointers for C compatibility
>
> Commit 563cbe1 'api: move csv and dither functions into api structure'
> inserts to x265.h C++ only specific code (references) that broke
> compatibility with C compilers. This patch fixes this by changing
> code style only.
>

Pushed to default. Thanks for the critical fix!


>
> diff -r 563cbe1f4a21 -r 06d89671aec9 source/encoder/api.cpp
> --- a/source/encoder/api.cpp    Wed Nov 08 17:08:18 2017 +0530
> +++ b/source/encoder/api.cpp    Sun Nov 12 21:05:11 2017 +0100
> @@ -127,7 +127,7 @@
>      /* Try to open CSV file handle */
>      if (encoder->m_param->csvfn)
>      {
> -        encoder->m_param->csvfpt = x265_csvlog_open(*encoder->m_param);
> +        encoder->m_param->csvfpt = x265_csvlog_open(encoder->m_param);
>          if (!encoder->m_param->csvfpt)
>          {
>              x265_log(encoder->m_param, X265_LOG_ERROR, "Unable to open
> CSV log file <%s>, aborting\n", encoder->m_param->csvfn);
> @@ -287,7 +287,7 @@
>          *pi_nal = 0;
>
>      if (numEncoded && encoder->m_param->csvLogLevel)
> -        x265_csvlog_frame(*encoder->m_param, *pic_out);
> +        x265_csvlog_frame(encoder->m_param, pic_out);
>
>      if (numEncoded < 0)
>          encoder->m_aborted = true;
> @@ -311,7 +311,7 @@
>          Encoder *encoder = static_cast<Encoder*>(enc);
>          x265_stats stats;
>          encoder->fetchStats(&stats, sizeof(stats));
> -        x265_csvlog_encode(enc, stats, argc, argv);
> +        x265_csvlog_encode(enc, &stats, argc, argv);
>      }
>  }
>
> @@ -638,86 +638,86 @@
>      return &libapi;
>  }
>
> -FILE* x265_csvlog_open(const x265_param& param)
> +FILE* x265_csvlog_open(const x265_param* param)
>  {
> -    FILE *csvfp = x265_fopen(param.csvfn, "r");
> +    FILE *csvfp = x265_fopen(param->csvfn, "r");
>      if (csvfp)
>      {
>          /* file already exists, re-open for append */
>          fclose(csvfp);
> -        return x265_fopen(param.csvfn, "ab");
> +        return x265_fopen(param->csvfn, "ab");
>      }
>      else
>      {
>          /* new CSV file, write header */
> -        csvfp = x265_fopen(param.csvfn, "wb");
> +        csvfp = x265_fopen(param->csvfn, "wb");
>          if (csvfp)
>          {
> -            if (param.csvLogLevel)
> +            if (param->csvLogLevel)
>              {
>                  fprintf(csvfp, "Encode Order, Type, POC, QP, Bits,
> Scenecut, ");
> -                if (param.csvLogLevel >= 2)
> +                if (param->csvLogLevel >= 2)
>                      fprintf(csvfp, "I/P cost ratio, ");
> -                if (param.rc.rateControlMode == X265_RC_CRF)
> +                if (param->rc.rateControlMode == X265_RC_CRF)
>                      fprintf(csvfp, "RateFactor, ");
> -                if (param.rc.vbvBufferSize)
> +                if (param->rc.vbvBufferSize)
>                      fprintf(csvfp, "BufferFill, ");
> -                if (param.bEnablePsnr)
> +                if (param->bEnablePsnr)
>                      fprintf(csvfp, "Y PSNR, U PSNR, V PSNR, YUV PSNR, ");
> -                if (param.bEnableSsim)
> +                if (param->bEnableSsim)
>                      fprintf(csvfp, "SSIM, SSIM(dB), ");
>                  fprintf(csvfp, "Latency, ");
>                  fprintf(csvfp, "List 0, List 1");
> -                uint32_t size = param.maxCUSize;
> -                for (uint32_t depth = 0; depth <= param.maxCUDepth;
> depth++)
> +                uint32_t size = param->maxCUSize;
> +                for (uint32_t depth = 0; depth <= param->maxCUDepth;
> depth++)
>                  {
>                      fprintf(csvfp, ", Intra %dx%d DC, Intra %dx%d Planar,
> Intra %dx%d Ang", size, size, size, size, size, size);
>                      size /= 2;
>                  }
>                  fprintf(csvfp, ", 4x4");
> -                size = param.maxCUSize;
> -                if (param.bEnableRectInter)
> +                size = param->maxCUSize;
> +                if (param->bEnableRectInter)
>                  {
> -                    for (uint32_t depth = 0; depth <= param.maxCUDepth;
> depth++)
> +                    for (uint32_t depth = 0; depth <= param->maxCUDepth;
> depth++)
>                      {
>                          fprintf(csvfp, ", Inter %dx%d, Inter %dx%d
> (Rect)", size, size, size, size);
> -                        if (param.bEnableAMP)
> +                        if (param->bEnableAMP)
>                              fprintf(csvfp, ", Inter %dx%d (Amp)", size,
> size);
>                          size /= 2;
>                      }
>                  }
>                  else
>                  {
> -                    for (uint32_t depth = 0; depth <= param.maxCUDepth;
> depth++)
> +                    for (uint32_t depth = 0; depth <= param->maxCUDepth;
> depth++)
>                      {
>                          fprintf(csvfp, ", Inter %dx%d", size, size);
>                          size /= 2;
>                      }
>                  }
> -                size = param.maxCUSize;
> -                for (uint32_t depth = 0; depth <= param.maxCUDepth;
> depth++)
> +                size = param->maxCUSize;
> +                for (uint32_t depth = 0; depth <= param->maxCUDepth;
> depth++)
>                  {
>                      fprintf(csvfp, ", Skip %dx%d", size, size);
>                      size /= 2;
>                  }
> -                size = param.maxCUSize;
> -                for (uint32_t depth = 0; depth <= param.maxCUDepth;
> depth++)
> +                size = param->maxCUSize;
> +                for (uint32_t depth = 0; depth <= param->maxCUDepth;
> depth++)
>                  {
>                      fprintf(csvfp, ", Merge %dx%d", size, size);
>                      size /= 2;
>                  }
>
> -                if (param.csvLogLevel >= 2)
> +                if (param->csvLogLevel >= 2)
>                  {
>                      fprintf(csvfp, ", Avg Luma Distortion, Avg Chroma
> Distortion, Avg psyEnergy, Avg Residual Energy,"
>                          " Min Luma Level, Max Luma Level, Avg Luma
> Level");
>
> -                    if (param.internalCsp != X265_CSP_I400)
> +                    if (param->internalCsp != X265_CSP_I400)
>                          fprintf(csvfp, ", Min Cb Level, Max Cb Level, Avg
> Cb Level, Min Cr Level, Max Cr Level, Avg Cr Level");
>
>                      /* PU statistics */
> -                    size = param.maxCUSize;
> -                    for (uint32_t i = 0; i< param.maxLog2CUSize -
> (uint32_t)g_log2Size[param.minCUSize] + 1; i++)
> +                    size = param->maxCUSize;
> +                    for (uint32_t i = 0; i< param->maxLog2CUSize -
> (uint32_t)g_log2Size[param->minCUSize] + 1; i++)
>                      {
>                          fprintf(csvfp, ", Intra %dx%d", size, size);
>                          fprintf(csvfp, ", Skip %dx%d", size, size);
> @@ -731,7 +731,7 @@
>                          size /= 2;
>                      }
>
> -                    if ((uint32_t)g_log2Size[param.minCUSize] == 3)
> +                    if ((uint32_t)g_log2Size[param->minCUSize] == 3)
>                          fprintf(csvfp, ", 4x4");
>
>                      /* detailed performance statistics */
> @@ -748,113 +748,113 @@
>  }
>
>  // per frame CSV logging
> -void x265_csvlog_frame(const x265_param& param, const x265_picture& pic)
> +void x265_csvlog_frame(const x265_param* param, const x265_picture* pic)
>  {
> -    if (!param.csvfpt)
> +    if (!param->csvfpt)
>          return;
>
> -    const x265_frame_stats* frameStats = &pic.frameData;
> -    fprintf(param.csvfpt, "%d, %c-SLICE, %4d, %2.2lf, %10d, %d,",
> frameStats->encoderOrder, frameStats->sliceType, frameStats->poc,
> -
> frameStats->qp, (int)frameStats->bits, frameStats->bScenecut);
> -    if (param.csvLogLevel >= 2)
> -        fprintf(param.csvfpt, "%.2f,", frameStats->ipCostRatio);
> -    if (param.rc.rateControlMode == X265_RC_CRF)
> -        fprintf(param.csvfpt, "%.3lf,", frameStats->rateFactor);
> -    if (param.rc.vbvBufferSize)
> -        fprintf(param.csvfpt, "%.3lf,", frameStats->bufferFill);
> -    if (param.bEnablePsnr)
> -        fprintf(param.csvfpt, "%.3lf, %.3lf, %.3lf, %.3lf,",
> frameStats->psnrY, frameStats->psnrU, frameStats->psnrV, frameStats->psnr);
> -    if (param.bEnableSsim)
> -        fprintf(param.csvfpt, " %.6f, %6.3f,", frameStats->ssim,
> x265_ssim2dB(frameStats->ssim));
> -    fprintf(param.csvfpt, "%d, ", frameStats->frameLatency);
> +    const x265_frame_stats* frameStats = &pic->frameData;
> +    fprintf(param->csvfpt, "%d, %c-SLICE, %4d, %2.2lf, %10d, %d,",
> frameStats->encoderOrder, frameStats->sliceType, frameStats->poc,
> +
>  frameStats->qp, (int)frameStats->bits, frameStats->bScenecut);
> +    if (param->csvLogLevel >= 2)
> +        fprintf(param->csvfpt, "%.2f,", frameStats->ipCostRatio);
> +    if (param->rc.rateControlMode == X265_RC_CRF)
> +        fprintf(param->csvfpt, "%.3lf,", frameStats->rateFactor);
> +    if (param->rc.vbvBufferSize)
> +        fprintf(param->csvfpt, "%.3lf,", frameStats->bufferFill);
> +    if (param->bEnablePsnr)
> +        fprintf(param->csvfpt, "%.3lf, %.3lf, %.3lf, %.3lf,",
> frameStats->psnrY, frameStats->psnrU, frameStats->psnrV, frameStats->psnr);
> +    if (param->bEnableSsim)
> +        fprintf(param->csvfpt, " %.6f, %6.3f,", frameStats->ssim,
> x265_ssim2dB(frameStats->ssim));
> +    fprintf(param->csvfpt, "%d, ", frameStats->frameLatency);
>      if (frameStats->sliceType == 'I' || frameStats->sliceType == 'i')
> -        fputs(" -, -,", param.csvfpt);
> +        fputs(" -, -,", param->csvfpt);
>      else
>      {
>          int i = 0;
>          while (frameStats->list0POC[i] != -1)
> -            fprintf(param.csvfpt, "%d ", frameStats->list0POC[i++]);
> -        fprintf(param.csvfpt, ",");
> +            fprintf(param->csvfpt, "%d ", frameStats->list0POC[i++]);
> +        fprintf(param->csvfpt, ",");
>          if (frameStats->sliceType != 'P')
>          {
>              i = 0;
>              while (frameStats->list1POC[i] != -1)
> -                fprintf(param.csvfpt, "%d ", frameStats->list1POC[i++]);
> -            fprintf(param.csvfpt, ",");
> +                fprintf(param->csvfpt, "%d ", frameStats->list1POC[i++]);
> +            fprintf(param->csvfpt, ",");
>          }
>          else
> -            fputs(" -,", param.csvfpt);
> +            fputs(" -,", param->csvfpt);
>      }
>
> -    if (param.csvLogLevel)
> +    if (param->csvLogLevel)
>      {
> -        for (uint32_t depth = 0; depth <= param.maxCUDepth; depth++)
> -            fprintf(param.csvfpt, "%5.2lf%%, %5.2lf%%, %5.2lf%%,",
> frameStats->cuStats.percentIntraDistribution[depth][0],
> -
>  frameStats->cuStats.percentIntraDistribution[depth][1],
> -
>  frameStats->cuStats.percentIntraDistribution[depth][2]);
> -        fprintf(param.csvfpt, "%5.2lf%%", frameStats->cuStats.
> percentIntraNxN);
> -        if (param.bEnableRectInter)
> +        for (uint32_t depth = 0; depth <= param->maxCUDepth; depth++)
> +            fprintf(param->csvfpt, "%5.2lf%%, %5.2lf%%, %5.2lf%%,",
> frameStats->cuStats.percentIntraDistribution[depth][0],
> +
> frameStats->cuStats.percentIntraDistribution[depth][1],
> +
> frameStats->cuStats.percentIntraDistribution[depth][2]);
> +        fprintf(param->csvfpt, "%5.2lf%%", frameStats->cuStats.
> percentIntraNxN);
> +        if (param->bEnableRectInter)
>          {
> -            for (uint32_t depth = 0; depth <= param.maxCUDepth; depth++)
> +            for (uint32_t depth = 0; depth <= param->maxCUDepth; depth++)
>              {
> -                fprintf(param.csvfpt, ", %5.2lf%%, %5.2lf%%",
> frameStats->cuStats.percentInterDistribution[depth][0],
> -
> frameStats->cuStats.percentInterDistribution[depth][1]);
> -                if (param.bEnableAMP)
> -                    fprintf(param.csvfpt, ", %5.2lf%%",
> frameStats->cuStats.percentInterDistribution[depth][2]);
> +                fprintf(param->csvfpt, ", %5.2lf%%, %5.2lf%%",
> frameStats->cuStats.percentInterDistribution[depth][0],
> +
>  frameStats->cuStats.percentInterDistribution[depth][1]);
> +                if (param->bEnableAMP)
> +                    fprintf(param->csvfpt, ", %5.2lf%%",
> frameStats->cuStats.percentInterDistribution[depth][2]);
>              }
>          }
>          else
>          {
> -            for (uint32_t depth = 0; depth <= param.maxCUDepth; depth++)
> -                fprintf(param.csvfpt, ", %5.2lf%%", frameStats->cuStats.
> percentInterDistribution[depth][0]);
> +            for (uint32_t depth = 0; depth <= param->maxCUDepth; depth++)
> +                fprintf(param->csvfpt, ", %5.2lf%%", frameStats->cuStats.
> percentInterDistribution[depth][0]);
>          }
> -        for (uint32_t depth = 0; depth <= param.maxCUDepth; depth++)
> -            fprintf(param.csvfpt, ", %5.2lf%%", frameStats->cuStats.
> percentSkipCu[depth]);
> -        for (uint32_t depth = 0; depth <= param.maxCUDepth; depth++)
> -            fprintf(param.csvfpt, ", %5.2lf%%", frameStats->cuStats.
> percentMergeCu[depth]);
> +        for (uint32_t depth = 0; depth <= param->maxCUDepth; depth++)
> +            fprintf(param->csvfpt, ", %5.2lf%%", frameStats->cuStats.
> percentSkipCu[depth]);
> +        for (uint32_t depth = 0; depth <= param->maxCUDepth; depth++)
> +            fprintf(param->csvfpt, ", %5.2lf%%", frameStats->cuStats.
> percentMergeCu[depth]);
>      }
>
> -    if (param.csvLogLevel >= 2)
> +    if (param->csvLogLevel >= 2)
>      {
> -        fprintf(param.csvfpt, ", %.2lf, %.2lf, %.2lf, %.2lf ",
> frameStats->avgLumaDistortion,
> -
>  frameStats->avgChromaDistortion,
> -
>  frameStats->avgPsyEnergy,
> -
>  frameStats->avgResEnergy);
> +        fprintf(param->csvfpt, ", %.2lf, %.2lf, %.2lf, %.2lf ",
> frameStats->avgLumaDistortion,
> +
> frameStats->avgChromaDistortion,
> +
> frameStats->avgPsyEnergy,
> +
> frameStats->avgResEnergy);
>
> -        fprintf(param.csvfpt, ", %d, %d, %.2lf",
> frameStats->minLumaLevel, frameStats->maxLumaLevel,
> frameStats->avgLumaLevel);
> +        fprintf(param->csvfpt, ", %d, %d, %.2lf",
> frameStats->minLumaLevel, frameStats->maxLumaLevel,
> frameStats->avgLumaLevel);
>
> -        if (param.internalCsp != X265_CSP_I400)
> +        if (param->internalCsp != X265_CSP_I400)
>          {
> -            fprintf(param.csvfpt, ", %d, %d, %.2lf",
> frameStats->minChromaULevel, frameStats->maxChromaULevel,
> frameStats->avgChromaULevel);
> -            fprintf(param.csvfpt, ", %d, %d, %.2lf",
> frameStats->minChromaVLevel, frameStats->maxChromaVLevel,
> frameStats->avgChromaVLevel);
> +            fprintf(param->csvfpt, ", %d, %d, %.2lf",
> frameStats->minChromaULevel, frameStats->maxChromaULevel,
> frameStats->avgChromaULevel);
> +            fprintf(param->csvfpt, ", %d, %d, %.2lf",
> frameStats->minChromaVLevel, frameStats->maxChromaVLevel,
> frameStats->avgChromaVLevel);
>          }
>
> -        for (uint32_t i = 0; i < param.maxLog2CUSize -
> (uint32_t)g_log2Size[param.minCUSize] + 1; i++)
> +        for (uint32_t i = 0; i < param->maxLog2CUSize -
> (uint32_t)g_log2Size[param->minCUSize] + 1; i++)
>          {
> -            fprintf(param.csvfpt, ", %.2lf%%", frameStats->puStats.
> percentIntraPu[i]);
> -            fprintf(param.csvfpt, ", %.2lf%%", frameStats->puStats.
> percentSkipPu[i]);
> -            fprintf(param.csvfpt, ",%.2lf%%", frameStats->puStats.
> percentAmpPu[i]);
> +            fprintf(param->csvfpt, ", %.2lf%%", frameStats->puStats.
> percentIntraPu[i]);
> +            fprintf(param->csvfpt, ", %.2lf%%", frameStats->puStats.
> percentSkipPu[i]);
> +            fprintf(param->csvfpt, ",%.2lf%%", frameStats->puStats.
> percentAmpPu[i]);
>              for (uint32_t j = 0; j < 3; j++)
>              {
> -                fprintf(param.csvfpt, ", %.2lf%%", frameStats->puStats.
> percentInterPu[i][j]);
> -                fprintf(param.csvfpt, ", %.2lf%%", frameStats->puStats.
> percentMergePu[i][j]);
> +                fprintf(param->csvfpt, ", %.2lf%%", frameStats->puStats.
> percentInterPu[i][j]);
> +                fprintf(param->csvfpt, ", %.2lf%%", frameStats->puStats.
> percentMergePu[i][j]);
>              }
>          }
> -        if ((uint32_t)g_log2Size[param.minCUSize] == 3)
> -            fprintf(param.csvfpt, ",%.2lf%%", frameStats->puStats.
> percentNxN);
> +        if ((uint32_t)g_log2Size[param->minCUSize] == 3)
> +            fprintf(param->csvfpt, ",%.2lf%%", frameStats->puStats.
> percentNxN);
>
> -        fprintf(param.csvfpt, ", %.1lf, %.1lf, %.1lf, %.1lf, %.1lf,
> %.1lf, %.1lf,", frameStats->decideWaitTime, frameStats->row0WaitTime,
> -
>           frameStats->wallTime, frameStats->refWaitWallTime,
> -
>           frameStats->totalCTUTime, frameStats->stallTime,
> -
>           frameStats->totalFrameTime);
> +        fprintf(param->csvfpt, ", %.1lf, %.1lf, %.1lf, %.1lf, %.1lf,
> %.1lf, %.1lf,", frameStats->decideWaitTime, frameStats->row0WaitTime,
> +
>            frameStats->wallTime, frameStats->refWaitWallTime,
> +
>            frameStats->totalCTUTime, frameStats->stallTime,
> +
>            frameStats->totalFrameTime);
>
> -        fprintf(param.csvfpt, " %.3lf, %d", frameStats->avgWPP,
> frameStats->countRowBlocks);
> +        fprintf(param->csvfpt, " %.3lf, %d", frameStats->avgWPP,
> frameStats->countRowBlocks);
>      }
> -    fprintf(param.csvfpt, "\n");
> +    fprintf(param->csvfpt, "\n");
>      fflush(stderr);
>  }
>
> -void x265_csvlog_encode(x265_encoder *enc, const x265_stats& stats, int
> argc, char** argv)
> +void x265_csvlog_encode(x265_encoder *enc, const x265_stats* stats, int
> argc, char** argv)
>  {
>      if (enc)
>      {
> @@ -907,65 +907,65 @@
>
>          // elapsed time, fps, bitrate
>          fprintf(encoder->m_param->csvfpt, "%.2f, %.2f, %.2f,",
> -            stats.elapsedEncodeTime, stats.encodedPictureCount /
> stats.elapsedEncodeTime, stats.bitrate);
> +            stats->elapsedEncodeTime, stats->encodedPictureCount /
> stats->elapsedEncodeTime, stats->bitrate);
>
>          if (encoder->m_param->bEnablePsnr)
>              fprintf(encoder->m_param->csvfpt, " %.3lf, %.3lf, %.3lf,
> %.3lf,",
> -            stats.globalPsnrY / stats.encodedPictureCount,
> stats.globalPsnrU / stats.encodedPictureCount,
> -            stats.globalPsnrV / stats.encodedPictureCount,
> stats.globalPsnr);
> +            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(encoder->m_param->csvfpt, " %.6f, %6.3f,",
> stats->globalSsim, x265_ssim2dB(stats->globalSsim));
>          else
>              fprintf(encoder->m_param->csvfpt, " -, -,");
>
> -        if (stats.statsI.numPics)
> +        if (stats->statsI.numPics)
>          {
> -            fprintf(encoder->m_param->csvfpt, " %-6u, %2.2lf, %-8.2lf,",
> stats.statsI.numPics, stats.statsI.avgQp, stats.statsI.bitrate);
> +            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(encoder->m_param->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(encoder->m_param->csvfpt, " %.3lf,",
> stats->statsI.ssim);
>              else
>                  fprintf(encoder->m_param->csvfpt, " -,");
>          }
>          else
>              fprintf(encoder->m_param->csvfpt, " -, -, -, -, -, -, -,");
>
> -        if (stats.statsP.numPics)
> +        if (stats->statsP.numPics)
>          {
> -            fprintf(encoder->m_param->csvfpt, " %-6u, %2.2lf, %-8.2lf,",
> stats.statsP.numPics, stats.statsP.avgQp, stats.statsP.bitrate);
> +            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(encoder->m_param->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(encoder->m_param->csvfpt, " %.3lf,",
> stats->statsP.ssim);
>              else
>                  fprintf(encoder->m_param->csvfpt, " -,");
>          }
>          else
>              fprintf(encoder->m_param->csvfpt, " -, -, -, -, -, -, -,");
>
> -        if (stats.statsB.numPics)
> +        if (stats->statsB.numPics)
>          {
> -            fprintf(encoder->m_param->csvfpt, " %-6u, %2.2lf, %-8.2lf,",
> stats.statsB.numPics, stats.statsB.avgQp, stats.statsB.bitrate);
> +            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(encoder->m_param->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(encoder->m_param->csvfpt, " %.3lf,",
> stats->statsB.ssim);
>              else
>                  fprintf(encoder->m_param->csvfpt, " -,");
>          }
>          else
>              fprintf(encoder->m_param->csvfpt, " -, -, -, -, -, -, -,");
>
> -        fprintf(encoder->m_param->csvfpt, " %-6u, %-6u, %s\n",
> stats.maxCLL, stats.maxFALL, api->version_str);
> +        fprintf(encoder->m_param->csvfpt, " %-6u, %-6u, %s\n",
> stats->maxCLL, stats->maxFALL, api->version_str);
>      }
>  }
>
> @@ -1011,7 +1011,7 @@
>      }
>  }
>
> -void x265_dither_image(x265_picture& picIn, int picWidth, int picHeight,
> int16_t *errorBuf, int bitDepth)
> +void x265_dither_image(x265_picture* picIn, int picWidth, int picHeight,
> int16_t *errorBuf, int bitDepth)
>  {
>      const x265_api* api = x265_api_get(0);
>
> @@ -1021,27 +1021,27 @@
>          return;
>      }
>
> -    if (picIn.bitDepth <= 8)
> +    if (picIn->bitDepth <= 8)
>      {
>          fprintf(stderr, "extras [error]: dither support enabled only for
> input bitdepth > 8\n");
>          return;
>      }
>
> -    if (picIn.bitDepth == bitDepth)
> +    if (picIn->bitDepth == bitDepth)
>      {
>          fprintf(stderr, "extras[error]: dither support enabled only if
> encoder depth is different from picture depth\n");
>          return;
>      }
>
>      /* This portion of code is from readFrame in x264. */
> -    for (int i = 0; i < x265_cli_csps[picIn.colorSpace].planes; i++)
> +    for (int i = 0; i < x265_cli_csps[picIn->colorSpace].planes; i++)
>      {
> -        if (picIn.bitDepth < 16)
> +        if (picIn->bitDepth < 16)
>          {
>              /* upconvert non 16bit high depth planes to 16bit */
> -            uint16_t *plane = (uint16_t*)picIn.planes[i];
> -            uint32_t pixelCount = x265_picturePlaneSize(picIn.colorSpace,
> picWidth, picHeight, i);
> -            int lShift = 16 - picIn.bitDepth;
> +            uint16_t *plane = (uint16_t*)picIn->planes[i];
> +            uint32_t pixelCount = x265_picturePlaneSize(picIn->colorSpace,
> picWidth, picHeight, i);
> +            int lShift = 16 - picIn->bitDepth;
>
>              /* This loop assumes width is equal to stride which
>               * happens to be true for file reader outputs */
> @@ -1049,10 +1049,10 @@
>                  plane[j] = plane[j] << lShift;
>          }
>
> -        int height = (int)(picHeight >> x265_cli_csps[picIn.
> colorSpace].height[i]);
> -        int width = (int)(picWidth >> x265_cli_csps[picIn.
> colorSpace].width[i]);
> +        int height = (int)(picHeight >> x265_cli_csps[picIn->
> colorSpace].height[i]);
> +        int width = (int)(picWidth >> x265_cli_csps[picIn->
> colorSpace].width[i]);
>
> -        ditherPlane(((uint16_t*)picIn.planes[i]), picIn.stride[i] / 2,
> width, height, errorBuf, bitDepth);
> +        ditherPlane(((uint16_t*)picIn->planes[i]), picIn->stride[i] / 2,
> width, height, errorBuf, bitDepth);
>      }
>  }
>
> diff -r 563cbe1f4a21 -r 06d89671aec9 source/x265.cpp
> --- a/source/x265.cpp   Wed Nov 08 17:08:18 2017 +0530
> +++ b/source/x265.cpp   Sun Nov 12 21:05:11 2017 +0100
> @@ -638,7 +638,7 @@
>          {
>              if (pic_in->bitDepth > param->internalBitDepth &&
> cliopt.bDither)
>              {
> -                x265_dither_image(*pic_in, cliopt.input->getWidth(),
> cliopt.input->getHeight(), errorBuf, param->internalBitDepth);
> +                x265_dither_image(pic_in, cliopt.input->getWidth(),
> cliopt.input->getHeight(), errorBuf, param->internalBitDepth);
>                  pic_in->bitDepth = param->internalBitDepth;
>              }
>              /* Overwrite PTS */
> diff -r 563cbe1f4a21 -r 06d89671aec9 source/x265.h
> --- a/source/x265.h     Wed Nov 08 17:08:18 2017 +0530
> +++ b/source/x265.h     Sun Nov 12 21:05:11 2017 +0100
> @@ -1750,20 +1750,20 @@
>   * closed by the caller using fclose(). If csv-loglevel is 0, then no
> frame logging
>   * header is written to the file. This function will return NULL if it is
> unable
>   * to open the file for write or if it detects a structure size skew */
> -FILE* x265_csvlog_open(const x265_param& param);
> +FILE* x265_csvlog_open(const x265_param *);
>
>  /* Log frame statistics to the CSV file handle. csv-loglevel should have
> been non-zero
>   * in the call to x265_csvlog_open() if this function is called. */
> -void x265_csvlog_frame(const x265_param& param, const x265_picture& pic);
> +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
>   * statistics should be queried from the encoder just prior to closing
> it. */
> -void x265_csvlog_encode(x265_encoder *encoder, const x265_stats& stats,
> int argc, char** argv);
> +void x265_csvlog_encode(x265_encoder *encoder, const x265_stats *, 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. */
> -void x265_dither_image(x265_picture& pic, int picWidth, int picHeight,
> int16_t *errorBuf, int bitDepth);
> +void x265_dither_image(x265_picture *, int picWidth, int picHeight,
> int16_t *errorBuf, int bitDepth);
>
>  #define X265_MAJOR_VERSION 1
>
> @@ -1812,10 +1812,10 @@
>      int           (*encoder_ctu_info)(x265_encoder*, int,
> x265_ctu_info_t**);
>      int           (*get_slicetype_poc_and_scenecut)(x265_encoder*, int*,
> int*, int*);
>      int           (*get_ref_frame_list)(x265_encoder*, x265_picyuv**,
> x265_picyuv**, 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          (*dither_image)(x265_picture&, int, int, int16_t*, 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          (*dither_image)(x265_picture*, int, int, int16_t*, int);
>      /* add new pointers to the end, or increment X265_MAJOR_VERSION */
>  } x265_api;
>
> _______________________________________________
> 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/20171114/005bdbd5/attachment-0001.html>


More information about the x265-devel mailing list