[x265] [PATCH RFC] cli: introduce new option --[no]-b-intra which enable/disable intra process in B frames
Steve Borho
steve at borho.org
Fri May 16 11:39:29 CEST 2014
On Fri, May 16, 2014 at 4:04 AM, <sumalatha at multicorewareinc.com> wrote:
> # HG changeset patch
> # User Sumalatha Polureddy<sumalatha at multicorewareinc.com>
> # Date 1400230861 -19800
> # Node ID d2ba63943099454a972d0de343eff5e5dc54d058
> # Parent 48af10fff12b5b29f835303312fe061a489e8be4
> cli: introduce new option --[no]-b-intra which enable/disable intra process in B frames
>
> disable intra in B frame process either through --[no]-b-intra or --tune fastdecode option
> by default it is enabled
> in higher rd level(6 and 5), intra in B frame is disabled through above option
> in lower rd levels(4,3,...0), it is disabled by default
more than that, the option is ignored at these other rdlevels
>
> diff -r 48af10fff12b -r d2ba63943099 source/Lib/TLibEncoder/TEncCu.cpp
> --- a/source/Lib/TLibEncoder/TEncCu.cpp Fri May 16 10:42:23 2014 +0530
> +++ b/source/Lib/TLibEncoder/TEncCu.cpp Fri May 16 14:31:01 2014 +0530
> @@ -887,10 +887,10 @@
>
> // do normal intra modes
> // speedup for inter frames
> - if (slice->getSliceType() == I_SLICE ||
> + if ((slice->getSliceType() == I_SLICE ||
> outBestCU->getCbf(0, TEXT_LUMA) != 0 ||
> outBestCU->getCbf(0, TEXT_CHROMA_U) != 0 ||
> - outBestCU->getCbf(0, TEXT_CHROMA_V) != 0) // avoid very complex intra if it is unlikely
> + outBestCU->getCbf(0, TEXT_CHROMA_V) != 0) && m_param->bIntraInBFrames) // avoid very complex intra if it is unlikely
> {
> xCheckRDCostIntraInInter(outBestCU, outTempCU, SIZE_2Nx2N);
> outTempCU->initEstData(depth);
> diff -r 48af10fff12b -r d2ba63943099 source/common/param.cpp
> --- a/source/common/param.cpp Fri May 16 10:42:23 2014 +0530
> +++ b/source/common/param.cpp Fri May 16 14:31:01 2014 +0530
> @@ -157,6 +157,7 @@
> param->crQpOffset = 0;
> param->rdPenalty = 0;
> param->psyRd = 0.0;
> + param->bIntraInBFrames = 1;
>
> /* Rate control options */
> param->rc.vbvMaxBitrate = 0;
> @@ -384,6 +385,7 @@
> param->bEnableSAO = 0;
> param->bEnableWeightedPred = 0;
> param->bEnableWeightedBiPred = 0;
> + param->bIntraInBFrames = 0;
> }
> else if (!strcmp(tune, "zerolatency") ||
> !strcmp(tune, "zero-latency"))
> @@ -591,6 +593,7 @@
> OPT("rd") p->rdLevel = atoi(value);
> OPT("psy-rd") p->psyRd = atof(value);
> OPT("signhide") p->bEnableSignHiding = atobool(value);
> + OPT("b-intra") p->bIntraInBFrames = atobool(value);
> OPT("lft") p->bEnableLoopFilter = atobool(value);
> OPT("sao") p->bEnableSAO = atobool(value);
> OPT("sao-lcu-bounds") p->saoLcuBoundary = atoi(value);
> diff -r 48af10fff12b -r d2ba63943099 source/x265.cpp
> --- a/source/x265.cpp Fri May 16 10:42:23 2014 +0530
> +++ b/source/x265.cpp Fri May 16 14:31:01 2014 +0530
> @@ -174,6 +174,8 @@
> { "aud", no_argument, NULL, 0 },
> { "no-aud", no_argument, NULL, 0 },
> { "qpfile", required_argument, NULL, 0 },
> + { "b-intra", no_argument, NULL, 0 },
> + { "no-b-intra", no_argument, NULL, 0 },
> { 0, 0, 0, 0 }
> };
>
> @@ -382,6 +384,7 @@
> H0(" --rd <0..6> Level of RD in mode decision 0:least....6:full RDO. Default %d\n", param->rdLevel);
> H0(" --psy-rd <0..2.0> Strength of psycho-visual optimization. Default %f\n", param->psyRd);
> H0(" --[no-]signhide Hide sign bit of one coeff per TU (rdo). Default %s\n", OPT(param->bEnableSignHiding));
> + H0(" --[no-]b-intra Enable intra in B frames. Default %s\n", OPT(param->bIntraInBFrames));
> H0("\nLoop filters (deblock and SAO):\n");
> H0(" --[no-]lft Enable Deblocking Loop Filter. Default %s\n", OPT(param->bEnableLoopFilter));
> H0(" --[no-]sao Enable Sample Adaptive Offset. Default %s\n", OPT(param->bEnableSAO));
> diff -r 48af10fff12b -r d2ba63943099 source/x265.h
> --- a/source/x265.h Fri May 16 10:42:23 2014 +0530
> +++ b/source/x265.h Fri May 16 14:31:01 2014 +0530
> @@ -640,6 +640,10 @@
> * Default is 0, which is recommended */
> int crQpOffset;
>
> + /* Specify whether to perform intra in B frames. by default enabled,
> + * disable it when --tune fastdecode is specified */
> + int bIntraInBFrames;
> +
> /*== Rate Control ==*/
>
> struct
Enqueued with the proper updates to doc/reST/cli.txt and a bump to
X265_BUILD and an improved param comment
--
Steve Borho
More information about the x265-devel
mailing list