[Bug 772608] rpi/dispmanx: Implement gst_video_overlay_set_window_handle() for dispmanx window

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Sun Oct 9 17:23:34 UTC 2016


https://bugzilla.gnome.org/show_bug.cgi?id=772608

--- Comment #20 from Munez <munezbn.dev at gmail.com> ---
I think first i need to be clear with the sequence. I added few prints
gstglwindow_dispmanx_egl.c  and this is what is happening. I am pasting in
sequence

>From gstreamer
----------------
a] gst_gl_window_dispmanx_egl_create_window(+157): Create a window
b] window_resize(+253): preferred is 0 0 
c] window_resize(+263): Src (0 0 16 16) Dst (952 532 16 16)
d] window_resize(+277): ==== Create and add a new element ====
e] gst_gl_window_dispmanx_egl_get_window_handle(+170): Get Window handle
f] gst_gl_window_dispmanx_egl_get_window_handle(+170): Get Window handle

>From App
---------
g] Received bus_sync_handler................
h] Setting Video Window handle 240200 as overlay

>From gstreamer
---------------
i] gst_gl_window_dispmanx_egl_set_render_rectangle(+302):  Set Rend Rect 0 0
1920 1080
j] window_resize(+253): preferred 0 0 
k] window_resize(+263): Src (0 0 1920 1080) Dst (0 0 1920 1080)
l] gst_gl_window_dispmanx_egl_set_window_handle(+184): set window handle with
size 1920x1080
m] gst_gl_window_dispmanx_egl_get_window_handle(+170): Get Window handle
n] gst_gl_window_dispmanx_egl_set_preferred_size(+205): set preferred size to
1280x536
o] gst_gl_window_dispmanx_egl_show(+313): Show Window resize if rend rect w/h
<=0 1920 1080
p] window_resize(+253): preferred 1280 536 
q] window_resize(+263): Src (0 0 1280 536) Dst (320 272 1280 536)
r] gst_gl_window_dispmanx_egl_close(+126): Remove native.element

Create window is called in the beginning (a]) and it creates and adds a new 
dispmanx element at layer 0 with size 16x16 (c] & d]) and this element is
stored in and as window_egl->native.element

After this app receives sync handler message in which app sets the a new
dispmanx element (g] & h]) 

This new element will be stored in and as window_egl->foreign.element (l])
And finally when we quit native.element is removed from dispmanx layer (r])

So, when app sets the new dispmanx window element , there is already a native
element created and stored in native.element  i.e when the create window is
called i original code there is no foreign window available to use.

When I said, if we copy everything from foreign to native we need to make sure
that native element is removed which was created by original code..

Then there is a call gst_gl_window_dispmanx_egl_close() when we stop the
playback which removes native.element from dispmanx layer.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list