GstVideoOverlay

horai ivo.hora at seznam.cz
Sun Sep 8 19:11:14 UTC 2019


Ok, I found out that when I remove waylandsink from the unwanted pipelines
upon click this way:

        g_object_set(d->pipeline1, "video-sink", NULL, NULL);        
        g_object_set(d->pipeline2, "video-sink", NULL, NULL);
        g_object_set(d->pipeline3, "video-sink", NULL, NULL);

or unref the entire pipelines which video renderings are meant to be hidden
in fullscreen mode:
        gst_object_unref(d->pipeline1);
        gst_object_unref(d->pipeline2);
        gst_object_unref(d->pipeline3);

It works as it is, all the other rendering areas are cleared and the GtkBox
I clicked on resizes to fullscreen and it plays fullscreen without any
disturbing rectangle black rectangle from hidden rendering areas.

By some (for me) unknown mechanism all three unwanted rendering areas are
completely cleared and no random blanking of one of these rendering areas
occur, unfortunately, when I try to return the waylandsink back to the
pipeline and start the pipeline again, it does not work:
 g_object_set(d->pipeline1, "video-sink", d->sink1, NULL);
 gst_element_set_state(d->pipeline1, GST_STATE_PLAYING);

Well, I guess the problem is that the pipeline (probably waylandsink) still
keeps track of the area (dimensions and position) given to the overlay by
method:
gst_video_overlay_set_render_rectangle(d->overlay1, allocation.x,
                allocation.y, allocation.width, allocation.height);

withing the Gtk Window specified to the overlay by method:
        gst_video_overlay_set_window_handle(d->overlay1, (guintptr)
window_handle);

I need to force the pipeline or the sink to forget about the rendering area
for the time of clicked video rendering fullscreen, after the first video
returns from fullscreen, I need all the remaining pipelines to revive their
previous rendering areas or I can set it manually once more, but I cannot
force the pipeline  (or the sink) to release the rendering area on the
window (wl_surface).
Is method:

gst_video_overlay_set_render_rectangle(d->overlay1,allocation.x,allocation.y,-1,-1)
really not intended for clearing the rendering area?
Is there any convenient way how to clear the area without removing the
pipeline or removing the sink from the pipeline? I need all the hidden
overlays to keep the window_handles to possibly restart their rendering in
multi video window.

Thank you
Best regards,
Ivo




--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/


More information about the gstreamer-devel mailing list