[x265] [PATCH] dqp: add param for maxCuDQPDepth
Gopu Govindaswamy
gopu at multicorewareinc.com
Fri Mar 13 05:28:03 CET 2015
On Thu, Mar 12, 2015 at 10:15 PM, Steve Borho <steve at borho.org> wrote:
> On 03/12, gopu at multicorewareinc.com wrote:
> > # HG changeset patch
> > # User Gopu Govindaswamy <gopu at multicorewareinc.com>
> > # Date 1426140129 -19800
> > # Thu Mar 12 11:32:09 2015 +0530
> > # Node ID 1105c6db84119001ae0ed30849b00d4aca17018a
> > # Parent b931c50d55011a1ddc08f0a230b9632fcb4674d7
> > dqp: add param for maxCuDQPDepth
> >
> > currently the maxCuDQPDepth is default set to 0, make mazCuDQPDepth as
> > configurable
>
> typo
>
> >
> > diff -r b931c50d5501 -r 1105c6db8411 source/common/param.cpp
> > --- a/source/common/param.cpp Wed Mar 11 21:58:02 2015 -0500
> > +++ b/source/common/param.cpp Thu Mar 12 11:32:09 2015 +0530
> > @@ -210,6 +210,7 @@
> > param->rc.zones = NULL;
> > param->rc.bEnableSlowFirstPass = 0;
> > param->rc.bStrictCbr = 0;
> > + param->rc.maxCuDQPDepth = 0;
> >
> > /* Video Usability Information (VUI) */
> > param->vui.aspectRatioIdc = 0;
> > @@ -838,6 +839,7 @@
> > OPT2("pools", "numa-pools") p->numaPools = strdup(value);
> > OPT("lambda-file") p->rc.lambdaFileName = strdup(value);
> > OPT("analysis-file") p->analysisFileName = strdup(value);
> > + OPT("maxdqp-depth") p->rc.maxCuDQPDepth = atoi(value);
>
> is the max necessary in the param name? In other places we use max it
> is max- something, so this either needs to be max-dqp-depth or just
> dqp-depth.
>
Ok, i will make this as max-dqp-depth
>
> > else
> > return X265_PARAM_BAD_NAME;
> > #undef OPT
> > diff -r b931c50d5501 -r 1105c6db8411 source/encoder/encoder.cpp
> > --- a/source/encoder/encoder.cpp Wed Mar 11 21:58:02 2015 -0500
> > +++ b/source/encoder/encoder.cpp Thu Mar 12 11:32:09 2015 +0530
> > @@ -1548,12 +1548,12 @@
> > if (!m_param->bLossless && (m_param->rc.aqMode || bIsVbv))
> > {
> > pps->bUseDQP = true;
> > - pps->maxCuDQPDepth = 0; /* TODO: make configurable? */
> > + pps->maxCuDQPDepth = m_param->rc.maxCuDQPDepth;
> > }
> > else
> > {
> > pps->bUseDQP = false;
> > - pps->maxCuDQPDepth = 0;
> > + pps->maxCuDQPDepth = m_param->rc.maxCuDQPDepth;
>
> I think the point of the if() expression is to set it zero in the else
> clause. If you're forcing it to be zero in the logic below, you might as
> well remove 'pps->maxCuDQPDepth =' from this expression and set it
> unconditionally. As far as I know, maxCuDQPDepth will not be signalled
> if bUseDQP is false, thus the encoder will (should) ignore the param.
>
if bUseDQP is false then maxCuDQPDepth signalled once per CTU,
>
> > }
> >
> > pps->chromaQpOffset[0] = m_param->cbQpOffset;
> > @@ -1773,6 +1773,17 @@
> > p->analysisMode = X265_ANALYSIS_OFF;
> > x265_log(p, X265_LOG_WARNING, "Analysis save and load mode not
> supported for distributed mode analysis\n");
> > }
> > + bool bIsVbv = m_param->rc.vbvBufferSize > 0 &&
> m_param->rc.vbvMaxBitrate > 0;
> > + if (!m_param->bLossless && (m_param->rc.aqMode || bIsVbv))
> > + {
> > + if (p->rc.maxCuDQPDepth > (NUM_CU_DEPTH - 1))
> > + {
> > + p->rc.maxCuDQPDepth = 0;
> > + x265_log(p, X265_LOG_WARNING, "The maxCUDQPDepth should be
> less than maxCUDepth setting maxCUDQPDepth = %d \n", 0);
> > + }
> > + }
> > + else
> > + p->rc.maxCuDQPDepth = 0;
> > }
> >
> > void Encoder::allocAnalysis(x265_analysis_data* analysis)
> > diff -r b931c50d5501 -r 1105c6db8411 source/x265.h
> > --- a/source/x265.h Wed Mar 11 21:58:02 2015 -0500
> > +++ b/source/x265.h Thu Mar 12 11:32:09 2015 +0530
> > @@ -977,6 +977,9 @@
> > /* Enable stricter conditions to check bitrate deviations in
> CBR mode. May compromise
> > * quality to maintain bitrate adherence */
> > int bStrictCbr;
> > +
> > + /* Max depth of a minimum CuDQP for sub-LCU-level delta QP */
> > + int maxCuDQPDepth;
> > } rc;
> >
> > /*== Video Usability Information ==*/
> > diff -r b931c50d5501 -r 1105c6db8411 source/x265cli.h
> > --- a/source/x265cli.h Wed Mar 11 21:58:02 2015 -0500
> > +++ b/source/x265cli.h Thu Mar 12 11:32:09 2015 +0530
> > @@ -202,6 +202,7 @@
> > { "strict-cbr", no_argument, NULL, 0 },
> > { "temporal-layers", no_argument, NULL, 0 },
> > { "no-temporal-layers", no_argument, NULL, 0 },
> > + { "maxdqp-depth", required_argument, NULL, 0 },
> > { 0, 0, 0, 0 },
> > { 0, 0, 0, 0 },
> > { 0, 0, 0, 0 },
>
> Needs restructured text documentation, including some analysis on what
> happens when the param is changed from the default.
>
> Ok
> --
> Steve Borho
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>
--
Thanks & Regards
Gopu G
Multicoreware Inc
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20150313/dc3c10f7/attachment.html>
More information about the x265-devel
mailing list