I think this function generate a low resolution version of the current frame for encoding usage. Not 100 percent sure.<br><br><div><span class="gmail_quote">On 1/7/07, <b class="gmail_sendername">$B2&>.@E(B</b> &lt;<a href="mailto:wangxiaojing.hnu@gmail.com">
wangxiaojing.hnu@gmail.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I&#39;m a newbie of x264,and I&nbsp; have confused by the x264_frame_init_lowres routine in the file&nbsp; 
mc.c.<br>The routine&nbsp; is called by x264_encoder_encode when h-&gt;frames.b_have_lowres is true.<br>I wonder what&nbsp; does the h-&gt;
frames.b_have_lowres stand by and what&#39;s the function of x264_frame_init_lowres?<br>I will be grateful with any reply.Thanks.<br>the source of this routine is following:<br>void x264_frame_init_lowres( int cpu, x264_frame_t *frame )
<br>{&nbsp;&nbsp;&nbsp; // FIXME: tapfilter?<br>&nbsp;&nbsp;&nbsp; const int i_stride = frame-&gt;i_stride[0];<br>&nbsp;&nbsp;&nbsp; const int i_stride2 = frame-&gt;i_stride_lowres;<br>&nbsp;&nbsp;&nbsp; const int i_width2 = i_stride2 - 64;<br>&nbsp;&nbsp;&nbsp; int x, y, i;<br>&nbsp;&nbsp;&nbsp; for( y = 0; y &lt; frame-&gt;i_lines_lowres - 1; y++ )
<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uint8_t *src0 = &amp;frame-&gt;plane[0][2*y*i_stride];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uint8_t *src1 = src0+i_stride;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uint8_t *src2 = src1+i_stride;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uint8_t *dst0 = &amp;frame-&gt;lowres[0][y*i_stride2];
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uint8_t *dsth = &amp;frame-&gt;lowres[1][y*i_stride2];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uint8_t *dstv = &amp;frame-&gt;lowres[2][y*i_stride2];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uint8_t *dstc = &amp;frame-&gt;lowres[3][y*i_stride2];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( x = 0; x &lt; i_width2 - 1; x++ )
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dst0[x] = (src0[2*x&nbsp; ] + src0[2*x+1] + src1[2*x&nbsp; ] + src1[2*x+1] + 2) &gt;&gt; 2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dsth[x] = (src0[2*x+1] + src0[2*x+2] + src1[2*x+1] + src1[2*x+2] + 2) &gt;&gt; 2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dstv[x] = (src1[2*x&nbsp; ] + src1[2*x+1] + src2[2*x&nbsp; ] + src2[2*x+1] + 2) &gt;&gt; 2;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dstc[x] = (src1[2*x+1] + src1[2*x+2] + src2[2*x+1] + src2[2*x+2] + 2) &gt;&gt; 2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dst0[x] = (src0[2*x&nbsp; ] + src0[2*x+1] + src1[2*x&nbsp; ] + src1[2*x+1] + 2) &gt;&gt; 2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dstv[x] = (src1[2*x&nbsp; ] + src1[2*x+1] + src2[2*x&nbsp; ] + src2[2*x+1] + 2) &gt;&gt; 2;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dsth[x] = (src0[2*x+1] + src1[2*x+1] + 1) &gt;&gt; 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dstc[x] = (src1[2*x+1] + src2[2*x+1] + 1) &gt;&gt; 1;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; for( i = 0; i &lt; 4; i++ )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memcpy( &amp;frame-&gt;lowres[i][y*i_stride2], &amp;frame-&gt;lowres[i][(y-1)*i_stride2], i_width2 );
<br><br>&nbsp;&nbsp;&nbsp; for( y = 0; y &lt; 16; y++ )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( x = 0; x &lt; 16; x++ )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame-&gt;i_cost_est[x][y] = -1;<br><br>&nbsp;&nbsp;&nbsp; x264_frame_expand_border_lowres( frame );<br>}<br>

</blockquote></div><br>