<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"><style>body { line-height: 1.5; }blockquote { margin-top: 0px; margin-bottom: 0px; margin-left: 0.5em; }body { font-size: 10.5pt; font-family: 'Segoe UI'; color: rgb(0, 0, 0); line-height: 1.5; }body { font-size: 10.5pt; font-family: 'Segoe UI'; color: rgb(0, 0, 0); line-height: 1.5; }</style></head><body>
<div><span></span>All,</div><div><br></div><div><font face="\Segoe UI\"><span style="background-color: rgb(255, 255, 255);">I f<span style="line-height: 1.5;">ix bug that over-writing PPS QP cause inconsisent output and optimise this method.</span></span></font></div><div><span style="font-family: 'Courier New,courier'; font-size: 10.5pt; line-height: 1.5; background-color: window;"><br></span></div><div><span style="font-family: 'Courier New,courier'; font-size: 10.5pt; line-height: 1.5; background-color: window;">1) </span><span style="font-family: 'Courier New,courier';">It's wrong to use condition</span><span style="font-family: 'Courier New,courier'; font-size: 10.5pt; line-height: 1.5; background-color: window;"> "</span><span style="font-family: ''; font-size: 10.5pt; line-height: 1.5; background-color: window;"><b>if( m_iFrameNum >= m_param->frameNumThreads )</b></span><span style="background-color: window; font-family: 'Courier New,courier'; font-size: 10.5pt; line-height: 1.5;">". If we set different frame threads, the output would inconsisent.  I change it to "</span><span style="font-family: ''; font-size: 10.5pt; line-height: 1.5; background-color: window;"><b>if( m_iFrameNum > 0 )</b></span><span style="background-color: window; font-family: 'Courier New,courier'; font-size: 10.5pt; line-height: 1.5;">" for each keyframe. </span></div><div><span style="font-family: 'Courier New,courier'; font-size: 10.5pt; line-height: 1.5; background-color: window;"><br></span></div><div><span style="font-family: 'Courier New,courier'; font-size: 10.5pt; line-height: 1.5; background-color: window;">2)  </span><span courier="" new,courier'";="" font-size:="" 14px;="" color:="" rgb(0,="" 0,="" 0);="" background-color:="" rgb(255,="" 255,="" 255);="" font-weight:="" normal;="" font-style:="" normal;text-decoration:="" none;'="" style="font-family: ''; font-size: 10.5pt; line-height: 1.5; background-color: window;">If last slice Qp is close to (26 + m_iPPSQpMinus26) ,  we don't need to change m_iPPSQpMinus26. Because slice Qp in the next GOP would be close to (26 + </span><span style="font-size: 10.5pt; line-height: 1.5; background-color: window;">m_iPPSQpMinus26</span><span style="font-family: ''; font-size: 10.5pt; line-height: 1.5; background-color: window;">), it would cost bits to use last GOP's best  PPS QP. </span><span style="font-size: 10.5pt; line-height: 1.5; background-color: window;">  For example, </span><span style="font-size: 10.5pt; line-height: 1.5; background-color: window;">sliceQP in a GOP is like "47 45  45  43……28  27 26 26", the best PPS QP </span><span style="font-family: ''; font-size: 10.5pt; line-height: 1.5; background-color: window;">is about 30 by statistic. But the slice in next GOP is about" 26 25  26  26  26……26 25 26 26“,  it will cost more bits for </span><span style="font-size: 10.5pt; line-height: 1.5; background-color: window;">PPS QP</span><span style="font-size: 10.5pt; line-height: 1.5; background-color: window;"> = 30. </span><span style="font-family: ''; font-size: 10.5pt; line-height: 1.5; background-color: window;"> </span></div>
<div><br></div><div>3) If outputs is all I-frame video, <span style="font-size: 10.5pt; line-height: 1.5; background-color: window;"> we don't need to change m_iPPSQpMinus26.</span><span style="font-size: 10.5pt; line-height: 1.5; background-color: window;"> </span><span courier="" new,courier'";="" font-size:="" 14px;="" color:="" rgb(0,="" 0,="" 0);="" background-color:="" rgb(255,="" 255,="" 255);="" font-weight:="" normal;="" font-style:="" normal;text-decoration:="" none;'="" style="font-family: ''; font-size: 10.5pt; line-height: 1.5; background-color: window;"> Because each keyframe follows a m_iPPSQpMinus26 like pps by </span><span style="font-family: ''; font-size: 10.5pt; line-height: 1.5; background-color: window;">codePPS()</span><span courier="" new,courier'";="" font-size:="" 14px;="" color:="" rgb(0,="" 0,="" 0);="" background-color:="" rgb(255,="" 255,="" 255);="" font-weight:="" normal;="" font-style:="" normal;text-decoration:="" none;'="" style="font-family: ''; font-size: 10.5pt; line-height: 1.5; background-color: window;">,  changing </span><span style="font-size: 10.5pt; line-height: 1.5; background-color: window;">m_iPPSQpMinus26 would cost some bits as to change sliceQpDelta for saving bits. </span></div><div><br></div><div>My test command is like this:</div><div><span style="font-family: "" segoe="" ui'";="" font-size:="" 14px;="" color:="" rgb(0,="" 0,="" 0);="" background-color:="" rgba(0,="" font-weight:="" normal;="" font-style:="" normal;text-decoration:="" none;'="">--repeat-headers <b>-F4</b> --preset fast --crf 40 --input-res 1280x720 --keyint 30 --min-keyint 30 --input "E:\video\x264 source\FromNet\Johnny_1280x720_60.y4m" --fps 30 --output "test.mp4"</span></div><div><br></div><div>The attachment is the patch and output result by HM decoder.</div><div><br></div><div><br></div><hr style="width: 210px; height: 1px;" color="#b5c4df" size="1" align="left">
<div><span><div style="MARGIN-LEFT: 10px; MARGIN-TOP: 10px; MARGIN-RIGHT: 10px">
<div><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; COLOR: #000000">Regards,</span></div>
<div><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; COLOR: #000000"></span> </div>
<div><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; COLOR: #000000">             Xuefeng 
Jiang</span></div>
<div><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; COLOR: #000000"></span> </div>
<div><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; COLOR: #000000"><a href="mailto:xuefeng@multicorewareinc.com">xuefeng@multicorewareinc.com</a></span></div></div></span></div>
<blockquote style="margin-top: 0px; margin-bottom: 0px; margin-left: 0.5em;"><div><br></div><div>
</div></blockquote>
</body></html>