[gst-devel] Capturing EOS message from the bus.

Osmo Antero Maatta osmoma at gmail.com
Mon Dec 20 11:43:16 CET 2010


Hello,
I have created an audio-recorder application using the GStreamer 
framework. My question is:
How to catch and react to the EOS (end of stream, end of recording) 
message?

When starting a recording the state change from NULL -> PLAYING works fine.
My program now updates the GUI (buttons, icons in the GUI) when the 
recording changes state from NULL -> READY -> PLAYING. This works OK.

Also state change from PLAYING -> PAUSED works fine. My program captures 
the PAUSED message and updates the GUI. This is OK.

But how to catch the STOP message (when the recording stops/ends) ?  
Obviously Gstreamer has no STOP/STREAM END message.  Are there 
event-chain for PLAYING -> PAUSED -> STOP/NULL?

*I want to update the GUI solely via the Gstreamer's state-change 
messages/events. *
Why? Because the recording can be controlled from various places; 
directly from the GUI using buttons, it can be controlled from DBus by 
Media Players (like Amarok/RhythmBox/Banshee and there are threads 
involved etc.). So I want to update the GUI solely via (event's) state 
changes.

Here is how I setup the callback functions to receive events/messages 
from the bus.
See:  rec_state_changed_cb(...) function in
http://www.futuredesktop.com/tmp/gst-recorder.c

The message/event handlers are set up like this (in the 
rec_create_pipeline(...) function) :

// Add a message handlers
GstBus *bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
gst_bus_add_signal_watch(bus);

// Detect state changes
g_signal_connect(bus, "message::state-changed", 
G_CALLBACK(rec_state_changed_cb), NULL);

// Monitor sound level/amplitude
g_signal_connect(bus, "message::element", 
G_CALLBACK(rec_level_message_cb), NULL);

// Catch error messages
g_signal_connect(bus, "message::error", 
G_CALLBACK(rec_pipeline_error_cb), NULL);

// EOS
g_signal_connect(bus, "message::eos", G_CALLBACK(rec_eos_msg_cb), NULL);

gst_object_unref(bus);
----

Thanks,
   Osmo Antero (Moma)
   http://www.futuredesktop.org






-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20101220/9dfddb19/attachment.htm>


More information about the gstreamer-devel mailing list