<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Oct 28, 2013 at 9:39 PM, Zhao, Halley <span dir="ltr"><<a href="mailto:halley.zhao@intel.com" target="_blank">halley.zhao@intel.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div link="blue" vlink="purple" lang="EN-US">
<div>
<p class="MsoNormal">Video player use frame callback on an event queue, sometimes there is synchronization issue.<u></u><u></u></p>
<p class="MsoNormal">After looked at other usage of event queue, I found:<u></u><u></u></p>
<p class="MsoNormal">In order to avoid blocking by wl_display_dispatch_queue(), a padding callback of wl_display_sync is added on purpose.<u></u><u></u></p>
<p class="MsoNormal">Is my understanding correct?<u></u><u></u></p>
<p class="MsoNormal">Here is the changes:<u></u><u></u></p>
<p class="MsoNormal"><a href="https://gitorious.org/halley-test/gstreamer-vaapi/commit/9846c75e7a2bb223900457beffc3384c77cc5075" target="_blank">https://gitorious.org/halley-test/gstreamer-vaapi/commit/9846c75e7a2bb223900457beffc3384c77cc5075</a>
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">however, with or without the above change, I found there is still hangs in my player (efl based) :
<u></u><u></u></p>
<p class="MsoNormal"><a href="https://gitorious.org/gst-plugins-vaapi/simple-player/source/87837fc1b4c11d7a33142c7d4fac1225d8973b80" target="_blank">https://gitorious.org/gst-plugins-vaapi/simple-player/source/87837fc1b4c11d7a33142c7d4fac1225d8973b80</a>:<u></u><u></u></p>

<p class="MsoNormal">it seems to be ECore issue during wl_display_dispatch_pending():</p></div></div></blockquote><div><br></div><div>The short answer is that you shouldn't have to.  Also, sitting in a round-trip loop is asking for bad performance if the CPU is under load.<br>
<br></div><div>If I had to take a guess, I think it's likely that ecore and gstreamer are fighting over the file descriptor.  I don't know the codebase of either, but you have to be careful with handing it back and forth.  In particular, take a look at wl_display_prepare_read:<br>
<br><a href="http://cgit.freedesktop.org/wayland/wayland/tree/src/wayland-client.c#n1078">http://cgit.freedesktop.org/wayland/wayland/tree/src/wayland-client.c#n1078</a><br><br></div><div>I hope that's helpful,<br></div>
<div>--Jason Ekstrand<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div link="blue" vlink="purple" lang="EN-US"><div><p class="MsoNormal">
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Rafael:<u></u><u></u></p>
<p class="MsoNormal">Do you think it is an ECore issue?<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">// wl_display_sync callback with wl_display_dispatch_pending()<u></u><u></u></p>
<p class="MsoNormal">(gdb) bt<u></u><u></u></p>
<p class="MsoNormal">#0  0xb7c4ddd0 in _ecore_wl_input_cb_keyboard_enter () from /lib/libecore_wayland.so.1<u></u><u></u></p>
<p class="MsoNormal">#1  0xb6f16666 in ffi_call_SYSV () from /lib/libffi.so.6<u></u><u></u></p>
<p class="MsoNormal">#2  0xb6f163eb in ffi_call () from /lib/libffi.so.6<u></u><u></u></p>
<p class="MsoNormal">#3  0xb79a9ae5 in wl_closure_invoke () from /lib/libwayland-client.so.0<u></u><u></u></p>
<p class="MsoNormal">#4  0xb79a74c2 in dispatch_queue () from /lib/libwayland-client.so.0<u></u><u></u></p>
<p class="MsoNormal">#5  0xb79a803e in wl_display_dispatch_queue_pending () from /lib/libwayland-client.so.0<u></u><u></u></p>
<p class="MsoNormal">#6  0xb79a8162 in wl_display_dispatch_pending () from /lib/libwayland-client.so.0<u></u><u></u></p>
<p class="MsoNormal">#7  0xb3ca72a6 in gst_vaapi_window_wayland_sync (window=0x87d2d50) at gstvaapiwindow_wayland.c:162<u></u><u></u></p>
<p class="MsoNormal">#8  gst_vaapi_window_wayland_render (window=0x87d2d50, surface=0xb0a02860, src_rect=0xb017dbd0, dst_rect=0x88bdbe0, flags=0) at gstvaapiwindow_wayland.c:514<u></u><u></u></p>
<p class="MsoNormal">#9  0xb3c5a2fb in gst_vaapi_window_put_surface (window=0x87d2d50, surface=surface@entry=0xb0a02860, src_rect=0xb017dbd0, src_rect@entry=0x0, dst_rect=<optimized out>, dst_rect@entry=0x88bdbe0,
<u></u><u></u></p>
<p class="MsoNormal">    flags=flags@entry=0) at gstvaapiwindow.c:435<u></u><u></u></p>
<p class="MsoNormal">#10 0xb3ccc1e1 in gst_vaapisink_put_surface (flags=0, surface_rect=<optimized out>, surface=0xb0a02860, sink=0x88bd958) at gstvaapisink.c:1150<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">If I remove wl_display_dispatch_pending in frame callback sync:<u></u><u></u></p>
<p class="MsoNormal">There is backtrace, <u></u><u></u></p>
<p class="MsoNormal">// wl_display_sync callback with wl_display_dispatch_pending()<u></u><u></u></p>
<p class="MsoNormal">(gdb) bt<u></u><u></u></p>
<p class="MsoNormal">#0  0xb7c4ddd0 in _ecore_wl_input_cb_keyboard_enter () from /lib/libecore_wayland.so.1<u></u><u></u></p>
<p class="MsoNormal">#1  0xb6f16666 in ffi_call_SYSV () from /lib/libffi.so.6<u></u><u></u></p>
<p class="MsoNormal">#2  0xb6f163eb in ffi_call () from /lib/libffi.so.6<u></u><u></u></p>
<p class="MsoNormal">#3  0xb79a9ae5 in wl_closure_invoke () from /lib/libwayland-client.so.0<u></u><u></u></p>
<p class="MsoNormal">#4  0xb79a74c2 in dispatch_queue () from /lib/libwayland-client.so.0<u></u><u></u></p>
<p class="MsoNormal">#5  0xb79a803e in wl_display_dispatch_queue_pending () from /lib/libwayland-client.so.0<u></u><u></u></p>
<p class="MsoNormal">#6  0xb79a8162 in wl_display_dispatch_pending () from /lib/libwayland-client.so.0<u></u><u></u></p>
<p class="MsoNormal">#7  0xb3ca72a6 in gst_vaapi_window_wayland_sync (window=0x87d2d50) at gstvaapiwindow_wayland.c:162<u></u><u></u></p>
<p class="MsoNormal">#8  gst_vaapi_window_wayland_render (window=0x87d2d50, surface=0xb0a02860, src_rect=0xb017dbd0, dst_rect=0x88bdbe0, flags=0) at gstvaapiwindow_wayland.c:514<u></u><u></u></p>
<p class="MsoNormal">#9  0xb3c5a2fb in gst_vaapi_window_put_surface (window=0x87d2d50, surface=surface@entry=0xb0a02860, src_rect=0xb017dbd0, src_rect@entry=0x0, dst_rect=<optimized out>, dst_rect@entry=0x88bdbe0,
<u></u><u></u></p>
<p class="MsoNormal">    flags=flags@entry=0) at gstvaapiwindow.c:435<u></u><u></u></p>
<p class="MsoNormal">#10 0xb3ccc1e1 in gst_vaapisink_put_surface (flags=0, surface_rect=<optimized out>, surface=0xb0a02860, sink=0x88bd958) at gstvaapisink.c:1150<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">// no wl_display_sync callback witt wl_display_displatch_pending<u></u><u></u></p>
<p class="MsoNormal">#0  0xb7c4ddd0 in _ecore_wl_input_cb_keyboard_enter () from /lib/libecore_wayland.so.1<u></u><u></u></p>
<p class="MsoNormal">#1  0xb6f16666 in ffi_call_SYSV () from /lib/libffi.so.6<u></u><u></u></p>
<p class="MsoNormal">#2  0xb6f163eb in ffi_call () from /lib/libffi.so.6<u></u><u></u></p>
<p class="MsoNormal">#3  0xb79a9ae5 in wl_closure_invoke () from /lib/libwayland-client.so.0<u></u><u></u></p>
<p class="MsoNormal">#4  0xb79a74c2 in dispatch_queue () from /lib/libwayland-client.so.0<u></u><u></u></p>
<p class="MsoNormal">#5  0xb79a803e in wl_display_dispatch_queue_pending () from /lib/libwayland-client.so.0<u></u><u></u></p>
<p class="MsoNormal">#6  0xb79a8162 in wl_display_dispatch_pending () from /lib/libwayland-client.so.0<u></u><u></u></p>
<p class="MsoNormal">#7  0xb3ca72a6 in gst_vaapi_window_wayland_sync (window=0x87d2950) at gstvaapiwindow_wayland.c:162<u></u><u></u></p>
<p class="MsoNormal">#8  gst_vaapi_window_wayland_render (window=0x87d2950, surface=0xb0a02860, src_rect=0xb017dbd0, dst_rect=0x88bd850, flags=0) at gstvaapiwindow_wayland.c:514<u></u><u></u></p>
<p class="MsoNormal">#9  0xb3c5a2fb in gst_vaapi_window_put_surface (window=0x87d2950, surface=surface@entry=0xb0a02860, src_rect=0xb017dbd0, src_rect@entry=0x0, dst_rect=<optimized out>, dst_rect@entry=0x88bd850,
<u></u><u></u></p>
<p class="MsoNormal">    flags=flags@entry=0) at gstvaapiwindow.c:435<u></u><u></u></p>
</div>
</div>

<br>_______________________________________________<br>
wayland-devel mailing list<br>
<a href="mailto:wayland-devel@lists.freedesktop.org">wayland-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/wayland-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/wayland-devel</a><br>
<br></blockquote></div><br></div></div>