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