[x265] [PATCH] Add all the param options to bitstream when info is enabled

Tom Vaughan tom.vaughan at multicorewareinc.com
Sat Dec 10 21:52:28 CET 2016


Divya,
Writing the "--stats" log file name and path into the --info SEI NAL unit by
default creates a potential privacy problem, as the path and filename might
reveal information that the person or company encoding the video would not
want others to see.  We should remove this from the default --info SEI.

Thanks,
Tom

-----Original Message-----
From: x265-devel [mailto:x265-devel-bounces at videolan.org] On Behalf Of Divya
Manivannan
Sent: Wednesday, November 16, 2016 4:52 AM
To: x265-devel at videolan.org
Subject: [x265] [PATCH] Add all the param options to bitstream when info is
enabled

# HG changeset patch
# User Divya Manivannan <divya at multicorewareinc.com> # Date
1479298754 -19800
#      Wed Nov 16 17:49:14 2016 +0530
# Node ID 9814b4491361c1b046b68f85a0a239cda89fbcf0
# Parent  4c1652f3884fba9fab4c589dd057b12e6bf33d5b
Add all the param options to bitstream when info is enabled

diff -r 4c1652f3884f -r 9814b4491361 source/common/param.cpp
--- a/source/common/param.cpp	Tue Nov 15 11:16:04 2016 +0530
+++ b/source/common/param.cpp	Wed Nov 16 17:49:14 2016 +0530
@@ -1439,75 +1439,96 @@
 #define BOOL(param, cliopt) \
     s += sprintf(s, " %s", (param) ? cliopt : "no-" cliopt);

-    s += sprintf(s, "%dx%d", p->sourceWidth,p->sourceHeight);
+    s += sprintf(s, "cpuid=%d", p->cpuid);
+    s += sprintf(s, " frame-threads=%d", p->frameNumThreads);
+    if (p->numaPools)
+        s += sprintf(s, " numa-pools=%s", p->numaPools);
+    BOOL(p->bEnableWavefront, "wpp");
+    BOOL(p->bDistributeModeAnalysis, "pmode");
+    BOOL(p->bDistributeMotionEstimation, "pme");
+    BOOL(p->bEnablePsnr, "psnr");
+    BOOL(p->bEnableSsim, "ssim");
+    s += sprintf(s, " log-level=%d", p->logLevel);
+    s += sprintf(s, " bitdepth=%d", p->internalBitDepth);
+    s += sprintf(s, " input-csp=%d", p->internalCsp);
     s += sprintf(s, " fps=%u/%u", p->fpsNum, p->fpsDenom);
-    s += sprintf(s, " bitdepth=%d", p->internalBitDepth);
-    s += sprintf(s, " frame-threads=%d", p->frameNumThreads);
+    s += sprintf(s, " input-res=%dx%d", p->sourceWidth, p->sourceHeight);
+    s += sprintf(s, " interlace=%d", p->interlaceMode);
+    s += sprintf(s, " total-frames=%d", p->totalFrames);
     s += sprintf(s, " level-idc=%d", p->levelIdc);
-    s += sprintf(s, " numa-pools=%s", p->numaPools);
-    BOOL(p->bEnableWavefront, "wpp");
+    s += sprintf(s, " high-tier=%d", p->bHighTier);
+    s += sprintf(s, " uhd-bd=%d", p->uhdBluray);
+    s += sprintf(s, " ref=%d", p->maxNumReferences);
+    BOOL(p->bAllowNonConformance, "allow-non-conformance");
+    BOOL(p->bRepeatHeaders, "repeat-headers");
+    BOOL(p->bAnnexB, "annexb");
+    BOOL(p->bEnableAccessUnitDelimiters, "aud");
+    BOOL(p->bEmitHRDSEI, "hrd");
+    BOOL(p->bEmitInfoSEI, "info");
+    s += sprintf(s, " hash=%d", p->decodedPictureHashSEI);
+    BOOL(p->bEnableTemporalSubLayers, "temporal-layers");
+    BOOL(p->bOpenGOP, "open-gop");
+    s += sprintf(s, " min-keyint=%d", p->keyframeMin);
+    s += sprintf(s, " keyint=%d", p->keyframeMax);
+    s += sprintf(s, " bframes=%d", p->bframes);
+    s += sprintf(s, " b-adapt=%d", p->bFrameAdaptive);
+    BOOL(p->bBPyramid, "b-pyramid");
+    s += sprintf(s, " bframe-bias=%d", p->bFrameBias);
+    s += sprintf(s, " rc-lookahead=%d", p->lookaheadDepth);
+    s += sprintf(s, " lookahead-slices=%d", p->lookaheadSlices);
+    s += sprintf(s, " scenecut=%d", p->scenecutThreshold);
+    BOOL(p->bIntraRefresh, "intra-refresh");
     s += sprintf(s, " ctu=%d", p->maxCUSize);
     s += sprintf(s, " min-cu-size=%d", p->minCUSize);
+    BOOL(p->bEnableRectInter, "rect");
+    BOOL(p->bEnableAMP, "amp");
     s += sprintf(s, " max-tu-size=%d", p->maxTUSize);
+    s += sprintf(s, " tu-inter-depth=%d", p->tuQTMaxInterDepth);
     s += sprintf(s, " tu-intra-depth=%d", p->tuQTMaxIntraDepth);
-    s += sprintf(s, " tu-inter-depth=%d", p->tuQTMaxInterDepth);
+    s += sprintf(s, " limit-tu=%d", p->limitTU);
+    s += sprintf(s, " rdoq-level=%d", p->rdoqLevel);
+    BOOL(p->bEnableSignHiding, "signhide");
+    BOOL(p->bEnableTransformSkip, "tskip");
+    s += sprintf(s, " nr-intra=%d", p->noiseReductionIntra);
+    s += sprintf(s, " nr-inter=%d", p->noiseReductionInter);
+    if (p->scalingLists)
+        s += sprintf(s, " scaling-list=%s", p->scalingLists);
+    BOOL(p->bEnableConstrainedIntra, "constrained-intra");
+    BOOL(p->bEnableStrongIntraSmoothing, "strong-intra-smoothing");
+    s += sprintf(s, " max-merge=%d", p->maxNumMergeCand);
+    s += sprintf(s, " limit-refs=%d", p->limitReferences);
+    BOOL(p->limitModes, "limit-modes");
     s += sprintf(s, " me=%d", p->searchMethod);
     s += sprintf(s, " subme=%d", p->subpelRefine);
     s += sprintf(s, " merange=%d", p->searchRange);
-    BOOL(p->bEnableRectInter, "rect");
-    BOOL(p->bEnableAMP, "amp");
-    s += sprintf(s, " max-merge=%d", p->maxNumMergeCand);
     BOOL(p->bEnableTemporalMvp, "temporal-mvp");
-    BOOL(p->bEnableEarlySkip, "early-skip");
-    BOOL(p->bEnableRecursionSkip, "rskip");
-    s += sprintf(s, " rdpenalty=%d", p->rdPenalty);
-    BOOL(p->bEnableTransformSkip, "tskip");
-    BOOL(p->bEnableTSkipFast, "tskip-fast");
-    BOOL(p->bEnableStrongIntraSmoothing, "strong-intra-smoothing");
-    BOOL(p->bLossless, "lossless");
-    BOOL(p->bCULossless, "cu-lossless");
-    BOOL(p->bEnableConstrainedIntra, "constrained-intra");
-    BOOL(p->bEnableFastIntra, "fast-intra");
-    BOOL(p->bOpenGOP, "open-gop");
-    BOOL(p->bEnableTemporalSubLayers, "temporal-layers");
-    s += sprintf(s, " interlace=%d", p->interlaceMode);
-    s += sprintf(s, " keyint=%d", p->keyframeMax);
-    s += sprintf(s, " min-keyint=%d", p->keyframeMin);
-    s += sprintf(s, " scenecut=%d", p->scenecutThreshold);
-    s += sprintf(s, " scenecut-bias=%.2f", p->scenecutBias);
-    s += sprintf(s, " rc-lookahead=%d", p->lookaheadDepth);
-    s += sprintf(s, " lookahead-slices=%d", p->lookaheadSlices);
-    s += sprintf(s, " bframes=%d", p->bframes);
-    s += sprintf(s, " bframe-bias=%d", p->bFrameBias);
-    s += sprintf(s, " b-adapt=%d", p->bFrameAdaptive);
-    s += sprintf(s, " ref=%d", p->maxNumReferences);
-    s += sprintf(s, " limit-refs=%d", p->limitReferences);
-    BOOL(p->limitModes, "limit-modes");
     BOOL(p->bEnableWeightedPred, "weightp");
     BOOL(p->bEnableWeightedBiPred, "weightb");
-    s += sprintf(s, " aq-mode=%d", p->rc.aqMode);
-    s += sprintf(s, " qg-size=%d", p->rc.qgSize);
-    s += sprintf(s, " aq-strength=%.2f", p->rc.aqStrength);
-    s += sprintf(s, " cbqpoffs=%d", p->cbQpOffset);
-    s += sprintf(s, " crqpoffs=%d", p->crQpOffset);
-    s += sprintf(s, " rd=%d", p->rdLevel);
-    s += sprintf(s, " psy-rd=%.2f", p->psyRd);
-    s += sprintf(s, " rdoq-level=%d", p->rdoqLevel);
-    s += sprintf(s, " psy-rdoq=%.2f", p->psyRdoq);
-    s += sprintf(s, " log2-max-poc-lsb=%d", p->log2MaxPocLsb);
-    s += sprintf(s, " limit-tu=%d", p->limitTU);
-    BOOL(p->bEnableRdRefine, "rd-refine");
-    BOOL(p->bEnableSignHiding, "signhide");
+    BOOL(p->bSourceReferenceEstimation, "analyze-src-pics");
     BOOL(p->bEnableLoopFilter, "deblock");
     if (p->bEnableLoopFilter)
         s += sprintf(s, "=%d:%d", p->deblockingFilterTCOffset,
p->deblockingFilterBetaOffset);
     BOOL(p->bEnableSAO, "sao");
     BOOL(p->bSaoNonDeblocked, "sao-non-deblock");
-    BOOL(p->bBPyramid, "b-pyramid");
-    BOOL(p->rc.cuTree, "cutree");
-    BOOL(p->bIntraRefresh, "intra-refresh");
+    s += sprintf(s, " rd=%d", p->rdLevel);
+    BOOL(p->bEnableEarlySkip, "early-skip");
+    BOOL(p->bEnableRecursionSkip, "rskip");
+    BOOL(p->bEnableFastIntra, "fast-intra");
+    BOOL(p->bEnableTSkipFast, "tskip-fast");
+    BOOL(p->bCULossless, "cu-lossless");
+    BOOL(p->bIntraInBFrames, "b-intra");
+    s += sprintf(s, " rdpenalty=%d", p->rdPenalty);
+    s += sprintf(s, " psy-rd=%.2f", p->psyRd);
+    s += sprintf(s, " psy-rdoq=%.2f", p->psyRdoq);
+    BOOL(p->bEnableRdRefine, "rd-refine");
+    s += sprintf(s, " analysis-mode=%d", p->analysisMode);
+    if (p->analysisMode)
+        s += sprintf(s, " analysis-file=%s", p->analysisFileName);
+    BOOL(p->bLossless, "lossless");
+    s += sprintf(s, " cbqpoffs=%d", p->cbQpOffset);
+    s += sprintf(s, " crqpoffs=%d", p->crQpOffset);
     s += sprintf(s, " rc=%s", p->rc.rateControlMode == X265_RC_ABR ? (
-         p->rc.bStatRead ? "2 pass" : p->rc.bitrate == p->rc.vbvMaxBitrate
? "cbr" : "abr")
+         p->rc.bitrate == p->rc.vbvMaxBitrate ? "cbr" : "abr")
          : p->rc.rateControlMode == X265_RC_CRF ? "crf" : "cqp");
     if (p->rc.rateControlMode == X265_RC_ABR || p->rc.rateControlMode ==
X265_RC_CRF)
     {
@@ -1515,15 +1536,20 @@
             s += sprintf(s, " crf=%.1f", p->rc.rfConstant);
         else
             s += sprintf(s, " bitrate=%d", p->rc.bitrate);
-        s += sprintf(s, " qcomp=%.2f qpmin=%d qpmax=%d qpstep=%d",
-                     p->rc.qCompress, p->rc.qpMin, p->rc.qpMax,
p->rc.qpStep);
+        s += sprintf(s, " qcomp=%.2f qpstep=%d", p->rc.qCompress,
p->rc.qpStep);
+        s += sprintf(s, " stats-write=%d", p->rc.bStatWrite);
+        s += sprintf(s, " stats-read=%d", p->rc.bStatRead);
+        if (p->rc.bStatRead || p->rc.bStatWrite)
+            s += sprintf(s, " stats-file=%s", p->rc.statFileName);
         if (p->rc.bStatRead)
-            s += sprintf( s, " cplxblur=%.1f qblur=%.1f",
-                          p->rc.complexityBlur, p->rc.qblur);
+            s += sprintf(s, " cplxblur=%.1f qblur=%.1f",
+            p->rc.complexityBlur, p->rc.qblur);
+        if (p->rc.bStatWrite && !p->rc.bStatRead)
+            BOOL(p->rc.bEnableSlowFirstPass, "slow-firstpass");
         if (p->rc.vbvBufferSize)
         {
             s += sprintf(s, " vbv-maxrate=%d vbv-bufsize=%d vbv-init=%.1f",
-                          p->rc.vbvMaxBitrate, p->rc.vbvBufferSize,
p->rc.vbvBufferInit);
+                 p->rc.vbvMaxBitrate, p->rc.vbvBufferSize,
+ p->rc.vbvBufferInit);
             if (p->rc.rateControlMode == X265_RC_CRF)
                 s += sprintf(s, " crf-max=%.1f crf-min=%.1f",
p->rc.rfConstantMax, p->rc.rfConstantMin);
         }
@@ -1536,13 +1562,61 @@
         if (p->bframes)
             s += sprintf(s, " pbratio=%.2f", p->rc.pbFactor);
     }
-    if (p->bMultiPassOptRPS)
+    s += sprintf(s, " aq-mode=%d", p->rc.aqMode);
+    s += sprintf(s, " aq-strength=%.2f", p->rc.aqStrength);
+    BOOL(p->rc.cuTree, "cutree");
+    s += sprintf(s, " zone-count=%d", p->rc.zoneCount);
+    if (p->rc.zoneCount)
     {
-        BOOL(p->bMultiPassOptRPS, "multi-pass-opt-rps");
-        BOOL(p->bRepeatHeaders, "repeat-headers");
+        for (int i = 0; i < p->rc.zoneCount; ++i)
+        {
+            s += sprintf(s, " zones: start-frame=%d end-frame=%d",
+                 p->rc.zones[i].startFrame, p->rc.zones[i].endFrame);
+            if (p->rc.zones[i].bForceQp)
+                s += sprintf(s, " qp=%d", p->rc.zones[i].qp);
+            else
+                s += sprintf(s, " bitrate-factor=%f",
p->rc.zones[i].bitrateFactor);
+        }
     }
-    s += sprintf(s, " uhd-bd=%d", p->uhdBluray);
+    if (p->rc.lambdaFileName)
+        s += sprintf(s, " lambda-file=%s", p->rc.lambdaFileName);
+    BOOL(p->rc.bStrictCbr, "strict-cbr");
+    s += sprintf(s, " qg-size=%d", p->rc.qgSize);
+    BOOL(p->rc.bEnableGrain, "rc-grain");
+    s += sprintf(s, " qpmax=%d qpmin=%d", p->rc.qpMax, p->rc.qpMin);
+    s += sprintf(s, " sar=%d", p->vui.aspectRatioIdc);
+    if (p->vui.aspectRatioIdc == X265_EXTENDED_SAR)
+        s += sprintf(s, " sar-width : sar-height=%d:%d", p->vui.sarWidth,
p->vui.sarHeight);
+    s += sprintf(s, " overscan=%d", p->vui.bEnableOverscanInfoPresentFlag);
+    if (p->vui.bEnableOverscanInfoPresentFlag)
+        s += sprintf(s, " overscan-crop=%d",
p->vui.bEnableOverscanAppropriateFlag);
+    s += sprintf(s, " videoformat=%d", p->vui.videoFormat);
+    s += sprintf(s, " range=%d", p->vui.bEnableVideoFullRangeFlag);
+    s += sprintf(s, " colorprim=%d", p->vui.colorPrimaries);
+    s += sprintf(s, " transfer=%d", p->vui.transferCharacteristics);
+    s += sprintf(s, " colormatrix=%d", p->vui.matrixCoeffs);
+    s += sprintf(s, " chromaloc=%d",
p->vui.bEnableChromaLocInfoPresentFlag);
+    if (p->vui.bEnableChromaLocInfoPresentFlag)
+        s += sprintf(s, " chromaloc-top=%d chromaloc-bottom=%d",
+        p->vui.chromaSampleLocTypeTopField,
p->vui.chromaSampleLocTypeBottomField);
+    s += sprintf(s, " display-window=%d",
p->vui.bEnableDefaultDisplayWindowFlag);
+    if (p->vui.bEnableDefaultDisplayWindowFlag)
+        s += sprintf(s, " left=%d top=%d right=%d bottom=%d",
+        p->vui.defDispWinLeftOffset, p->vui.defDispWinTopOffset,
+        p->vui.defDispWinRightOffset, p->vui.defDispWinBottomOffset);
+    if (p->masteringDisplayColorVolume)
+        s += sprintf(s, " master-display=%s",
p->masteringDisplayColorVolume);
+    s += sprintf(s, " max-cll=%hu,%hu", p->maxCLL, p->maxFALL);
+    s += sprintf(s, " min-luma=%hu", p->minLuma);
+    s += sprintf(s, " max-luma=%hu", p->maxLuma);
+    s += sprintf(s, " log2-max-poc-lsb=%d", p->log2MaxPocLsb);
+    BOOL(p->bEmitVUITimingInfo, "vui-timing-info");
+    BOOL(p->bEmitVUIHRDInfo, "vui-hrd-info");
     s += sprintf(s, " slices=%d", p->maxSlices);
+    BOOL(p->bOptQpPPS, "opt-qp-pps");
+    BOOL(p->bOptRefListLengthPPS, "opt-ref-list-length-pps");
+    BOOL(p->bMultiPassOptRPS, "multi-pass-opt-rps");
+    s += sprintf(s, " scenecut-bias=%.2f", p->scenecutBias);
 #undef BOOL
     return buf;
 }
_______________________________________________
x265-devel mailing list
x265-devel at videolan.org
https://mailman.videolan.org/listinfo/x265-devel


More information about the x265-devel mailing list