gst/gstmessage.h: Add some more docs for the messages.

Original commit message from CVS:
* gst/gstmessage.h:
Add some more docs for the messages.
* libs/gst/base/gstbasesink.c: (gst_base_sink_commit_state),
(gst_base_sink_query):
Add some more debugging.
* tools/gst-launch.c: (event_loop):
When interrupting, don't try to set pipeline to PAUSED twice.
This commit is contained in:
Wim Taymans 2007-08-16 10:07:48 +00:00
parent ef5d931f67
commit 4f98b744d2
4 changed files with 35 additions and 13 deletions

View file

@ -1,3 +1,15 @@
2007-08-16 Wim Taymans <wim.taymans@gmail.com>
* gst/gstmessage.h:
Add some more docs for the messages.
* libs/gst/base/gstbasesink.c: (gst_base_sink_commit_state),
(gst_base_sink_query):
Add some more debugging.
* tools/gst-launch.c: (event_loop):
When interrupting, don't try to set pipeline to PAUSED twice.
2007-08-14 Wim Taymans <wim.taymans@gmail.com> 2007-08-14 Wim Taymans <wim.taymans@gmail.com>
* gst/gstbin.c: (gst_bin_add_func), (gst_bin_element_set_state), * gst/gstbin.c: (gst_bin_add_func), (gst_bin_element_set_state),

View file

@ -33,7 +33,7 @@ typedef struct _GstMessageClass GstMessageClass;
* @GST_MESSAGE_EOS: end-of-stream reached in a pipeline. The application will * @GST_MESSAGE_EOS: end-of-stream reached in a pipeline. The application will
* only receive this message in the PLAYING state and every time it sets a * only receive this message in the PLAYING state and every time it sets a
* pipeline to PLAYING that is in the EOS state. The application can perform a * pipeline to PLAYING that is in the EOS state. The application can perform a
* seek in the pipeline to a new position. * flushing seek in the pipeline, which will undo the EOS state again.
* @GST_MESSAGE_ERROR: an error occured. Whe the application receives an error * @GST_MESSAGE_ERROR: an error occured. Whe the application receives an error
* message it should stop playback of the pipeline and not assume that more * message it should stop playback of the pipeline and not assume that more
* data will be played. * data will be played.
@ -44,7 +44,7 @@ typedef struct _GstMessageClass GstMessageClass;
* receives a buffering message in the PLAYING state for a non-live pipeline it * receives a buffering message in the PLAYING state for a non-live pipeline it
* must PAUSE the pipeline until the buffering completes, when the percentage * must PAUSE the pipeline until the buffering completes, when the percentage
* field in the message is 100%. For live pipelines, no action must be * field in the message is 100%. For live pipelines, no action must be
* performed and the buffering percentage can be used to infor the user about * performed and the buffering percentage can be used to inform the user about
* the progress. * the progress.
* @GST_MESSAGE_STATE_CHANGED: a state change happened * @GST_MESSAGE_STATE_CHANGED: a state change happened
* @GST_MESSAGE_STATE_DIRTY: an element changed state in a streaming thread. * @GST_MESSAGE_STATE_DIRTY: an element changed state in a streaming thread.
@ -52,25 +52,33 @@ typedef struct _GstMessageClass GstMessageClass;
* @GST_MESSAGE_STEP_DONE: a framestep finished. This message is not yet * @GST_MESSAGE_STEP_DONE: a framestep finished. This message is not yet
* implemented. * implemented.
* @GST_MESSAGE_CLOCK_PROVIDE: an element notifies its capability of providing * @GST_MESSAGE_CLOCK_PROVIDE: an element notifies its capability of providing
* a clock. * a clock. This message is used internally and
* never forwarded to the application.
* @GST_MESSAGE_CLOCK_LOST: The current clock as selected by the pipeline became * @GST_MESSAGE_CLOCK_LOST: The current clock as selected by the pipeline became
* unusable. The pipeline will select a new clock on * unusable. The pipeline will select a new clock on
* the next PLAYING state change. * the next PLAYING state change.
* @GST_MESSAGE_NEW_CLOCK: a new clock was selected in the pipeline. * @GST_MESSAGE_NEW_CLOCK: a new clock was selected in the pipeline.
* @GST_MESSAGE_STRUCTURE_CHANGE: the structure of the pipeline changed. * @GST_MESSAGE_STRUCTURE_CHANGE: the structure of the pipeline changed. Not
* implemented yet.
* @GST_MESSAGE_STREAM_STATUS: status about a stream, emitted when it starts, * @GST_MESSAGE_STREAM_STATUS: status about a stream, emitted when it starts,
* stops, errors, etc.. * stops, errors, etc.. Not implemented yet.
* @GST_MESSAGE_APPLICATION: message posted by the application, possibly * @GST_MESSAGE_APPLICATION: message posted by the application, possibly
* via an application-specific element. * via an application-specific element.
* @GST_MESSAGE_ELEMENT: element-specific message, see the specific element's * @GST_MESSAGE_ELEMENT: element-specific message, see the specific element's
* documentation * documentation
* @GST_MESSAGE_SEGMENT_START: pipeline started playback of a segment. * @GST_MESSAGE_SEGMENT_START: pipeline started playback of a segment. This
* @GST_MESSAGE_SEGMENT_DONE: pipeline completed playback of a segment. * message is used internally and never forwarded to the application.
* @GST_MESSAGE_DURATION: The duration of a pipeline changed. * @GST_MESSAGE_SEGMENT_DONE: pipeline completed playback of a segment. This
* message is forwarded to the application after all elements that posted
* @GST_MESSAGE_SEGMENT_START posted a GST_MESSAGE_SEGMENT_DONE message.
* @GST_MESSAGE_DURATION: The duration of a pipeline changed. The application
* can get the new duration with a duration query.
* @GST_MESSAGE_ASYNC_START: Posted by elements when they start an ASYNC state * @GST_MESSAGE_ASYNC_START: Posted by elements when they start an ASYNC state
* change. Since: 0.10.13 * change. This message is not forwarded to the application but is used
* internally. Since: 0.10.13.
* @GST_MESSAGE_ASYNC_DONE: Posted by elements when they complete an ASYNC state * @GST_MESSAGE_ASYNC_DONE: Posted by elements when they complete an ASYNC state
* change. Since: 0.10.13 * change. The application will only receive this message from the toplevel
* pipeline. Since: 0.10.13
* @GST_MESSAGE_LATENCY: Posted by elements when their latency changes. The * @GST_MESSAGE_LATENCY: Posted by elements when their latency changes. The
* pipeline will calculate and distribute a new latency. Since: 0.10.12 * pipeline will calculate and distribute a new latency. Since: 0.10.12
* @GST_MESSAGE_ANY: mask for all of the above messages. * @GST_MESSAGE_ANY: mask for all of the above messages.

View file

@ -953,15 +953,18 @@ gst_base_sink_commit_state (GstBaseSink * basesink)
GST_OBJECT_UNLOCK (basesink); GST_OBJECT_UNLOCK (basesink);
if (post_paused) { if (post_paused) {
GST_DEBUG_OBJECT (basesink, "posting PAUSED state change message");
gst_element_post_message (GST_ELEMENT_CAST (basesink), gst_element_post_message (GST_ELEMENT_CAST (basesink),
gst_message_new_state_changed (GST_OBJECT_CAST (basesink), gst_message_new_state_changed (GST_OBJECT_CAST (basesink),
current, next, post_pending)); current, next, post_pending));
} }
if (post_async_done) { if (post_async_done) {
GST_DEBUG_OBJECT (basesink, "posting async-done message");
gst_element_post_message (GST_ELEMENT_CAST (basesink), gst_element_post_message (GST_ELEMENT_CAST (basesink),
gst_message_new_async_done (GST_OBJECT_CAST (basesink))); gst_message_new_async_done (GST_OBJECT_CAST (basesink)));
} }
if (post_playing) { if (post_playing) {
GST_DEBUG_OBJECT (basesink, "posting PLAYING state change message");
gst_element_post_message (GST_ELEMENT_CAST (basesink), gst_element_post_message (GST_ELEMENT_CAST (basesink),
gst_message_new_state_changed (GST_OBJECT_CAST (basesink), gst_message_new_state_changed (GST_OBJECT_CAST (basesink),
next, pending, GST_STATE_VOID_PENDING)); next, pending, GST_STATE_VOID_PENDING));
@ -2784,7 +2787,7 @@ gst_base_sink_query (GstElement * element, GstQuery * query)
case GST_QUERY_JITTER: case GST_QUERY_JITTER:
break; break;
case GST_QUERY_RATE: case GST_QUERY_RATE:
//gst_query_set_rate (query, basesink->segment_rate); /* gst_query_set_rate (query, basesink->segment_rate); */
res = TRUE; res = TRUE;
break; break;
case GST_QUERY_SEGMENT: case GST_QUERY_SEGMENT:

View file

@ -530,8 +530,7 @@ event_loop (GstElement * pipeline, gboolean blocking, GstState target_state)
if (gst_structure_has_name (s, "GstLaunchInterrupt")) { if (gst_structure_has_name (s, "GstLaunchInterrupt")) {
/* this application message is posted when we caught an interrupt and /* this application message is posted when we caught an interrupt and
* we need to stop the pipeline. */ * we need to stop the pipeline. */
fprintf (stderr, _("Interrupt: Setting pipeline to PAUSED ...\n")); fprintf (stderr, _("Interrupt: Stopping pipeline ...\n"));
gst_element_set_state (pipeline, GST_STATE_PAUSED);
/* return TRUE when we caught an interrupt */ /* return TRUE when we caught an interrupt */
res = TRUE; res = TRUE;
goto exit; goto exit;