<div dir="ltr"><div>>> <span style="font-size:12.8px">I derived originally from tutorial-3 that I used some concepts from</span><br></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">>> sdlshare.c and sdlshare2.c for the fakesink and context sharing.</span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><br></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">Hi, all these 3 examples are working for you ? What is the diff with your sample ?</span></div><div><br></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><br></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><br></span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 21 February 2018 at 09:09, jeremi.wojcicki <span dir="ltr"><<a href="mailto:jeremi.wojcicki@gmail.com" target="_blank">jeremi.wojcicki@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Nicolas Dufresne-5 wrote<br>
<span class="">> Le mardi 20 février 2018 à 12:16 -0700, jeremi.wojcicki a écrit :<br>
>> To sum up, it seems that the lack of need-context message in bus sync<br>
>> callback is the problem now. Any reason for that?<br>
><br>
> Have you compared your code against one of the tutorial ?<br>
<br>
</span>Hmm, I derived originally from tutorial-3 that I used some concepts from<br>
sdlshare.c and sdlshare2.c for the fakesink and context sharing.<br>
<br>
Anyhow, here is the current version of the code:<br>
<br>
<a href="https://hastebin.com/onoyirarof.php" rel="noreferrer" target="_blank">https://hastebin.com/<wbr>onoyirarof.php</a><br>
<br>
and as you can see the need-context message appears in the async handler (I<br>
hope I am naming them right, but that's what I understood fro the GstBus<br>
documentation).<br>
<br>
2-21 10:00:26.546 19263-19331/com.oculus.<wbr>vrcubeworldsv E/GST_log: Recieved<br>
context[0x718BE080] and display[0x00000001] from renderer<br>
02-21 10:00:26.565 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: Starting<br>
gstreamer pipeline<br>
02-21 10:00:26.565 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: Creating<br>
pipeline in CustomData at 0x735d084420<br>
02-21 10:00:26.565 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: Creating<br>
new main loop<br>
02-21 10:00:26.565 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: Building<br>
pipeline<br>
02-21 10:00:26.569 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: glupload<br>
display ok<br>
02-21 10:00:26.569 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: glupload<br>
wrapped context ok<br>
02-21 10:00:26.574 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > sync<br>
handler called<br>
02-21 10:00:26.574 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
state-changed message<br>
02-21 10:00:26.574 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > sync<br>
handler called<br>
02-21 10:00:26.574 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
state-changed message<br>
02-21 10:00:26.574 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > sync<br>
handler called<br>
02-21 10:00:26.574 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
stream-status message<br>
02-21 10:00:26.574 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > sync<br>
handler called<br>
02-21 10:00:26.574 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
state-changed message<br>
02-21 10:00:26.574 19263-19385/com.oculus.<wbr>vrcubeworldsv I/GST_log: > sync<br>
handler called<br>
02-21 10:00:26.574 19263-19385/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
stream-status message<br>
02-21 10:00:26.575 19263-19385/com.oculus.<wbr>vrcubeworldsv I/GST_log: > sync<br>
handler called<br>
02-21 10:00:26.575 19263-19385/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
stream-start message<br>
02-21 10:00:26.630 19263-19385/com.oculus.<wbr>vrcubeworldsv I/GST_log: > sync<br>
handler called<br>
02-21 10:00:26.630 19263-19385/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
state-changed message<br>
02-21 10:00:26.630 19263-19385/com.oculus.<wbr>vrcubeworldsv I/GST_log: > sync<br>
handler called<br>
02-21 10:00:26.630 19263-19385/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
state-changed message<br>
02-21 10:00:26.630 19263-19385/com.oculus.<wbr>vrcubeworldsv I/GST_log: > sync<br>
handler called<br>
02-21 10:00:26.630 19263-19385/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
async-done message<br>
02-21 10:00:26.630 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: Entering<br>
main loop... (CustomData:0x735d084420)<br>
02-21 10:00:26.630 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: Semaphore<br>
post<br>
02-21 10:00:26.631 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > sync<br>
handler called<br>
02-21 10:00:26.631 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
new-clock message<br>
02-21 10:00:26.631 19263-19385/com.oculus.<wbr>vrcubeworldsv I/GST_log: Got a<br>
buffer at fakesink<br>
02-21 10:00:26.631 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > sync<br>
handler called<br>
02-21 10:00:26.631 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
state-changed message<br>
02-21 10:00:26.631 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > sync<br>
handler called<br>
02-21 10:00:26.631 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
state-changed message<br>
02-21 10:00:26.631 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > sync<br>
handler called<br>
02-21 10:00:26.631 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
state-changed message<br>
02-21 10:00:26.631 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > sync<br>
handler called<br>
02-21 10:00:26.631 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
state-changed message<br>
02-21 10:00:26.631 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > sync<br>
handler called<br>
02-21 10:00:26.631 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
state-changed message<br>
02-21 10:00:26.631 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log:<br>
Playing...<br>
02-21 10:00:26.631 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > async<br>
handler called<br>
02-21 10:00:26.631 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
state-changed message<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > async<br>
handler called<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
need-context message<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: Element<br>
gluploadelement0 asks for context. We give => 0x718be080 0x00000001<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: got need<br>
context gst.gl.GLDisplay<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > async<br>
handler called<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
have-context message<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: Received<br>
'got context' message<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > async<br>
handler called<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
need-context message<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: Element<br>
gluploadelement0 asks for context. We give => 0x718be080 0x00000001<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: got need<br>
context gst.gl.app_context<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > async<br>
handler called<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
state-changed message<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > async<br>
handler called<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
state-changed message<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > async<br>
handler called<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
state-changed message<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > async<br>
handler called<br>
02-21 10:00:26.632 19263-19377/com.oculus.<wbr>vrcubeworldsv I/GST_log: > Got<br>
state-changed message<br>
02-21 10:00:27.631 19263-19385/com.oculus.<wbr>vrcubeworldsv I/GST_log: Got a<br>
buffer at fakesink<br>
02-21 10:00:28.632 19263-19385/com.oculus.<wbr>vrcubeworldsv I/GST_log: Got a<br>
buffer at fakesink<br>
02-21 10:00:29.631 19263-19385/com.oculus.<wbr>vrcubeworldsv I/GST_log: Got a<br>
buffer at fakesink<br>
02-21 10:00:30.631 19263-19385/com.oculus.<wbr>vrcubeworldsv I/GST_log: Got a<br>
buffer at fakesink<br>
<br>
Maybe the problem is not really in it. It is possible to set the context<br>
just upon element creation, right? Maybe it would be better to focus on this<br>
solution. Now I have this kind of code that sets it in the callback,<br>
depending on the message:<br>
<span class=""><br>
        case GST_MESSAGE_NEED_CONTEXT:<br>
        {<br>
<br>
            // we got gl_display and gl_context and starting of the main<br>
loop<br>
<br>
            GstElement *element = GST_ELEMENT (message->src);<br>
            const gchar *name = gst_element_get_name(element);<br>
<br>
            LOG_INFO("Element %s asks for context. We give => 0x%08x<br>
0x%08x", name, data->egl_context, data->egl_display);<br>
<br>
            const gchar *context_type;<br>
<br>
            gst_message_parse_context_type (message, &context_type);<br>
</span>            LOG_INFO("got need context %s\n", context_type);<br>
<span class=""><br>
            if (g_strcmp0 (context_type, GST_GL_DISPLAY_CONTEXT_TYPE) == 0)<br>
{<br>
                GstContext *display_context =<br>
                        gst_context_new (GST_GL_DISPLAY_CONTEXT_TYPE, TRUE);<br>
                gst_context_set_gl_display (display_context,<br>
data->gst_display);<br>
                gst_element_set_context (GST_ELEMENT (message->src),<br>
display_context);<br>
                return TRUE;<br>
            } else if (g_strcmp0 (context_type, "gst.gl.app_context") == 0)<br>
{<br>
                GstContext *app_context = gst_context_new<br>
("gst.gl.app_context", TRUE);<br>
                GstStructure *s = gst_context_writable_structure<br>
(app_context);<br>
                gst_structure_set (s, "context", GST_GL_TYPE_CONTEXT,<br>
data->gst_context, NULL);<br>
                gst_element_set_context (GST_ELEMENT (message->src),<br>
app_context);<br>
                return TRUE;<br>
            }<br>
            break;<br>
<br>
        }<br>
<br>
</span>Is it good enough to set the context right in the beginning (in the<br>
app_function)?<br>
<span class="im HOEnZb"><br>
<br>
<br>
<br>
--<br>
Sent from: <a href="http://gstreamer-devel.966125.n4.nabble.com/" rel="noreferrer" target="_blank">http://gstreamer-devel.966125.<wbr>n4.nabble.com/</a><br>
</span><div class="HOEnZb"><div class="h5">______________________________<wbr>_________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.<wbr>freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/gstreamer-<wbr>devel</a><br>
</div></div></blockquote></div><br></div>