<div dir="ltr"><div><div>We'd like to request any relevant feedback on this patch. Essentially, we're removing the refresh parameter, since it conflicts with the openGOP parameter. <br><br></div>By default, an openGOP will be enabled, which means we could have both RADL/RASL following CRA pictures. The encoder could control the references, and thus ensure that all leading pictures are decodable (ie that they are always RADL). But IMO, this destroys the purpose of openGOP (?). Thoughts/opinions welcome. <br>
<br></div>Thanks,<br>Deepthi<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Dec 17, 2013 at 1:17 PM,  <span dir="ltr"><<a href="mailto:kavitha@multicorewareinc.com" target="_blank">kavitha@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 Kavitha Sampath <<a href="mailto:kavitha@multicorewareinc.com">kavitha@multicorewareinc.com</a>><br>
# Date 1387266260 -19800<br>
#      Tue Dec 17 13:14:20 2013 +0530<br>
# Node ID 17bb20c49d67b1d9d02770e7b5dff8381199c527<br>
# Parent  4b0163d06ba19d433749a659365b4364c32c8eae<br>
slicetype: remove --refresh and use --open-gop(default: enable)<br>
<br>
diff -r 4b0163d06ba1 -r 17bb20c49d67 source/common/common.cpp<br>
--- a/source/common/common.cpp  Sat Dec 14 23:27:48 2013 +0530<br>
+++ b/source/common/common.cpp  Tue Dec 17 13:14:20 2013 +0530<br>
@@ -157,10 +157,9 @@<br>
     param->tuQTMaxIntraDepth = 1;<br>
<br>
     /* Coding Structure */<br>
-    param->decodingRefreshType = 1;<br>
     param->keyframeMin = 0;<br>
     param->keyframeMax = 250;<br>
-    param->bOpenGOP = 0;<br>
+    param->bOpenGOP = 1;<br>
     param->bframes = 4;<br>
     param->lookaheadDepth = 20;<br>
     param->bFrameAdaptive = X265_B_ADAPT_TRELLIS;<br>
@@ -694,7 +693,7 @@<br>
     OPT("tskip-fast") p->bEnableTSkipFast = bvalue;<br>
     OPT("strong-intra-smoothing") p->bEnableStrongIntraSmoothing = bvalue;<br>
     OPT("constrained-intra") p->bEnableConstrainedIntra = bvalue;<br>
-    OPT("refresh") p->decodingRefreshType = atoi(value);<br>
+    OPT("open-gop") p->bOpenGOP = bvalue;<br>
     OPT("keyint") p->keyframeMax = atoi(value);<br>
     OPT("rc-lookahead") p->lookaheadDepth = atoi(value);<br>
     OPT("bframes") p->bframes = atoi(value);<br>
@@ -774,7 +773,7 @@<br>
     BOOL(p->bEnableTSkipFast, "tskip-fast");<br>
     BOOL(p->bEnableStrongIntraSmoothing, "strong-intra-smoothing");<br>
     BOOL(p->bEnableConstrainedIntra, "constrained-intra");<br>
-    s += sprintf(s, " refresh=%d", p->decodingRefreshType);<br>
+    BOOL(p->bOpenGOP, "open-gop");<br>
     s += sprintf(s, " keyint=%d", p->keyframeMax);<br>
     s += sprintf(s, " rc-lookahead=%d", p->lookaheadDepth);<br>
     s += sprintf(s, " bframes=%d", p->bframes);<br>
diff -r 4b0163d06ba1 -r 17bb20c49d67 source/encoder/dpb.cpp<br>
--- a/source/encoder/dpb.cpp    Sat Dec 14 23:27:48 2013 +0530<br>
+++ b/source/encoder/dpb.cpp    Tue Dec 17 13:14:20 2013 +0530<br>
@@ -379,11 +379,11 @@<br>
     }<br>
     if (pic->m_lowres.bKeyframe)<br>
     {<br>
-        if (m_cfg->param.decodingRefreshType == 1)<br>
+        if (m_cfg->param.bOpenGOP)<br>
         {<br>
             return NAL_UNIT_CODED_SLICE_CRA;<br>
         }<br>
-        else if (m_cfg->param.decodingRefreshType == 2)<br>
+        else<br>
         {<br>
             return NAL_UNIT_CODED_SLICE_IDR_W_RADL;<br>
         }<br>
diff -r 4b0163d06ba1 -r 17bb20c49d67 source/encoder/slicetype.cpp<br>
--- a/source/encoder/slicetype.cpp      Sat Dec 14 23:27:48 2013 +0530<br>
+++ b/source/encoder/slicetype.cpp      Tue Dec 17 13:14:20 2013 +0530<br>
@@ -1059,7 +1059,7 @@<br>
     // if (!cfg->param.bIntraRefresh)<br>
     for (int j = keyint_limit + 1; j <= num_frames; j += cfg->param.keyframeMax)<br>
     {<br>
-        frames[j]->sliceType = X265_TYPE_I;<br>
+        frames[j]->sliceType = X265_TYPE_KEYFRAME;<br>
         reset_start = X265_MIN(reset_start, j + 1);<br>
     }<br>
<br>
diff -r 4b0163d06ba1 -r 17bb20c49d67 source/x265.cpp<br>
--- a/source/x265.cpp   Sat Dec 14 23:27:48 2013 +0530<br>
+++ b/source/x265.cpp   Tue Dec 17 13:14:20 2013 +0530<br>
@@ -110,7 +110,8 @@<br>
     { "tskip-fast",           no_argument, NULL, 0 },<br>
     { "no-constrained-intra", no_argument, NULL, 0 },<br>
     { "constrained-intra",    no_argument, NULL, 0 },<br>
-    { "refresh",        required_argument, NULL, 0 },<br>
+    { "no-open-gop",          no_argument, NULL, 0 },<br>
+    { "open-gop",             no_argument, NULL, 0 },<br>
     { "keyint",         required_argument, NULL, 'i' },<br>
     { "rc-lookahead",   required_argument, NULL, 0 },<br>
     { "bframes",        required_argument, NULL, 'b' },<br>
@@ -303,7 +304,7 @@<br>
     H0("   --[no-]strong-intra-smoothing Enable strong intra smoothing for 32x32 blocks. Default %s\n", OPT(param->bEnableStrongIntraSmoothing));<br>
     H0("   --[no-]constrained-intra      Constrained intra prediction (use only intra coded reference pixels) Default %s\n", OPT(param->bEnableConstrainedIntra));<br>
     H0("\nSlice decision options:\n");<br>
-    H0("   --refresh                     Intra refresh type - 0:none, 1:CDR, 2:IDR (default: CDR) Default %d\n", param->decodingRefreshType);<br>
+    H0("   --[no-]open-gop               Enable openGOP, allows I slice to be non-IDR. Default %s\n", OPT(param->bOpenGOP));<br>
     H0("-i/--keyint                      Max intra period in frames. Default %d\n", param->keyframeMax);<br>
     H0("   --rc-lookahead                Number of frames for frame-type lookahead (determines encoder latency) Default %d\n", param->lookaheadDepth);<br>
     H0("   --bframes                     Maximum number of consecutive b-frames (now it only enables B GOP structure) Default %d\n", param->bframes);<br>
diff -r 4b0163d06ba1 -r 17bb20c49d67 source/x265.h<br>
--- a/source/x265.h     Sat Dec 14 23:27:48 2013 +0530<br>
+++ b/source/x265.h     Tue Dec 17 13:14:20 2013 +0530<br>
@@ -336,15 +336,11 @@<br>
<br>
     /*== GOP Structure and Lokoahead ==*/<br>
<br>
-    /* Determine the intra refresh style your decoder will use. (0:none, 1:CDR,<br>
-     * 2:IDR). Defaults to CDR */<br>
-    int       decodingRefreshType;<br>
-<br>
     /* Enable open GOP - meaning I slices are not necessariy IDR and thus frames<br>
      * encoded after an I slice may reference frames encoded prior to the I<br>
      * frame which have remained in the decoded picture buffer.  Open GOP<br>
      * generally has better compression efficiency and negligable encoder<br>
-     * performance impact, but the use case may preclude it.  Default false */<br>
+     * performance impact, but the use case may preclude it.  Default true */<br>
     int       bOpenGOP;<br>
<br>
     /* Minimum keyframe distance or intra period in number of frames. Can be<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></div>