<div dir="ltr"><div class="gmail_quote"><div dir="ltr"><br clear="all"><div><div>Hi </div><div>I am working on applicaition for live video chat.</div><div>Pipeline is fairly simple:</div><div>appsrc->encoder->appsink</div><div><br></div><div>-appsrc:from my application i take raw i420 frames and push to GST from my application thread</div><div>using gst_app_src_push_buffer(). I also keep listening to need-data and enough-data callbacks.</div><div>And stop pushing data when enough-data callback comes, and resume again on need-data.</div><div>-encoder-is h264plugin. (custom plugin on our hardware,base-profile,byte-stream)</div><div>-appsink-i pulled data when callback comes.</div><div><br></div><div>all works fine with frames of 640*480. </div><div>But when use HD video, initially for 1 minutes i can see appsrc and appsink running almost 30fps.</div><div>but then stopfeed comes, so i have to dropped frames. which results in drop of fps.</div><div><br></div><div>So my questions is:</div><div>1.Why this behaviour happens ? my assumption is encoder cannot cosumes raw frames at 30fps so appsrc queue gets fulled.</div><div>so it sends enough-data callback. is my understanding correct?</div><div>2.When i push buffer from my app thread(and need-data callbacks happen in diff thread).</div><div>Does internally memcpy happens to send data to apprc/encoder streaming thread?</div><div>3.How to optimize this use case ?  </div><div>i already tried many properties for reducing bit-rate, increasing appsrc max bytes, changing other values etc..</div><div>(plugin developer says it supports HD encoding at real time 30fps)</div><div>4.how to debug performance blockers ?</div><div><br></div><div>Any suggestions will be really useful. Thanks a lot.</div></div><br></div></div></div>