<br><br><div class="gmail_quote">On Fri, Jul 9, 2010 at 7:13 PM, Jason Garrett-Glaser <span dir="ltr">&lt;<a href="mailto:darkshikari@gmail.com">darkshikari@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div><div></div><div class="h5">On Wed, Jul 7, 2010 at 8:27 AM, Pascal Massimino<br>
&lt;<a href="mailto:pascal.massimino@gmail.com">pascal.massimino@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt; On Sun, Jul 4, 2010 at 6:41 PM, &lt;<a href="mailto:git@videolan.org">git@videolan.org</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; x264 | branch: master | Jason Garrett-Glaser &lt;<a href="mailto:darkshikari@gmail.com">darkshikari@gmail.com</a>&gt; | Wed<br>
&gt;&gt; Jun 30 13:06:22 2010 -0700| [f378994ab3c816aaab2b795143e31919fdee1f2d] |<br>
&gt;&gt; committer: Jason Garrett-Glaser<br>
&gt;&gt;<br>
&gt;&gt; Don&#39;t check i16x16 planar mode unless previous modes were useful<br>
&gt;&gt; Saves ~160 clocks per MB at subme=1, ~270 per MB at subme&gt;1 (measured on<br>
&gt;&gt; Core i7).<br>
&gt;&gt; Negligle effect on compression.<br>
&gt;&gt;<br>
&gt;&gt; Also make a few more arrays static.<br>
&gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; <a href="http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=f378994ab3c816aaab2b795143e31919fdee1f2d" target="_blank">http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=f378994ab3c816aaab2b795143e31919fdee1f2d</a><br>

&gt;&gt; ---<br>
&gt;&gt;<br>
&gt;&gt;  encoder/analyse.c |   29 +++++++++++++++++++----------<br>
&gt;&gt;  encoder/set.c     |    3 ++-<br>
&gt;&gt;  2 files changed, 21 insertions(+), 11 deletions(-)<br>
&gt;&gt;<br>
&gt;&gt; diff --git a/encoder/analyse.c b/encoder/analyse.c<br>
&gt;&gt; index 696c78f..cdbdd1e 100644<br>
&gt;&gt; --- a/encoder/analyse.c<br>
&gt;&gt; +++ b/encoder/analyse.c<br>
&gt;&gt; @@ -646,16 +646,27 @@ static void x264_mb_analyse_intra( x264_t *h,<br>
&gt;&gt; x264_mb_analysis_t *a, int i_satd_<br>
&gt;&gt;     /* 16x16 prediction selection */<br>
&gt;&gt;     const int8_t *predict_mode = predict_16x16_mode_available(<br>
&gt;&gt; h-&gt;mb.i_neighbour_intra );<br>
&gt;&gt;<br>
&gt;&gt; +    /* Not heavily tuned */<br>
&gt;&gt; +    static const uint8_t i16x16_thresh_lut[11] = { 2, 2, 2, 3, 3, 4, 4,<br>
&gt;&gt; 4, 4, 4, 4 };<br>
&gt;&gt; +    int i16x16_thresh = a-&gt;b_fast_intra ?<br>
&gt;&gt; (i16x16_thresh_lut[h-&gt;mb.i_subpel_refine]*i_satd_inter)&gt;&gt;1 : COST_MAX;<br>
&gt;&gt; +<br>
&gt;&gt;     if( !h-&gt;mb.b_lossless &amp;&amp; predict_mode[3] &gt;= 0 )<br>
&gt;&gt;     {<br>
&gt;&gt;         h-&gt;pixf.intra_mbcmp_x3_16x16( p_src, p_dst, a-&gt;i_satd_i16x16_dir<br>
&gt;&gt; );<br>
&gt;&gt; -        h-&gt;predict_16x16[I_PRED_16x16_P]( p_dst );<br>
&gt;&gt; -        a-&gt;i_satd_i16x16_dir[I_PRED_16x16_P] =<br>
&gt;&gt; -            h-&gt;pixf.mbcmp[PIXEL_16x16]( p_dst, FDEC_STRIDE, p_src,<br>
&gt;&gt; FENC_STRIDE );<br>
&gt;&gt; -        for( int i = 0; i &lt; 4; i++ )<br>
&gt;&gt; +        a-&gt;i_satd_i16x16_dir[0] += lambda * bs_size_ue(0);<br>
&gt;&gt; +        a-&gt;i_satd_i16x16_dir[1] += lambda * bs_size_ue(1);<br>
&gt;&gt; +        a-&gt;i_satd_i16x16_dir[2] += lambda * bs_size_ue(2);<br>
&gt;&gt; +        COPY2_IF_LT( a-&gt;i_satd_i16x16, a-&gt;i_satd_i16x16_dir[0],<br>
&gt;&gt; a-&gt;i_predict16x16, 0 );<br>
&gt;&gt; +        COPY2_IF_LT( a-&gt;i_satd_i16x16, a-&gt;i_satd_i16x16_dir[1],<br>
&gt;&gt; a-&gt;i_predict16x16, 1 );<br>
&gt;&gt; +        COPY2_IF_LT( a-&gt;i_satd_i16x16, a-&gt;i_satd_i16x16_dir[2],<br>
&gt;&gt; a-&gt;i_predict16x16, 2 );<br>
&gt;&gt; +<br>
&gt;&gt; +        /* Plane is expensive, so don&#39;t check it unless one of the<br>
&gt;&gt; previous modes was useful. */<br>
&gt;&gt; +        if( a-&gt;i_satd_i16x16 &lt;= i16x16_thresh )<br>
&gt;&gt;         {<br>
&gt;&gt; -            int cost = a-&gt;i_satd_i16x16_dir[i] += lambda * bs_size_ue(i);<br>
&gt;&gt; -            COPY2_IF_LT( a-&gt;i_satd_i16x16, cost, a-&gt;i_predict16x16, i );<br>
&gt;&gt; +            h-&gt;predict_16x16[I_PRED_16x16_P]( p_dst );<br>
&gt;&gt; +            a-&gt;i_satd_i16x16_dir[I_PRED_16x16_P] =<br>
&gt;&gt; h-&gt;pixf.mbcmp[PIXEL_16x16]( p_dst, FDEC_STRIDE, p_src, FENC_STRIDE );<br>
&gt;&gt; +            a-&gt;i_satd_i16x16_dir[I_PRED_16x16_P] += lambda *<br>
&gt;&gt; bs_size_ue(3);<br>
&gt;&gt; +            COPY2_IF_LT( a-&gt;i_satd_i16x16,<br>
&gt;&gt; a-&gt;i_satd_i16x16_dir[I_PRED_16x16_P], a-&gt;i_predict16x16, 3 );<br>
&gt;&gt;         }<br>
&gt;&gt;     }<br>
&gt;&gt;     else<br>
&gt;&gt; @@ -681,9 +692,7 @@ static void x264_mb_analyse_intra( x264_t *h,<br>
&gt;&gt; x264_mb_analysis_t *a, int i_satd_<br>
&gt;&gt;         /* cavlc mb type prefix */<br>
&gt;&gt;         a-&gt;i_satd_i16x16 += lambda * i_mb_b_cost_table[I_16x16];<br>
&gt;&gt;<br>
&gt;&gt; -    /* Not heavily tuned */<br>
&gt;&gt; -    const uint8_t i16x16_thresh[11] = { 2, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4<br>
&gt;&gt; };<br>
&gt;&gt; -    if( a-&gt;b_fast_intra &amp;&amp; a-&gt;i_satd_i16x16 &gt;<br>
&gt;&gt; (i16x16_thresh[h-&gt;mb.i_subpel_refine]*i_satd_inter)&gt;&gt;1 )<br>
&gt;&gt; +    if( a-&gt;i_satd_i16x16 &gt; i16x16_thresh )<br>
&gt;<br>
&gt; what the...?? </div></div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div class="h5">
<br>
</div></div>What the what?<br></blockquote><div><br></div><div>sorry, my bad. Just ignore...</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
Dark Shikari<br>
<div><div></div><div class="h5">_______________________________________________<br>
x264-devel mailing list<br>
<a href="mailto:x264-devel@videolan.org">x264-devel@videolan.org</a><br>
<a href="http://mailman.videolan.org/listinfo/x264-devel" target="_blank">http://mailman.videolan.org/listinfo/x264-devel</a><br>
</div></div></blockquote></div><br>