<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Hi buddies,<div><br></div><div>   Now I successfully create a   video capture+x264encoder+rtp     pipeline on android.   Thank you all for your help before.</div><div><br></div><div> But I found the performance of x264enc is very low.</div><div><br></div><div>The framerate for 640x480 video is about 1 fps.   I change the video size to 320x240, the frame rate can only reach to 1, 2 or 3.   The pipeline  I used is below:</div><div><br></div><div><br></div><div>   <span style="font-family: Monaco; font-size: 11px; ">data-></span><span style="font-family: Monaco; font-size: 11px; color: rgb(3, 38, 204); ">pipeline</span><span style="font-family: Monaco; font-size: 11px; "> = gst_parse_launch(</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; ">"</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; text-decoration: underline; ">gstrtpbin</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; "> name=</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; text-decoration: underline; ">rtpbin</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; "> </span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; text-decoration: underline; ">appsrc</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; "> block=true is-live=true name=app_src ! video/x-raw-</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; text-decoration: underline; ">yuv</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; ">, format=(</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; text-decoration: underline; ">fourcc</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; ">)NV21, width=(</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; text-decoration: underline; ">int</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; ">)320, height=(</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; text-decoration: underline; ">int</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; ">)240, </span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; text-decoration: underline; ">framerate</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; ">=(fraction)15/1 ! </span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; text-decoration: underline; ">ffmpegcolorspace</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; "> ! x264enc tune=</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; text-decoration: underline; ">zerolatency</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; "> byte-stream=true </span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; text-decoration: underline; ">bitrate</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; ">=300 ! rtph264pay ! rtpbin.send_rtp_sink_0</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; ">    </span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; ">rtpbin.send_rtp_src_0 ! </span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; text-decoration: underline; ">udpsink</span><span style="color: rgb(57, 51, 255); font-family: Monaco; font-size: 11px; "> name=udp_sink clients=192.168.1.106:50000"</span><span style="font-family: Monaco; font-size: 11px; ">, &error);</span></div><div><span style="font-family: Monaco; font-size: 11px; "><br></span></div><div><span style="font-family: Monaco; font-size: 11px; "><br></span></div><div><font face="Monaco"><span style="font-size: 11px;">If I bypass the x264 encoder and use below pipeline , the framerate can reach about 15 , just around the same as the camera preview framerate. </span></font></div><div><font face="Monaco"><span style="font-size: 11px;"><br></span></font></div><div><font face="Monaco"><span style="font-size: 11px;"><br></span></font></div><div><p style="font-size: 11px; font-family: Monaco; color: rgb(57, 51, 255); "><span style="color: #000000">data-></span><span style="color: #0326cc">pipeline</span><span style="color: #000000"> = gst_parse_launch(</span>"<span style="text-decoration: underline">gstrtpbin</span> name=<span style="text-decoration: underline">rtpbin</span> <span style="text-decoration: underline">appsrc</span> block=true is-live=true name=app_src ! video/x-raw-<span style="text-decoration: underline">yuv</span>, format=(<span style="text-decoration: underline">fourcc</span>)NV21, width=(<span style="text-decoration: underline">int</span>)320, height=(<span style="text-decoration: underline">int</span>)240, <span style="text-decoration: underline">framerate</span>=(fraction)15/1 ! <span style="text-decoration: underline">ffmpegcolorspace</span> !   <span style="text-decoration: underline">fakesink</span>"<span style="color: #000000">, &error);</span></p><p style="font-size: 11px; font-family: Monaco; color: rgb(57, 51, 255); "><span style="color: #000000"><br></span></p><p style="font-size: 11px; font-family: Monaco; color: rgb(57, 51, 255); "><span style="color: #000000"><br></span></p><p style="font-size: 11px; font-family: Monaco; color: rgb(57, 51, 255); "><span style="color: #000000"><br></span></p><p style="font-size: 11px; font-family: Monaco; color: rgb(57, 51, 255); "><span style="color: #000000"><br></span></p><p style="font-size: 11px; font-family: Monaco; color: rgb(57, 51, 255); "><span style="color: #000000">but if I involved x264enc as below, the framerate dropped to about 1 fps.</span></p><p style="font-size: 11px; font-family: Monaco; color: rgb(57, 51, 255); "><span style="color: #000000"><br></span></p><p style="font-size: 11px; font-family: Monaco; color: rgb(57, 51, 255); "><span style="color: #000000"> data-></span><span style="color: #0326cc">pipeline</span><span style="color: #000000"> = gst_parse_launch(</span>"<span style="text-decoration: underline">gstrtpbin</span> name=<span style="text-decoration: underline">rtpbin</span> <span style="text-decoration: underline">appsrc</span> block=true is-live=true name=app_src ! video/x-raw-<span style="text-decoration: underline">yuv</span>, format=(<span style="text-decoration: underline">fourcc</span>)NV21, width=(<span style="text-decoration: underline">int</span>)320, height=(<span style="text-decoration: underline">int</span>)240, <span style="text-decoration: underline">framerate</span>=(fraction)15/1 ! <span style="text-decoration: underline">ffmpegcolorspace</span> !  x264enc tune=<span style="text-decoration: underline">zerolatency</span> byte-stream=true <span style="text-decoration: underline">bitrate</span>=300 ! <span style="text-decoration: underline">fakesink</span>"<span style="color: #000000">, &error);</span><BR><div><span style="color: #000000"><br></span></div></p></div><div><span style="color: #000000">So I think the performance issue must be at x264enc .</span></div><div><span style="color: #000000"><br></span></div><div>I doubt x264enc is not optimized for android(for example , maybe not use neon instruction)  . Anyone can give me some suggestion ?</div><div><br></div><div><br></div><div>Thanks and Regards,</div><div>Haiming Wang</div>                                          </div></body>
</html>