<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
/* List Definitions */
@list l0
        {mso-list-id:1517773033;
        mso-list-type:hybrid;
        mso-list-template-ids:1261437788 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal><span style='font-family:"Times New Roman","serif"'>Hi,<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-family:"Times New Roman","serif"'><o:p> </o:p></span></p>
<pre style='background:white'><span style='font-family:"Times New Roman","serif"'>I have doubt in </span><b><span
style='font-family:"Times New Roman","serif"'>x264_slicetype_analyse</span></b><span
style='font-family:"Times New Roman","serif"'> function which try to find the best GOP structure with B frames when X264_B_ADAPT_TRELLIS is used. <o:p></o:p></span></pre><pre
style='background:white'><span style='font-family:"Times New Roman","serif"'>When analyzing the each slicetype path, the best paths are initialized and the frame type analysis is carried over the number of frames in lookahead using following loop. <o:p></o:p></span></pre>
<p class=MsoNormal><span style='font-family:"Times New Roman","serif"'><o:p> </o:p></span></p>
<p class=MsoNormal style='background:white'><span style='font-size:10.0pt;
font-family:"Courier New";color:purple'>for</span><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>( </span><span style='font-size:10.0pt;
font-family:"Courier New";color:purple'>int</span><span style='font-size:10.0pt;
font-family:"Courier New";color:black'> j = </span><span style='font-size:10.0pt;
font-family:"Courier New";color:navy'>2</span><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>; j < num_frames; j++ )<o:p></o:p></span></p>
<p class=MsoNormal style='background:white'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'> <b>x264_slicetype_path</b>(
h, &a, frames, j, best_paths );<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<pre style='background:white'><span style='font-family:"Times New Roman","serif"'>Then in x264_slicetype_path, the possible paths are initialized and best costs are estimated over every path in the following loop<o:p></o:p></span></pre><pre
style='background:white'><span style='font-family:"Times New Roman","serif"'><o:p> </o:p></span></pre>
<p class=MsoNormal style='background:white'><span style='font-size:10.0pt;
font-family:"Courier New";color:purple'>for</span><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>( </span><span style='font-size:10.0pt;
font-family:"Courier New";color:purple'>int</span><span style='font-size:10.0pt;
font-family:"Courier New";color:black'> path = </span><span style='font-size:
10.0pt;font-family:"Courier New";color:navy'>0</span><span style='font-size:
10.0pt;font-family:"Courier New";color:black'>; path < num_paths; path++ )<o:p></o:p></span></p>
<p class=MsoNormal style='background:white'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'> </span><span style='font-size:
10.0pt;font-family:"Courier New";color:maroon'>{</span><span style='font-size:
10.0pt;font-family:"Courier New";color:black'><o:p></o:p></span></p>
<p class=MsoNormal style='background:white'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>
</span><span style='font-size:10.0pt;font-family:"Courier New";color:purple'>int</span><span
style='font-size:10.0pt;font-family:"Courier New";color:black'> len = length -
(path + </span><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'>1</span><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>);<o:p></o:p></span></p>
<p class=MsoNormal style='background:white'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'> </span><span
style='font-size:10.0pt;font-family:"Courier New";color:#C04000'>memcpy</span><span
style='font-size:10.0pt;font-family:"Courier New";color:black'>( paths</span><span
style='font-size:10.0pt;font-family:"Courier New";color:maroon'>[</span><span
style='font-size:10.0pt;font-family:"Courier New";color:black'>idx</span><span
style='font-size:10.0pt;font-family:"Courier New";color:maroon'>]</span><span
style='font-size:10.0pt;font-family:"Courier New";color:black'>, best_paths</span><span
style='font-size:10.0pt;font-family:"Courier New";color:maroon'>[</span><span
style='font-size:10.0pt;font-family:"Courier New";color:black'>len %
(X264_BFRAME_MAX+</span><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'>1</span><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>)</span><span style='font-size:10.0pt;font-family:"Courier New";
color:maroon'>]</span><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>, len );<o:p></o:p></span></p>
<p class=MsoNormal style='background:white'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>
</span><span style='font-size:10.0pt;font-family:"Courier New";color:#C04000'>memset</span><span
style='font-size:10.0pt;font-family:"Courier New";color:black'>( paths</span><span
style='font-size:10.0pt;font-family:"Courier New";color:maroon'>[</span><span
style='font-size:10.0pt;font-family:"Courier New";color:black'>idx</span><span
style='font-size:10.0pt;font-family:"Courier New";color:maroon'>]</span><span
style='font-size:10.0pt;font-family:"Courier New";color:black'>+len, </span><span
style='font-size:10.0pt;font-family:"Courier New";color:#006060'>'B'</span><span
style='font-size:10.0pt;font-family:"Courier New";color:black'>, path );<o:p></o:p></span></p>
<p class=MsoNormal style='background:white'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>
</span><span style='font-size:10.0pt;font-family:"Courier New";color:#C04000'>strcpy</span><span
style='font-size:10.0pt;font-family:"Courier New";color:black'>( paths</span><span
style='font-size:10.0pt;font-family:"Courier New";color:maroon'>[</span><span
style='font-size:10.0pt;font-family:"Courier New";color:black'>idx</span><span
style='font-size:10.0pt;font-family:"Courier New";color:maroon'>]</span><span
style='font-size:10.0pt;font-family:"Courier New";color:black'>+len+path, </span><span
style='font-size:10.0pt;font-family:"Courier New";color:teal'>"P"</span><span
style='font-size:10.0pt;font-family:"Courier New";color:black'> );<o:p></o:p></span></p>
<p class=MsoNormal style='background:white'><i><span style='font-size:10.0pt;
font-family:"Courier New";color:green'>
</span></i><span style='font-size:10.0pt;font-family:"Courier New";color:purple'>int</span><span
style='font-size:10.0pt;font-family:"Courier New";color:black'> cost = <b>x264_slicetype_path_cost</b>(
h, a, frames, paths</span><span style='font-size:10.0pt;font-family:"Courier New";
color:maroon'>[</span><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>idx</span><span style='font-size:10.0pt;font-family:"Courier New";
color:maroon'>]</span><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>, best_cost );<o:p></o:p></span></p>
<p class=MsoNormal style='background:white'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>
…………….<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>
}<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif"'>My
doubt is, when looking the two loops, is not there are some paths iterated more
than once redundantly? Since the number possible paths are considered the later
loop in the available lookahead frames. Please correct me if I am wrong.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif"'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif"'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif"'>Regards,<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif"'>Nag<o:p></o:p></span></p>
</div>
</body>
</html>