[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