mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-30 12:49:40 +00:00
fix non-validating docbook make sure validation gets checked before building
Original commit message from CVS: fix non-validating docbook make sure validation gets checked before building
This commit is contained in:
parent
a093da6d7d
commit
55b67f084d
8 changed files with 64 additions and 27 deletions
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
||||||
|
2004-01-29 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||||
|
|
||||||
|
* docs/Makefile.am:
|
||||||
|
* docs/gst/tmpl/gstelement.sgml:
|
||||||
|
* docs/gst/tmpl/gstxml.sgml:
|
||||||
|
* docs/manuals.mak:
|
||||||
|
* docs/pwg/advanced-request.xml:
|
||||||
|
* docs/pwg/advanced-scheduling.xml:
|
||||||
|
* docs/pwg/advanced-tagging.xml:
|
||||||
|
fix non-validating docbook using CDATA
|
||||||
|
make sure make check-local gets run first to check if it validates
|
||||||
|
|
||||||
2004-01-29 Julien MOUTTE <julien@moutte.net>
|
2004-01-29 Julien MOUTTE <julien@moutte.net>
|
||||||
|
|
||||||
* docs/pwg/advanced-events.xml: Adding documentation on advanced event
|
* docs/pwg/advanced-events.xml: Adding documentation on advanced event
|
||||||
|
|
|
@ -5,6 +5,8 @@ else
|
||||||
SUBDIRS_PLUGINS =
|
SUBDIRS_PLUGINS =
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# FIXME: separate this out into docbook and gtk-doc so it doesn't descend
|
||||||
|
# for docs it can't build
|
||||||
if BUILD_DOCS
|
if BUILD_DOCS
|
||||||
SUBDIRS_DOCS = faq manual pwg gst libs
|
SUBDIRS_DOCS = faq manual pwg gst libs
|
||||||
else
|
else
|
||||||
|
|
|
@ -995,6 +995,7 @@ Is triggered whenever an error occured.
|
||||||
@:
|
@:
|
||||||
@:
|
@:
|
||||||
@:
|
@:
|
||||||
|
@:
|
||||||
@:
|
@:
|
||||||
|
|
||||||
<!-- ##### SIGNAL GstElement::found-tag ##### -->
|
<!-- ##### SIGNAL GstElement::found-tag ##### -->
|
||||||
|
|
|
@ -110,6 +110,10 @@ All GstElements can be serialized to an XML presentation and subsequently loaded
|
||||||
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
@:
|
||||||
|
@:
|
||||||
|
@:
|
||||||
|
|
||||||
@gstxml: the object which received the signal.
|
@gstxml: the object which received the signal.
|
||||||
@arg1:
|
@arg1:
|
||||||
@arg2:
|
@arg2:
|
||||||
|
@ -119,7 +123,7 @@ All GstElements can be serialized to an XML presentation and subsequently loaded
|
||||||
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
@:
|
@gstxml: the object which received the signal.
|
||||||
@:
|
@arg1:
|
||||||
@:
|
@arg2:
|
||||||
|
|
||||||
|
|
|
@ -92,6 +92,7 @@ $(BUILDDIR)/$(MAIN): $(XML) $(CSS)
|
||||||
@cp ../version.entities $(BUILDDIR)
|
@cp ../version.entities $(BUILDDIR)
|
||||||
|
|
||||||
html/index.html: $(BUILDDIR)/$(MAIN) $(PNG_BUILT) $(FIG_SRC)
|
html/index.html: $(BUILDDIR)/$(MAIN) $(PNG_BUILT) $(FIG_SRC)
|
||||||
|
@make check-local
|
||||||
@echo "*** Generating HTML output ***"
|
@echo "*** Generating HTML output ***"
|
||||||
@-mkdir -p html
|
@-mkdir -p html
|
||||||
@cp -f $(srcdir)/../image-png $(BUILDDIR)/image.entities
|
@cp -f $(srcdir)/../image-png $(BUILDDIR)/image.entities
|
||||||
|
@ -105,12 +106,14 @@ html/index.html: $(BUILDDIR)/$(MAIN) $(PNG_BUILT) $(FIG_SRC)
|
||||||
cp $(PNG_BUILT) html/images || true
|
cp $(PNG_BUILT) html/images || true
|
||||||
|
|
||||||
$(DOC).ps: $(BUILDDIR)/$(MAIN) $(EPS_BUILT) $(PNG_SRC) $(FIG_SRC)
|
$(DOC).ps: $(BUILDDIR)/$(MAIN) $(EPS_BUILT) $(PNG_SRC) $(FIG_SRC)
|
||||||
|
@make check-local
|
||||||
@echo "*** Generating PS output ***"
|
@echo "*** Generating PS output ***"
|
||||||
@cp -f $(srcdir)/../image-eps $(BUILDDIR)/image.entities
|
@cp -f $(srcdir)/../image-eps $(BUILDDIR)/image.entities
|
||||||
cd $(BUILDDIR) && docbook2ps -o .. $(MAIN)
|
cd $(BUILDDIR) && docbook2ps -o .. $(MAIN)
|
||||||
# export LC_PAPER=$(PAPER_LOCALE) && cd $(BUILDDIR) && xmlto ps -o .. $(MAIN)
|
# export LC_PAPER=$(PAPER_LOCALE) && cd $(BUILDDIR) && xmlto ps -o .. $(MAIN)
|
||||||
|
|
||||||
$(DOC).pdf: $(DOC).ps
|
$(DOC).pdf: $(DOC).ps
|
||||||
|
@make check-local
|
||||||
@echo "*** Generating PDF output ***"
|
@echo "*** Generating PDF output ***"
|
||||||
@ps2pdf $(DOC).ps
|
@ps2pdf $(DOC).ps
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,7 @@
|
||||||
pads, looks like this:
|
pads, looks like this:
|
||||||
</para>
|
</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
|
<![CDATA[
|
||||||
typedef struct _GstMyFilter {
|
typedef struct _GstMyFilter {
|
||||||
[..]
|
[..]
|
||||||
gboolean firstrun;
|
gboolean firstrun;
|
||||||
|
@ -65,7 +66,7 @@ gst_my_filter_base_init (GstMyFilterClass *klass)
|
||||||
);
|
);
|
||||||
[..]
|
[..]
|
||||||
gst_element_class_add_pad_template (element_class,
|
gst_element_class_add_pad_template (element_class,
|
||||||
gst_static_pad_template_get (&src_factory));
|
gst_static_pad_template_get (&src_factory));
|
||||||
[..]
|
[..]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,7 +90,7 @@ gst_my_filter_getline (GstMyFilter *filter)
|
||||||
|
|
||||||
/* max. line length is 512 characters - for safety */
|
/* max. line length is 512 characters - for safety */
|
||||||
for (n = 0; n < 512; n++) {
|
for (n = 0; n < 512; n++) {
|
||||||
num = gst_bytestream_peek_bytes (filter->bs, &data, n + 1);
|
num = gst_bytestream_peek_bytes (filter->bs, &data, n + 1);
|
||||||
if (num != n + 1)
|
if (num != n + 1)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
@ -97,7 +98,7 @@ gst_my_filter_getline (GstMyFilter *filter)
|
||||||
if (data[n] == '\n') {
|
if (data[n] == '\n') {
|
||||||
GstBuffer *buf = gst_buffer_new_and_alloc (n + 1);
|
GstBuffer *buf = gst_buffer_new_and_alloc (n + 1);
|
||||||
|
|
||||||
gst_bytestream_peek_bytes (filter->bs, &data, n);
|
gst_bytestream_peek_bytes (filter->bs, &data, n);
|
||||||
memcpy (GST_BUFFER_DATA (buf), data, n);
|
memcpy (GST_BUFFER_DATA (buf), data, n);
|
||||||
GST_BUFFER_DATA (buf)[n] = '\0';
|
GST_BUFFER_DATA (buf)[n] = '\0';
|
||||||
gst_bytestream_flush_fast (filter->bs, n + 1);
|
gst_bytestream_flush_fast (filter->bs, n + 1);
|
||||||
|
@ -163,11 +164,11 @@ gst_my_filter_loopfunc (GstElement *element)
|
||||||
|
|
||||||
/* parse stream number and go beyond the ':' in the data */
|
/* parse stream number and go beyond the ':' in the data */
|
||||||
num = atoi (GST_BUFFER_DATA (buf));
|
num = atoi (GST_BUFFER_DATA (buf));
|
||||||
if (num >= 0 && num < g_list_length (filter->srcpadlist)) {
|
if (num >= 0 && num < g_list_length (filter->srcpadlist)) {
|
||||||
pad = GST_PAD (g_list_nth_data (filter->srcpadlist, num);
|
pad = GST_PAD (g_list_nth_data (filter->srcpadlist, num);
|
||||||
|
|
||||||
/* magic buffer parsing foo */
|
/* magic buffer parsing foo */
|
||||||
for (n = 0; GST_BUFFER_DATA (buf)[n] != ':' &&
|
for (n = 0; GST_BUFFER_DATA (buf)[n] != ':' &&
|
||||||
GST_BUFFER_DATA (buf)[n] != '\0'; n++) ;
|
GST_BUFFER_DATA (buf)[n] != '\0'; n++) ;
|
||||||
if (GST_BUFFER_DATA (buf)[n] != '\0') {
|
if (GST_BUFFER_DATA (buf)[n] != '\0') {
|
||||||
GstBuffer *sub;
|
GstBuffer *sub;
|
||||||
|
@ -184,6 +185,7 @@ gst_my_filter_loopfunc (GstElement *element)
|
||||||
}
|
}
|
||||||
gst_buffer_unref (buf);
|
gst_buffer_unref (buf);
|
||||||
}
|
}
|
||||||
|
]]>
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<para>
|
<para>
|
||||||
Note that we use a lot of checks everywhere to make sure that the content
|
Note that we use a lot of checks everywhere to make sure that the content
|
||||||
|
@ -212,6 +214,7 @@ gst_my_filter_loopfunc (GstElement *element)
|
||||||
example of an aggregator based on request pads.
|
example of an aggregator based on request pads.
|
||||||
</para>
|
</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
|
<![CDATA[
|
||||||
static GstPad * gst_my_filter_request_new_pad (GstElement *element,
|
static GstPad * gst_my_filter_request_new_pad (GstElement *element,
|
||||||
GstPadTemplate *templ,
|
GstPadTemplate *templ,
|
||||||
const gchar *name);
|
const gchar *name);
|
||||||
|
@ -229,7 +232,7 @@ gst_my_filter_base_init (GstMyFilterClass *klass)
|
||||||
);
|
);
|
||||||
[..]
|
[..]
|
||||||
gst_element_class_add_pad_template (klass,
|
gst_element_class_add_pad_template (klass,
|
||||||
gst_static_pad_template_get (&sink_factory));
|
gst_static_pad_template_get (&sink_factory));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -258,6 +261,7 @@ gst_my_filter_request_new_pad (GstElement *element,
|
||||||
|
|
||||||
return pad;
|
return pad;
|
||||||
}
|
}
|
||||||
|
]]>
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<para>
|
<para>
|
||||||
The <function>_loop ()</function> function is the same as the one given
|
The <function>_loop ()</function> function is the same as the one given
|
||||||
|
|
|
@ -149,6 +149,8 @@ gst_my_filter_loopfunc (GstElement *element)
|
||||||
useful in practice, but a good example, again.
|
useful in practice, but a good example, again.
|
||||||
</para>
|
</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
|
<![CDATA[
|
||||||
|
|
||||||
typedef struct _GstMyFilterInputContext {
|
typedef struct _GstMyFilterInputContext {
|
||||||
gboolean eos;
|
gboolean eos;
|
||||||
GstBuffer *lastbuf;
|
GstBuffer *lastbuf;
|
||||||
|
@ -196,8 +198,8 @@ gst_my_filter_loopfunc (GstElement *element)
|
||||||
if (GST_PAD_IS_SRC (pad))
|
if (GST_PAD_IS_SRC (pad))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
while (GST_PAD_IS_USABLE (pad) &&
|
while (GST_PAD_IS_USABLE (pad) &&
|
||||||
!context->eos && !context->lastbuf) {
|
!context->eos && !context->lastbuf) {
|
||||||
GstData *data = gst_pad_pull (pad);
|
GstData *data = gst_pad_pull (pad);
|
||||||
|
|
||||||
if (GST_IS_EVENT (data)) {
|
if (GST_IS_EVENT (data)) {
|
||||||
|
@ -246,6 +248,7 @@ gst_my_filter_loopfunc (GstElement *element)
|
||||||
gst_pad_push (filter->srcpad, GST_DATA (first_context->lastbuf));
|
gst_pad_push (filter->srcpad, GST_DATA (first_context->lastbuf));
|
||||||
first_context->lastbuf = NULL;
|
first_context->lastbuf = NULL;
|
||||||
}
|
}
|
||||||
|
]]>
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<para>
|
<para>
|
||||||
Note that a loop-function is allowed to return. Better yet, a loop
|
Note that a loop-function is allowed to return. Better yet, a loop
|
||||||
|
@ -276,6 +279,7 @@ gst_my_filter_loopfunc (GstElement *element)
|
||||||
over its source pad.
|
over its source pad.
|
||||||
</para>
|
</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
|
<![CDATA[
|
||||||
static void
|
static void
|
||||||
gst_my_filter_loopfunc (GstElement *element)
|
gst_my_filter_loopfunc (GstElement *element)
|
||||||
{
|
{
|
||||||
|
@ -284,12 +288,12 @@ gst_my_filter_loopfunc (GstElement *element)
|
||||||
guint8 *data;
|
guint8 *data;
|
||||||
|
|
||||||
for (n = 0; ; n++) {
|
for (n = 0; ; n++) {
|
||||||
num = gst_bytestream_peek_bytes (filter->bs, &data, n + 1);
|
num = gst_bytestream_peek_bytes (filter->bs, &data, n + 1);
|
||||||
if (num != n + 1) {
|
if (num != n + 1) {
|
||||||
GstEvent *event = NULL;
|
GstEvent *event = NULL;
|
||||||
guint remaining;
|
guint remaining;
|
||||||
|
|
||||||
gst_bytestream_get_status (filter->bs, &remaining, &event);
|
gst_bytestream_get_status (filter->bs, &remaining, &event);
|
||||||
if (event) {
|
if (event) {
|
||||||
if (GST_EVENT_TYPE (event) == GST_EVENT_EOS)) {
|
if (GST_EVENT_TYPE (event) == GST_EVENT_EOS)) {
|
||||||
/* end-of-file */
|
/* end-of-file */
|
||||||
|
@ -312,7 +316,7 @@ gst_my_filter_loopfunc (GstElement *element)
|
||||||
GstBuffer *buf = gst_buffer_new_and_alloc (n + 1);
|
GstBuffer *buf = gst_buffer_new_and_alloc (n + 1);
|
||||||
|
|
||||||
/* read the line of text without newline - then flush the newline */
|
/* read the line of text without newline - then flush the newline */
|
||||||
gst_bytestream_peek_data (filter->bs, &data, n);
|
gst_bytestream_peek_data (filter->bs, &data, n);
|
||||||
memcpy (GST_BUFFER_DATA (buf), data, n);
|
memcpy (GST_BUFFER_DATA (buf), data, n);
|
||||||
GST_BUFFER_DATA (buf)[n] = '\0';
|
GST_BUFFER_DATA (buf)[n] = '\0';
|
||||||
gst_bytestream_flush_fast (filter->bs, n + 1);
|
gst_bytestream_flush_fast (filter->bs, n + 1);
|
||||||
|
@ -345,6 +349,7 @@ gst_my_filter_change_state (GstElement *element)
|
||||||
|
|
||||||
return GST_STATE_SUCCESS;
|
return GST_STATE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
]]>
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<para>
|
<para>
|
||||||
In the above example, you'll notice how bytestream handles buffering of
|
In the above example, you'll notice how bytestream handles buffering of
|
||||||
|
|
|
@ -66,6 +66,7 @@
|
||||||
<xref linkend="section-reqpad-sometimes"/>.
|
<xref linkend="section-reqpad-sometimes"/>.
|
||||||
</para>
|
</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
|
<![CDATA[
|
||||||
static void
|
static void
|
||||||
gst_my_filter_loopfunc (GstElement *element)
|
gst_my_filter_loopfunc (GstElement *element)
|
||||||
{
|
{
|
||||||
|
@ -85,7 +86,7 @@ gst_my_filter_loopfunc (GstElement *element)
|
||||||
type = g_strndup (line, colon_pos - line);
|
type = g_strndup (line, colon_pos - line);
|
||||||
|
|
||||||
/* content is one character beyond the ':' */
|
/* content is one character beyond the ':' */
|
||||||
colon_pos = &colon_pos[1];
|
colon_pos = &colon_pos[1];
|
||||||
if (*colon_pos == '\0')
|
if (*colon_pos == '\0')
|
||||||
goto next;
|
goto next;
|
||||||
|
|
||||||
|
@ -96,14 +97,14 @@ gst_my_filter_loopfunc (GstElement *element)
|
||||||
GType to_type;
|
GType to_type;
|
||||||
|
|
||||||
to_type = gst_tag_get_type (type);
|
to_type = gst_tag_get_type (type);
|
||||||
g_value_init (&from, G_TYPE_STRING);
|
g_value_init (&from, G_TYPE_STRING);
|
||||||
g_value_set_string (&from, colon_pos);
|
g_value_set_string (&from, colon_pos);
|
||||||
g_value_init (&to, to_type);
|
g_value_init (&to, to_type);
|
||||||
g_value_transform (&from, &to);
|
g_value_transform (&from, &to);
|
||||||
g_value_unset (&from);
|
g_value_unset (&from);
|
||||||
gst_tag_list_add_values (taglist, GST_TAG_MERGE_APPEND,
|
gst_tag_list_add_values (taglist, GST_TAG_MERGE_APPEND,
|
||||||
type, &to, NULL);
|
type, &to, NULL);
|
||||||
g_value_unset (&to);
|
g_value_unset (&to);
|
||||||
}
|
}
|
||||||
|
|
||||||
next:
|
next:
|
||||||
|
@ -119,6 +120,7 @@ next:
|
||||||
gst_pad_send_event (filter->srcpad, GST_DATA (gst_event_new (GST_EVENT_EOS)));
|
gst_pad_send_event (filter->srcpad, GST_DATA (gst_event_new (GST_EVENT_EOS)));
|
||||||
gst_element_set_eos (element);
|
gst_element_set_eos (element);
|
||||||
}
|
}
|
||||||
|
]]>
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<para>
|
<para>
|
||||||
We currently assume the core to already <emphasis>know</emphasis> the
|
We currently assume the core to already <emphasis>know</emphasis> the
|
||||||
|
@ -131,6 +133,7 @@ next:
|
||||||
functions, preferrably <function>_class_init ()</function>.
|
functions, preferrably <function>_class_init ()</function>.
|
||||||
</para>
|
</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
|
<![CDATA[
|
||||||
static void
|
static void
|
||||||
gst_my_filter_class_init (GstMyFilterClass *klass)
|
gst_my_filter_class_init (GstMyFilterClass *klass)
|
||||||
{
|
{
|
||||||
|
@ -142,6 +145,7 @@ gst_my_filter_class_init (GstMyFilterClass *klass)
|
||||||
NULL);
|
NULL);
|
||||||
[..]
|
[..]
|
||||||
}
|
}
|
||||||
|
]]>
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
|
@ -168,6 +172,7 @@ gst_my_filter_class_init (GstMyFilterClass *klass)
|
||||||
incoming events.
|
incoming events.
|
||||||
</para>
|
</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
|
<![CDATA[
|
||||||
GType
|
GType
|
||||||
gst_my_filter_get_type (void)
|
gst_my_filter_get_type (void)
|
||||||
{
|
{
|
||||||
|
@ -180,7 +185,7 @@ gst_my_filter_get_type (void)
|
||||||
[..]
|
[..]
|
||||||
g_type_add_interface_static (my_filter_type,
|
g_type_add_interface_static (my_filter_type,
|
||||||
GST_TYPE_TAG_SETTER,
|
GST_TYPE_TAG_SETTER,
|
||||||
&tag_setter_info);
|
&tag_setter_info);
|
||||||
[..]
|
[..]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -206,20 +211,20 @@ gst_my_filter_write_tag (const GstTagList *taglist,
|
||||||
const GValue *from;
|
const GValue *from;
|
||||||
GValue to = { 0 };
|
GValue to = { 0 };
|
||||||
|
|
||||||
g_value_init (&to, G_TYPE_STRING);
|
g_value_init (&to, G_TYPE_STRING);
|
||||||
|
|
||||||
for (n = 0; n < num_values; n++) {
|
for (n = 0; n < num_values; n++) {
|
||||||
from = gst_tag_list_get_value_index (taglist, tagname, n);
|
from = gst_tag_list_get_value_index (taglist, tagname, n);
|
||||||
g_value_transform (from, &to);
|
g_value_transform (from, &to);
|
||||||
|
|
||||||
buf = gst_buffer_new ();
|
buf = gst_buffer_new ();
|
||||||
GST_BUFFER_DATA (buf) = g_strdup_printf ("%s:%s", tagname,
|
GST_BUFFER_DATA (buf) = g_strdup_printf ("%s:%s", tagname,
|
||||||
g_value_get_string (&to));
|
g_value_get_string (&to));
|
||||||
GST_BUFFER_SIZE (buf) = strlen (GST_BUFFER_DATA (buf));
|
GST_BUFFER_SIZE (buf) = strlen (GST_BUFFER_DATA (buf));
|
||||||
gst_pad_push (filter->srcpad, GST_DATA (buf));
|
gst_pad_push (filter->srcpad, GST_DATA (buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
g_value_unset (&to);
|
g_value_unset (&to);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -270,6 +275,7 @@ gst_my_filter_loopfunc (GstElement *element)
|
||||||
gst_pad_push (filter->srcpad, GST_DATA (gst_event_new (GST_EVENT_EOS)));
|
gst_pad_push (filter->srcpad, GST_DATA (gst_event_new (GST_EVENT_EOS)));
|
||||||
gst_element_set_eos (element);
|
gst_element_set_eos (element);
|
||||||
}
|
}
|
||||||
|
]]>
|
||||||
</programlisting>
|
</programlisting>
|
||||||
<para>
|
<para>
|
||||||
Note that normally, elements would not read the full stream before
|
Note that normally, elements would not read the full stream before
|
||||||
|
|
Loading…
Reference in a new issue