<div dir="ltr">Hi Matthew,<div><br></div><div>Thanks for the information. I guess the problem is the close format  of <span style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:15.3636360168457px">EGL_ANDROID_image_native_buffer. I thought we can use the </span></div><div><span style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:15.3636360168457px">shared EGLImage buffer between OMX and GLES, but that is apparently not the case with android mediacodec.</span></div><div><span style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:15.3636360168457px"><br></span></div><div><font face="Helvetica Neue, Helvetica, Arial, sans-serif"><span style="line-height:15.3636360168457px">I'll investigate more with your patch. I guess the worst case is to customize my shaders with </span></font><span style="color:rgb(0,0,0);white-space:pre-wrap">OES_EGL_image_external extension.</span></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 25, 2015 at 2:02 AM, Matthew Waters <span dir="ltr"><<a href="mailto:ystreet00@gmail.com" target="_blank">ystreet00@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 25/09/15 00:30, Andy Shiue wrote:<br>
> I am researching the possibility of using the gstreamer on android. I<br>
> managed to get the gst-player (using<br>
> <a href="https://github.com/sdroege/gst-player.git" rel="noreferrer" target="_blank">https://github.com/sdroege/gst-player.git</a>) working on android but the<br>
> video playing is not very smooth and with many dropped frames on a<br>
> nexus 5.<br>
><br>
> I have the pipeline diagram attached. The diagram showed both<br>
> OmxGoogleH264Decoder and GLImageSink were used for playing. That is<br>
> good since the hw acceleration is on then. I do noticed though that<br>
> the desired zero-copy (using memory:EGLImage) is not in use. From the<br>
> information I gathered, playbin should be able to negotiate the<br>
> allocation to use EGLImage if it is available. But this is apparently<br>
> not the case with gst-player.<br>
><br>
> Am I wrong in the assumption that playbn by default will automatically<br>
> choose the EGLImage if it is available? If not, is there a way to<br>
> configure playbin to use EGLImage?<br>
><br>
> I am pretty new to gstreamer so hopefully I am not totally lost in my<br>
> question. I am building the gstreamer from source right now; so hint<br>
> on where to debug will be helpful, too. Thanks for the help.<br>
<br>
</div></div>Currently the android zero-copy path is not merged yet into any release<br>
so all video frames from Android's MediaCodec are going through system<br>
memory and possibly being downloaded and reuploaded into GL.  The<br>
relevant patches are available in the following bug report<br>
<a href="https://bugzilla.gnome.org/show_bug.cgi?id=731204" rel="noreferrer" target="_blank">https://bugzilla.gnome.org/show_bug.cgi?id=731204</a>.  They currently don't<br>
apply against git master so some fiddling is needed to make them<br>
compile.  <a href="https://github.com/ystreet/gst-plugins-bad/tree/amc-zerocopy" rel="noreferrer" target="_blank">https://github.com/ystreet/gst-plugins-bad/tree/amc-zerocopy</a><br>
contains the rebased versions on git master as of a few days ago.<br>
<br>
Android doesn't actually expose an EGLImage for us to pass on so those<br>
caps will never occur.  It instead gives us an external texture handle<br>
to deal with which makes things a little more complicated.<br>
<br>
</blockquote></div><br></div>