+2008-11-04 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ * docs/manual/advanced-position.xml:
+ * docs/manual/basics-bins.xml:
+ * docs/manual/basics-bus.xml:
+ * docs/manual/basics-pads.xml:
+ * docs/manual/intro-gstreamer.xml:
+ * docs/manual/intro-preface.xml:
+ Some Application Development Manual fixes thanks to
+ Andrew Feren. Fixes #558459.
+
2008-11-03 Stefan Kost <ensonic@users.sf.net>
* gst/gstregistrybinary.c:
}
</programlisting>
<para>
- Seeks should usually be done when the pipeline is in PAUSED or PLAYING
- state (when it is in PLAYING state the pipeline will pause itself, issue
- the seek, and then set itself back to PLAYING again itself).
- returns.
+ Seeks with the GST_SEEK_FLAG_FLUSH should be done when the pipeline is
+ in PAUSED or PLAYING state. The pipeline will automatically go to preroll
+ state until the new data after the seek will cause the pipeline to preroll
+ again. After the pipeline is prerolled, it will go back to the state
+ (PAUSED or PLAYING) it was in when the seek was executed. You can wait
+ (blocking) for the seek to complete with
+ <function>gst_element_get_state()</function> or by waiting for the
+ ASYNC_DONE message to appear on the bus.
+ </para>
+
+ <para>
+ Seeks without the GST_SEEK_FLAG_FLUSH should only be done when the
+ pipeline is in the PLAYING state. Executing a non-flushing seek in the
+ PAUSED state might deadlock because the pipeline streaming threads might
+ be blocked in the sinks.
</para>
<para>
/* create */
pipeline = gst_pipeline_new ("my_pipeline");
- bin = gst_pipeline_new ("my_bin");
+ bin = gst_bin_new ("my_bin");
source = gst_element_factory_make ("fakesrc", "source");
sink = gst_element_factory_make ("fakesink", "sink");
- /* set up pipeline */
+ /* First add the elements to the bin */
gst_bin_add_many (GST_BIN (bin), source, sink, NULL);
+ /* add the bin to the pipeline */
gst_bin_add (GST_BIN (pipeline), bin);
+
+ /* link the elements */
gst_element_link (source, sink);
<!-- example-end bin.c a -->
[..]<!-- example-begin bin.c b --><!--
/* clean up */
gst_element_set_state (pipeline, GST_STATE_NULL);
gst_object_unref (pipeline);
- g_main_loop_unref (loop)
+ g_main_loop_unref (loop);
return 0;
}
gst_element_link_filtered ()</function> it will automatically create
a <classname>capsfilter</classname> element for you and insert it into
your bin or pipeline between the two elements you want to connect (this
- is important if you ever want to disconnect those elements).
+ is important if you ever want to disconnect those elements because then
+ you will have to disconnect both elements from the capsfilter instead).
</para>
<para>
In some cases, you will want to create a more elaborate set of
<listitem><para>an API for multimedia applications</para></listitem>
<listitem><para>a plugin architecture</para></listitem>
<listitem><para>a pipeline architecture</para></listitem>
- <listitem><para>a mechanism for media type handling/negociation</para></listitem>
+ <listitem><para>a mechanism for media type handling/negotiation</para></listitem>
<listitem><para>over 150 plug-ins</para></listitem>
<listitem><para>a set of tools</para></listitem>
</itemizedlist>
Especially,
<itemizedlist>
- <listitem><para>GObject instentiation</para></listitem>
+ <listitem><para>GObject instantiation</para></listitem>
<listitem><para>GObject properties (set/get)</para></listitem>
<listitem><para>GObject casting</para></listitem>
<listitem><para>GObject referecing/dereferencing</para></listitem>