<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Oct 16, 2013 at 6:50 AM, Gopu Govindaswamy <span dir="ltr"><<a href="mailto:gopu@multicorewareinc.com" target="_blank">gopu@multicorewareinc.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"># HG changeset patch<br>
# User Gopu Govindaswamy <<a href="mailto:gopu@multicorewareinc.com">gopu@multicorewareinc.com</a>><br>
# Date 1381924237 -19800<br>
# Node ID 5ad0aaa72d6ef149a63cd979751c86b3fed48855<br>
# Parent  d84ba96117b5c9f41361967211f524d459c2cd0b<br>
common : Added new function x265_param2string<br>
<br>
diff -r d84ba96117b5 -r 5ad0aaa72d6e source/common/common.cpp<br>
--- a/source/common/common.cpp  Wed Oct 16 16:06:12 2013 +0530<br>
+++ b/source/common/common.cpp  Wed Oct 16 17:20:37 2013 +0530<br>
@@ -566,3 +566,75 @@<br>
     berror |= valuewasnull;<br>
     return berror ? X265_PARAM_BAD_VALUE : 0;<br>
 }<br>
+<br>
+char *x265_param2string( x265_param_t *p)<br>
+{<br>
+    char *buf, *s;<br>
+    buf = s = (char *)X265_MALLOC(char, PARAM_BUFF_SIZE);<br>
+    if (!buf)<br>
+        return NULL;<br>
+<br>
+#define OPT(value) (value ? "Enable" : "Disable")<br>
+    s += sprintf(s, " %dx%d \n", p->sourceWidth, p->sourceHeight);<br>
+    s += sprintf(s, " loglevel = %d", p->logLevel);<br></blockquote><div><br></div><div>parameters that have no effect on the output video like loglevel should not be serialized by this function.</div><div>
 </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+    s += sprintf(s, " EnableWavefront = %s", OPT(p->bEnableWavefront));<br></blockquote><div><br></div><div>the names serialized by x265_param2string need to be parsed by x265_param_parse, so this must be "no-wpp" or we must make sure x265_param_parse can properly handle "wpp=1"</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+    s += sprintf(s, " poolNumThreads = %d", p->poolNumThreads);<br>
+    s += sprintf(s, " frameNumThreads = %d", p->frameNumThreads);<br>
+    s += sprintf(s, " internalBitDepth = %d", p->internalBitDepth);<br>
+    s += sprintf(s, " frameRate = %d", p->frameRate);<br>
+    s += sprintf(s, " maxCUSize = %d", p->maxCUSize);<br>
+    s += sprintf(s, " tuQTMaxInterDepth = %d",p->tuQTMaxInterDepth);<br>
+    s += sprintf(s, " tuQTMaxIntraDepth = %d", p->tuQTMaxIntraDepth);<br>
+    s += sprintf(s, " decodingRefreshType = %d", p->decodingRefreshType);<br>
+    s += sprintf(s, " keyframeMin = %d", p->keyframeMin);<br>
+    s += sprintf(s, " keyframeMax = %d", p->keyframeMax);<br>
+    s += sprintf(s, " OpenGOP = %s", OPT(p->bOpenGOP));<br>
+    s += sprintf(s, " bframes = %d", p->bframes);<br>
+    s += sprintf(s, " lookaheadDepth = %d", p->lookaheadDepth);<br>
+    s += sprintf(s, " bFrameAdaptive = %d", p->bFrameAdaptive);<br>
+    s += sprintf(s, " bFrameBias = %d", p->bFrameBias);<br>
+    s += sprintf(s, " scenecutThreshold = %d", p->scenecutThreshold);<br>
+    s += sprintf(s, " bEnableConstrainedIntra = %s", OPT(p->bEnableConstrainedIntra));<br>
+    s += sprintf(s, " bEnableStrongIntraSmoothing = %s", OPT(p->bEnableStrongIntraSmoothing));<br>
+    s += sprintf(s, " searchMethod = %d", p->searchMethod);<br>
+    s += sprintf(s, " subpelRefine = %d", p->subpelRefine);<br>
+    s += sprintf(s, " searchRange = %d", p->searchRange);<br>
+    s += sprintf(s, " maxNumMergeCand = %d", p->maxNumMergeCand);<br>
+    s += sprintf(s, " bEnableWeightedPred = %s", OPT(p->bEnableWeightedPred));<br>
+    s += sprintf(s, " bEnableWeightedBiPred = %s", OPT(p->bEnableWeightedBiPred));<br>
+    s += sprintf(s, " bEnableAMP = %s", OPT(p->bEnableAMP));<br>
+    s += sprintf(s, " bEnableRectInter = %s", OPT(p->bEnableRectInter));<br>
+    s += sprintf(s, " bEnableCbfFastMode = %s", OPT(p->bEnableCbfFastMode));<br>
+    s += sprintf(s, " bEnableEarlySkip = %s", OPT(p->bEnableEarlySkip));<br>
+    s += sprintf(s, " bRDLevel = %s", OPT(p->bRDLevel));<br>
+    s += sprintf(s, " bEnableRDO = %s", OPT(p->bEnableRDO));<br>
+    s += sprintf(s, " bEnableRDOQ = %s", OPT(p->bEnableRDOQ));<br>
+    s += sprintf(s, " bEnableSignHiding = %s", OPT(p->bEnableSignHiding));<br>
+    s += sprintf(s, " bEnableTransformSkip = %s", OPT(p->bEnableTransformSkip));<br>
+    s += sprintf(s, " bEnableTSkipFast = %s", OPT(p->bEnableTSkipFast));<br>
+    s += sprintf(s, " bEnableRDOQTS = %s", OPT(p->bEnableRDOQTS));<br>
+    s += sprintf(s, " maxNumReferences = %d", p->maxNumReferences);<br>
+    s += sprintf(s, " bEnableLoopFilter = %s", OPT(p->bEnableLoopFilter));<br>
+    s += sprintf(s, " bEnableSAO = %s", OPT(p->bEnableSAO));<br>
+    s += sprintf(s, " saoLcuBoundary = %d", p->saoLcuBoundary);<br>
+    s += sprintf(s, " saoLcuBasedOptimization = %d", p->saoLcuBasedOptimization);<br>
+    s += sprintf(s, " cbQpOffset = %d", p->cbQpOffset);<br>
+    s += sprintf(s, " crQpOffset = %d", p->crQpOffset);<br>
+    s += sprintf(s, " rdPenalty = %d", p->rdPenalty);<br>
+    s += sprintf(s, " decodedPictureHashSEI = %d", p->decodedPictureHashSEI);<br>
+    s += sprintf(s, " bEnablePsnr = %s", OPT(p->bEnablePsnr));<br>
+    s += sprintf(s, " bEnableSsim = %s", OPT(p->bEnableSsim));<br></blockquote><div><br></div><div>these three should be removed</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

+    s += sprintf(s, " rc-bitrate = %d", p->rc.bitrate);<br>
+    s += sprintf(s, " rc-rateTolerance = %f", p->rc.rateTolerance);<br>
+    s += sprintf(s, " rc-qCompress = %f", p->rc.qCompress);<br>
+    s += sprintf(s, " rc-ipFactor = %f", p->rc.ipFactor);<br>
+    s += sprintf(s, " rc-pbFactor = %f", p->rc.pbFactor);<br>
+    s += sprintf(s, " rc-qpStep = %d", p->rc.qpStep);<br>
+    s += sprintf(s, " rc-rateControlMode = %d", p->rc.rateControlMode);<br>
+    s += sprintf(s, " rc-qp = %d", p->rc.qp);<br>
+    s += sprintf(s, " rc-rateFactor = %d", p->rc.rateFactor);<br>
+    s += sprintf(s, " rc-aqMode = %d", p->rc.aqMode);<br>
+    s += sprintf(s, " rc-aqStrength = %f", p->rc.aqStrength);<br><br></blockquote><div>many of these do not have cli options, in which case they probably shouldn't be included.  We should check if x264 has cli options and param_parse() support for them.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+    return buf;<br>
+}<br>
diff -r d84ba96117b5 -r 5ad0aaa72d6e source/common/common.h<br>
--- a/source/common/common.h    Wed Oct 16 16:06:12 2013 +0530<br>
+++ b/source/common/common.h    Wed Oct 16 17:20:37 2013 +0530<br>
@@ -73,6 +73,7 @@<br>
 #define MAX_NAL_UNITS 5<br>
 #define MIN_FIFO_SIZE 1000<br>
 #define EMULATION_SIZE 1000<br>
+#define PARAM_BUFF_SIZE 5000<br>
<br>
 #define CHECKED_MALLOC(var, type, count)\<br>
 {\<br>
@@ -114,5 +115,6 @@<br>
 int  x265_check_params(x265_param_t *param);<br>
 void x265_print_params(x265_param_t *param);<br>
 int x265_set_globals(x265_param_t *param);<br>
+char *x265_param2string( x265_param_t *p);<br>
<br>
 #endif // ifndef X265_COMMON_H<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>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Steve Borho
</div></div>