<div dir="ltr"><div><div><div>Thanks Sebastian for the reply,<br><br></div><div>I will raise the issue with phonon developers..<br></div><div><br></div>I have a few questions/doubts regarding your reply.. <br><br>"However when shortly looking at the code I don't see it handling the
<br>request-state message at all. This would need to be implemented. As
<br>Phonon is a very high-level abstraction of a media playback API, I would
<br>expect it to handle that internally without the application having to
<br>worry about that"<br><br></div>From the above statement, do you mean that GSTREAMER is processing the request and sending it PHONON but PHONON is not handling it ??..<br><br></div>Or do you mean that PHONON should take full responsibilty and handle it. I see this scenario less because when I used gst launch instead of QT, I was able to CORK/PAUSE a player..<br>

<div><div><div><br>My second question is this..<br><br>The lines of interest are pasted below<br><div><br>>     gst_element_post_message (GST_ELEMENT_CAST (psink),
<br>>         gst_message_new_request_state (GST_OBJECT_CAST (psink),
<br>>             GST_STATE_PAUSED));
<br><br><h3><span style="font-weight:normal">I went through the gstreamer documetation to find what does "gst_message_new_request_state ()" do ??</span></h3><p>I got this reply.. "This message can be posted by elements when they want to have their state
changed. A typical use case would be an audio server that wants to pause the
pipeline because a higher priority stream is being played."</p><p>But what does it exactly post on the bus.. Does it post the state "GST_STATE_PAUSED" on the bus that needs handling ??<br></p><p>Thanks,</p>
<p>Sathish<br></p>

<table border="0"><colgroup>
<col align="left" valign="top">
<col>
</colgroup>
<tbody>
<tr>
<td><br></td>
<td><br></td>
</tr>
<tr>
<td><br></td>
<td><br></td>
</tr>
<tr>
<td><br></td>
<td><br></td></tr></tbody></table><br></div></div></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 2 December 2013 13:42, Sebastian Dröge-3 [via GStreamer-devel] <span dir="ltr"><<a href="/user/SendEmail.jtp?type=node&node=4663779&i=0" target="_top" rel="nofollow" link="external">[hidden email]</a>></span> wrote:<br>
<blockquote style='border-left:2px solid #CCCCCC;padding:0 1em' class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

        On Sa, 2013-11-30 at 03:16 -0800, sathish wrote:
<div><div><div class='shrinkable-quote'><br>> Hi,
<br>> 
<br>> I have a request to CORK/PAUSE from Pulseaudio. This initiates the function
<br>> "gst_pulsering_stream_event_cb" in program pulsesink.c. I have pasted the
<br>> function below..
<br>> 
<br>> static void
<br>> gst_pulsering_stream_event_cb (pa_stream * p, const char *name,
<br>>     pa_proplist * pl, void *userdata)
<br>> {
<br>>   GstPulseSink *psink;
<br>>   GstPulseRingBuffer *pbuf;
<br>> 
<br>>   pbuf = GST_PULSERING_BUFFER_CAST (userdata);
<br>>   psink = GST_PULSESINK_CAST (GST_OBJECT_PARENT (pbuf));
<br>> 
<br>>  * if (!strcmp (name, PA_STREAM_EVENT_REQUEST_CORK)) {
<br>>     /* the stream wants to PAUSE, post a message for the application. */
<br>>     GST_DEBUG_OBJECT (psink, "got request for CORK");
<br>>     gst_element_post_message (GST_ELEMENT_CAST (psink),
<br>>         gst_message_new_request_state (GST_OBJECT_CAST (psink),
<br>>             GST_STATE_PAUSED));
<br>> *
<br>>   } else if (!strcmp (name, PA_STREAM_EVENT_REQUEST_UNCORK)) {
<br>>     GST_DEBUG_OBJECT (psink, "got request for UNCORK");
<br>>     gst_element_post_message (GST_ELEMENT_CAST (psink),
<br>>         gst_message_new_request_state (GST_OBJECT_CAST (psink),
<br>>             GST_STATE_PLAYING));
<br>>   } else if (!strcmp (name, PA_STREAM_EVENT_FORMAT_LOST)) {
<br>>     GstEvent *renego;
<br>> 
<br>>     if (g_atomic_int_get (&psink->format_lost)) {
<br>>       /* Duplicate event before we're done reconfiguring, discard */
<br>>       return;
<br>>     }
<br>> 
<br>>     GST_DEBUG_OBJECT (psink, "got FORMAT LOST");
<br>>     g_atomic_int_set (&psink->format_lost, 1);
<br>>     psink->format_lost_time = g_ascii_strtoull (pa_proplist_gets (pl,
<br>>             "stream-time"), NULL, 0) * 1000;
<br>> 
<br>>     g_free (psink->device);
<br>>     psink->device = g_strdup (pa_proplist_gets (pl, "device"));
<br>> 
<br>>     /* FIXME: send reconfigure event instead and let decodebin/playbin
<br>>      * handle that. Also take care of ac3 alignment */
<br>>     renego = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM,
<br>>         gst_structure_new_empty ("pulse-format-lost"));
<br>> 
<br>> #if 0
<br>>     if (g_str_equal (gst_structure_get_name (st), "audio/x-eac3")) {
<br>>       GstStructure *event_st = gst_structure_new ("ac3parse-set-alignment",
<br>>           "alignment", G_TYPE_STRING, pbin->dbin ? "frame" : "iec61937",
<br>> NULL);
<br>> 
<br>>       if (!gst_pad_push_event (pbin->sinkpad,
<br>>               gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, event_st)))
<br>>         GST_WARNING_OBJECT (pbin->sinkpad, "Could not update alignment");
<br>>     }
<br>> #endif
<br>> 
<br>>     if (!gst_pad_push_event (GST_BASE_SINK (psink)->sinkpad, renego)) {
<br>>       /* Nobody handled the format change - emit an error */
<br>>       GST_ELEMENT_ERROR (psink, STREAM, FORMAT, ("Sink format changed"),
<br>>           ("Sink format changed"));
<br>>     }
<br>>   } else {
<br>>     GST_DEBUG_OBJECT (psink, "got unknown event %s", name);
<br>>   }
<br>> }
<br>> 
<br>> 
<br>> This request (highlited part) needs to communicated to my upper level QT
<br>> application.
<br>> 
<br>> QT communicates with GSTREAMER through "PHONON - GSTREAMER BACKEND"..
<br>> 
<br>>  I am exactly not sure how the message posted in the function
<br>> "gst_pulsering_stream_event_cb" in program pulsesink.c reaches the
<br>> phonon-gstreamer backend and proceeds then on.
<br>> 
<br>> In short, how to find which function catches the bus message. 
<br>> 
<br>> I had tried to look at PHONON source code.. I could deduce to this position
<br>> only..
<br>> 
<br>> I feel that function "MediaObject::handleBusMessage(const Message &message)"
<br>> is called. Can anybody tell whether this correct or a way to validate how
<br>> this can be verified ??
</div></div>This is probably not the best place to ask about issues with Phonon and
</div>its GStreamer backend, you probably better ask the developers of that.
<br><br>However when shortly looking at the code I don't see it handling the
<br>request-state message at all. This would need to be implemented. As
<br>Phonon is a very high-level abstraction of a media playback API, I would
<br>expect it to handle that internally without the application having to
<br>worry about that.
<br><br>-- 
<br>Sebastian Dröge <<a href="http://user/SendEmail.jtp?type=node&node=4663763&i=0" rel="nofollow" link="external" target="_blank">[hidden email]</a>>
<br>Centricular Ltd - <a href="http://www.centricular.com" rel="nofollow" link="external" target="_blank">http://www.centricular.com</a><br>Expertise, Straight from the Source
<br><br>_______________________________________________
<br>gstreamer-devel mailing list
<br><a href="http://user/SendEmail.jtp?type=node&node=4663763&i=1" rel="nofollow" link="external" target="_blank">[hidden email]</a>
<br><a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="nofollow" link="external" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br><div><br><img> <strong>signature.asc</strong> (985 bytes) <a href="http://gstreamer-devel.966125.n4.nabble.com/attachment/4663763/0/signature.asc" rel="nofollow" link="external" target="_blank">Download Attachment</a></div>


        
        
        
        <br>
        <br>
        <hr color="#cccccc" noshade size="1">
        <div style="color:#444;font:12px tahoma,geneva,helvetica,arial,sans-serif">
                <div style="font-weight:bold">If you reply to this email, your message will be added to the discussion below:</div>
                <a href="http://gstreamer-devel.966125.n4.nabble.com/Flow-of-PAUSE-request-from-gstreamer-to-upper-QT-application-tp4663723p4663763.html" target="_blank" rel="nofollow" link="external">http://gstreamer-devel.966125.n4.nabble.com/Flow-of-PAUSE-request-from-gstreamer-to-upper-QT-application-tp4663723p4663763.html</a>
        </div>
        <div style="color:#666;font:11px tahoma,geneva,helvetica,arial,sans-serif;margin-top:.4em;line-height:1.5em">
                
                To unsubscribe from Flow of PAUSE request from gstreamer to upper QT application., <a href="" target="_blank" rel="nofollow" link="external">click here</a>.<br>

                <a href="http://gstreamer-devel.966125.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml" rel="nofollow" style="font:9px serif" target="_blank" link="external">NAML</a>
        </div></blockquote></div><br></div>


        
        
        
<br/><hr align="left" width="300" />
View this message in context: <a href="http://gstreamer-devel.966125.n4.nabble.com/Flow-of-PAUSE-request-from-gstreamer-to-upper-QT-application-tp4663723p4663779.html">Re: Flow of PAUSE request from gstreamer to upper QT application.</a><br/>
Sent from the <a href="http://gstreamer-devel.966125.n4.nabble.com/">GStreamer-devel mailing list archive</a> at Nabble.com.<br/>