<span lang="EN-US"></span><span lang="EN-US">Hi, everyone:</span>







<p class="MsoNormal"><span lang="EN-US">The x264 use the frame-level parallelism now.
It could be easily comprehended by the stream structure "IPBBPBB". Such as
below figure:&nbsp;</span>

</p><p class="MsoNormal"><span lang="EN-US">0(I)----3(P)----6(P)------------9(P)-------------12(P)</span></p>

<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>|<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="">&nbsp; </span><span style="">&nbsp;&nbsp;&nbsp; </span><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>|<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
<span style="">&nbsp;&nbsp;&nbsp;&nbsp; </span>|</span></p>

<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>|----1(B)<span style="">&nbsp; </span><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>|----4(B)<span style="">&nbsp;&nbsp; </span><span style="">&nbsp;&nbsp;&nbsp;&nbsp; </span>|----7(B)</span>
</p>

<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>|<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>|<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>|</span></p>

<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>|----2(B)<span style="">&nbsp; </span><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>|----5(B)<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>|----8(B)</span></p>



<p class="MsoNormal"><span lang="EN-US">But how does the x264 perform the
multi-thread for the steam structure "IPPPP"? I encode one file to the
structure "IPPPP". The encoding speed is about 31.65fps for multi-thread. At
the same time it is 16.29fps for single-thread with same parameters. </span></p>



<p class="MsoNormal"><span lang="EN-US">The result indicates that the multi-thread
is very faster than the sing-thread for the structure "IPPPP". I print the poc
of each reference frame for every thread. I use only 1 reference frame. The test
data as below:<br>&nbsp;</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: I poc= 0 no refpoc0 no refpoc1
thread=33ee8h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: P poc= 2 refpoc0= 0 no refpoc1
thread=34190h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: P poc= 4 refpoc0= 2 no refpoc1
thread=34300h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: P poc= 6 refpoc0= 4 no refpoc1
thread=33ee8h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: P poc= 8 refpoc0= 6 no refpoc1
thread=34190h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: P poc=10 refpoc0= 8 no refpoc1
thread=34300h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: P poc=12 refpoc0=10 no refpoc1
thread=33ee8h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: P poc=14 refpoc0=12 no refpoc1
thread=34190h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: P poc=16 refpoc0=14 no refpoc1
thread=34300h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: P poc=18 refpoc0=16 no refpoc1
thread=33ee8h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: P poc=20 refpoc0=18 no refpoc1
thread=34190h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: P poc=22 refpoc0=20 no refpoc1
thread=34300h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: I poc= 0 no refpoc0 no refpoc1
thread=33ee8h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: P poc= 2 refpoc0= 0 no refpoc1
thread=34190h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: P poc= 4 refpoc0= 2 no refpoc1
thread=34300h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: P poc= 6 refpoc0= 4 no refpoc1
thread=33ee8h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: P poc= 8 refpoc0= 6 no refpoc1
thread=34190h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: P poc=10 refpoc0= 8 no refpoc1
thread=34300h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: P poc=12 refpoc0=10 no refpoc1
thread=33ee8h</span></p>

<p class="MsoNormal"><span lang="EN-US">x264 [info]: P poc=14 refpoc0=12 no refpoc1
thread=34190h</span></p>



<p class="MsoNormal"><span lang="EN-US">&nbsp;<br>I think it is difficult to perform
frame-level parallelism for the structure "IPPPPP" because every P slice needs
the previous frame as reference. So the current frame could begin to encode after
the previous frame finish encode and decode. But this is single-thread flow. </span></p>



<p class="MsoNormal"><span lang="EN-US">What's wrong with me? How does the x264
perform the multi-thread for the structure "IPPPPPP"?</span></p>



<p class="MsoNormal"><span lang="EN-US">Any advice is welcome. Thanks in advance.</span></p>

<br>

<p class="MsoNormal"><span lang="EN-US">Best wishes,</span></p>

<p class="MsoNormal"><span lang="EN-US">Alexander tian</span></p>

<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>