docs/manual/advanced-dataaccess.xml: Fix fakesrc example to compile; doesn't work, bug somewhere...?

Original commit message from CVS:
* docs/manual/advanced-dataaccess.xml:
Fix fakesrc example to compile; doesn't work, bug somewhere...?
* docs/manual/basics-pads.xml:
Add reference for filtered caps to above chapter.
This commit is contained in:
Ronald S. Bultje 2005-06-30 09:59:27 +00:00
parent a578cfd009
commit dcd0e06448
3 changed files with 40 additions and 19 deletions

View file

@ -1,3 +1,10 @@
2005-06-30 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
* docs/manual/advanced-dataaccess.xml:
Fix fakesrc example to compile; doesn't work, bug somewhere...?
* docs/manual/basics-pads.xml:
Add reference for filtered caps to above chapter.
2005-06-30 Wim Taymans <wim@fluendo.com> 2005-06-30 Wim Taymans <wim@fluendo.com>
* gst/gstbin.c: (clear_queue), (remove_all_from_queue), * gst/gstbin.c: (clear_queue), (remove_all_from_queue),

View file

@ -138,6 +138,14 @@ main (gint argc,
(using fakesrc) or grab (using fakesink or identity) data from a (using fakesrc) or grab (using fakesink or identity) data from a
pipeline, and how to set negotiation. pipeline, and how to set negotiation.
</para> </para>
<para>
Those who're paying close attention, will notice that the purpose
of identity is almost identical to that of probes. Indeed, this is
true. Probes allow for the same purpose, and a bunch more, and
with less overhead plus dynamic removing/adding of handlers, but
apart from those, probes and identity have the same purpose, just
in a completely different implementation type.
</para>
<sect2 id="section-spoof-handoff"> <sect2 id="section-spoof-handoff">
<title>Inserting or grabbing data</title> <title>Inserting or grabbing data</title>
@ -170,9 +178,12 @@ main (gint argc,
or an audio bitsize and number of channels. You can do this by or an audio bitsize and number of channels. You can do this by
forcing a specific <classname>GstCaps</classname> on the pipeline, forcing a specific <classname>GstCaps</classname> on the pipeline,
which is possible by using <emphasis>filtered caps</emphasis>. You which is possible by using <emphasis>filtered caps</emphasis>. You
can set a filtered caps on a link by using can set a filtered caps on a link by using the
<function>gst_pad_link_filtered ()</function>, where the third <quote>capsfilter</quote> element in between the two elements, and
argument is the format to force on the link. specifying a <classname>GstCaps</classname> as
<quote>filter-caps</quote> property on this element. It will then
only allow types matching that specified capability set for
negotiation.
</para> </para>
</sect2> </sect2>
@ -209,30 +220,32 @@ gint
main (gint argc, main (gint argc,
gchar *argv[]) gchar *argv[])
{ {
GstElement *pipeline, *fakesrc, *conv, *videosink; GstElement *pipeline, *fakesrc, *flt, *conv, *videosink;
GstCaps *filter; GMainLoop *loop;
/* init GStreamer */ /* init GStreamer */
gst_init (&amp;argc, &amp;argv); gst_init (&amp;argc, &amp;argv);
loop = g_main_loop_new (NULL, FALSE);
/* setup pipeline */ /* setup pipeline */
pipeline = gst_pipeline_new ("pipeline"); pipeline = gst_pipeline_new ("pipeline");
fakesrc = gst_element_factory_make ("fakesrc", "source"); fakesrc = gst_element_factory_make ("fakesrc", "source");
flt = gst_element_factory_make ("capsfilter", "flt");
conv = gst_element_factory_make ("ffmpegcolorspace", "conv"); conv = gst_element_factory_make ("ffmpegcolorspace", "conv");
videosink = gst_element_factory_make ("ximagesink", "videosink"); videosink = gst_element_factory_make ("xvimagesink", "videosink");
/* setup */ /* setup */
filter = gst_caps_new_simple ("video/x-raw-rgb", g_object_set (G_OBJECT (flt), "filter-caps",
gst_caps_new_simple ("video/x-raw-rgb",
"width", G_TYPE_INT, 384, "width", G_TYPE_INT, 384,
"height", G_TYPE_INT, 288, "height", G_TYPE_INT, 288,
"framerate", G_TYPE_DOUBLE, (gdouble) 1.0, "framerate", G_TYPE_DOUBLE, (gdouble) 1.0,
"bpp", G_TYPE_INT, 16, "bpp", G_TYPE_INT, 16,
"depth", G_TYPE_INT, 16, "depth", G_TYPE_INT, 16,
"endianness", G_TYPE_INT, G_BYTE_ORDER, "endianness", G_TYPE_INT, G_BYTE_ORDER,
NULL); NULL), NULL);
gst_element_link_filtered (fakesrc, conv, filter); gst_element_link_many (fakesrc, flt, conv, videosink, NULL);
gst_element_link (conv, videosink); gst_bin_add_many (GST_BIN (pipeline), fakesrc, flt, conv, videosink, NULL);
gst_bin_add_many (GST_BIN (pipeline), fakesrc, conv, videosink, NULL);
/* setup fake source */ /* setup fake source */
g_object_set (G_OBJECT (fakesrc), g_object_set (G_OBJECT (fakesrc),
@ -243,7 +256,7 @@ main (gint argc,
/* play */ /* play */
gst_element_set_state (pipeline, GST_STATE_PLAYING); gst_element_set_state (pipeline, GST_STATE_PLAYING);
while (gst_bin_iterate (GST_BIN (pipeline))) ; g_main_loop_run (loop);
/* clean up */ /* clean up */
gst_element_set_state (pipeline, GST_STATE_NULL); gst_element_set_state (pipeline, GST_STATE_NULL);

View file

@ -391,7 +391,8 @@ Pad Templates:
specific subset of their supported stream types. An application specific subset of their supported stream types. An application
can, for example, use <quote>filtered caps</quote> to set a can, for example, use <quote>filtered caps</quote> to set a
specific (non-fixed) video size that will stream between two specific (non-fixed) video size that will stream between two
pads. pads. You will see an example of filtered caps further on in
this manual, in <xref linkend="section-data-spoof"/>.
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>