+++ /dev/null
-Makefile
-Makefile.in
-html
-sgml
-gstreamer-plugins.signals
-gstreamer-plugins.types
-gstreamer-plugins.hierarchy
-gstreamer-plugins.pads
-gstreamer-plugins.html
-gstreamer-plugins-unused.txt
-gstreamer-plugins-decl-list.txt
-gstreamer-plugins.args
-
+++ /dev/null
-## Process this file with automake to produce Makefile.in
-
-# The name of the module.
-DOC_MODULE=gstreamer-plugins
-
-# The top-level SGML file.
-DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
-
-# The directory containing the source code (if it contains documentation).
-DOC_SOURCE_DIR=$(top_srcdir)/plugins
-
-#CFLAGS = `gstreamer-config --cflags` -Wall -g
-#LDFLAGS = `gstreamer-config --libs`
-
-EXTRA_DIST=$(DOC_MODULE).types.in $(DOC_MODULE)-sections.txt $(DOC_MAIN_SGML_FILE) gstdoc-mkdb gstdoc-mktmpl gstdoc-scanobj
-
-TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
-
-tmpl_sources = \
- tmpl/videoraw.sgml
-
-gstreamer_docdir = $(HTML_DIR)
-gstreamer_doc_DATA = \
- $(DOC_MODULE).html \
- $(DOC_MODULE).hierarchy \
- $(DOC_MODULE).types \
- $(DOC_MODULE)-sections.txt
-
-SCANOBJS_FILES = \
- $(DOC_MODULE).signals \
- $(DOC_MODULE).hierarchy \
- $(DOC_MODULE).args
-
-if HAVE_GTK_DOC
-$(DOC_MODULE).html: html/book1.html
- -cd $(srcdir) && cp html/book1.html $(DOC_MODULE).html
-else
-$(DOC_MODULE).html:
-endif
-
-html/book1.html: sgml/$(DOC_MODULE)-doc.bottom
- $(MAKE) html
-
-sgml/$(DOC_MODULE)-doc.bottom: $(tmpl_sources)
- $(MAKE) sgml
-
-scanobj:
- env CC="$(LIBTOOL) $(CC)" CFLAGS="$(LIBGST_CFLAGS) $(GLIB_CFLAGS) $(XML_CFLAGS) -I../../" LDFLAGS="$(GST_LIBS)"\
- ./gstdoc-scanobj --module=$(DOC_MODULE)
-
-tmpl: scanobj
- ./gstdoc-mktmpl --module=$(DOC_MODULE)
-
-sgml: tmpl
- ./gstdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR)
-
-html:
- if ! test -d html ; then mkdir html ; fi
- -cd html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
-
-clean-local:
- rm -f *~ *.bak *.signals *-unused.txt *.args
-
-maintainer-clean-local: clean
- rm -rf sgml html $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
-
-install-data-local:
- $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR)
- (installfiles=`echo $(srcdir)/html/*.html`; \
- if test "$$installfiles" = '$(srcdir)/html/*.html'; \
- then echo '-- Nothing to install' ; \
- else \
- for i in $$installfiles; do \
- echo '-- Installing '$$i ; \
- $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
- done; \
- echo '-- Installing $(srcdir)/html/index.sgml' ; \
- $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR); \
- echo '-- Fixing Crossreferences' ; \
- gtkdoc-fixxref --module=$(DOC_MODULE) --html-dir=$(HTML_DIR)|| true; \
- fi)
-
-dist-hook:
- if ! test -d $(distdir)/tmpl ; then mkdir $(distdir)/tmpl ; fi
- -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
-
-.PHONY : html sgml templates
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# gtk-doc - GTK DocBook documentation generator.
-# Copyright (C) 1998 Damon Chaplin
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-
-#############################################################################
-# Script : gtkdoc-mkdb
-# Description : This creates the DocBook files from the edited templates.
-#
-# NOTE: When creating SGML IDS, we append -CAPS to all
-# all-caps identifiers to prevent name clashes. (It basically
-# never is the case that mixed-case identifiers would collide.)
-# See the CreateValidSGMLID function.
-#############################################################################
-
-use strict;
-use Getopt::Long;
-
-# Options
-
-# name of documentation module
-my $MODULE;
-my $TMPL_DIR;
-my $SGML_OUTPUT_DIR;
-my @SOURCE_DIRS;
-
-my %optctl = (module => \$MODULE,
- 'source-dir' => \@SOURCE_DIRS,
- 'output-dir' => \$SGML_OUTPUT_DIR,
- 'tmpl-dir' => \$TMPL_DIR);
-GetOptions(\%optctl, "module=s", "source-dir:s", "output-dir:s");
-
-my $ROOT_DIR = ".";
-
-# All the files are written in subdirectories beneath here.
-$TMPL_DIR = $TMPL_DIR ? $TMPL_DIR : "$ROOT_DIR/tmpl";
-
-# This is where we put all the DocBook output.
-$SGML_OUTPUT_DIR = $SGML_OUTPUT_DIR ? $SGML_OUTPUT_DIR : "$ROOT_DIR/sgml";
-
-# This file contains the object hierarchy.
-my $OBJECT_TREE_FILE = "$ROOT_DIR/$MODULE.hierarchy";
-
-# This file contains signal arguments and names.
-my $SIGNALS_FILE = "$ROOT_DIR/$MODULE.signals";
-
-# The file containing Arg information.
-my $ARGS_FILE = "$ROOT_DIR/$MODULE.args";
-
-# These global arrays store information on signals. Each signal has an entry
-# in each of these arrays at the same index, like a multi-dimensional array.
-my @SignalObjects; # The GtkObject which emits the signal.
-my @SignalNames; # The signal name.
-my @SignalReturns; # The return type.
-my @SignalPrototypes; # The rest of the prototype of the signal handler.
-
-# These global arrays store information on Args. Each Arg has an entry
-# in each of these arrays at the same index, like a multi-dimensional array.
-my @ArgObjects; # The GtkObject which has the Arg.
-my @ArgNames; # The Arg name.
-my @ArgTypes; # The Arg type - gint, GtkArrowType etc.
-my @ArgFlags; # How the Arg can be used - readable/writable etc.
-
-# These global hashes store declaration info keyed on a symbol name.
-my %Declarations;
-my %DeclarationTypes;
-my %DeclarationConditional;
-my %DeclarationOutput;
-
-# These global hashes store the existing documentation.
-my %SymbolDocs;
-my %SymbolTypes;
-my %SymbolParams;
-
-# These global hashes store documentation scanned from the source files.
-my %SourceSymbolDocs;
-my %SourceSymbolParams;
-
-# These global arrays store GtkObject and subclasses and the hierarchy.
-my @Objects;
-my @ObjectLevels;
-
-
-# Create the root DocBook output directory if it doens't exist.
-if (! -e $SGML_OUTPUT_DIR) {
- mkdir ("$SGML_OUTPUT_DIR", 0777)
- || die "Can't create directory: $SGML_OUTPUT_DIR";
-}
-
-# Function and other declaration output settings.
-my $RETURN_TYPE_FIELD_WIDTH = 12;
-my $SYMBOL_FIELD_WIDTH = 32;
-my $SIGNAL_FIELD_WIDTH = 12;
-
-&ReadSignalsFile ($SIGNALS_FILE);
-&ReadArgsFile ($ARGS_FILE);
-&ReadObjectHierarchy;
-
-# FIXME: this is the header file output at the top of the Synopsis.
-# We should allow this to be changed in the MODULE-sections.txt file.
-# gnome.h includes gtk/gtk.h which includes gdk/gdk.h which includes glib.h
-# so what should we output? - alternatives?
-my $HEADER_FILE = "";
-if ($MODULE eq 'glib') {
- $HEADER_FILE = "glib.h";
-} elsif ($MODULE eq 'gdk') {
- $HEADER_FILE = "gtk/gdk.h";
-} elsif ($MODULE eq 'gtk') {
- $HEADER_FILE = "gtk/gtk.h";
-} elsif ($MODULE eq 'gnome' || $MODULE eq 'gnomeui') {
- $HEADER_FILE = "gnome.h";
-}
-
-for my $dir (@SOURCE_DIRS) {
- &ReadSourceDocumentation ($dir);
-}
-
-&OutputSGML ("$ROOT_DIR/$MODULE-sections.txt");
-
-
-#############################################################################
-# Function : OutputObjectList
-# Description : This outputs the alphabetical list of objects, in a columned
-# table. FIXME: Currently this also outputs ancestor objects
-# which may not actually be in this module.
-# Arguments : none
-#############################################################################
-
-sub OutputObjectList {
- my $cols = 3;
-
- open (OUTPUT, ">$SGML_OUTPUT_DIR/object_index.sgml")
- || die "Can't create $SGML_OUTPUT_DIR/object_index.sgml";
- print (OUTPUT <<EOF);
-<informaltable pgwide=1 frame="none">
-<tgroup cols="$cols">
-<colspec colwidth="1*">
-<colspec colwidth="1*">
-<colspec colwidth="1*">
-<tbody>
-EOF
-
- my $count = 0;
- my $object;
- foreach $object (sort(@Objects)) {
- my $xref = &MakeXRef ($object);
- if ($count % $cols == 0) { print (OUTPUT "<row>\n"); }
- print (OUTPUT "<entry>$xref</entry>\n");
- if ($count % $cols == ($cols - 1)) { print (OUTPUT "</row>\n"); }
- $count++;
- }
-
- print (OUTPUT <<EOF);
-</tbody></tgroup></informaltable>
-EOF
- close (OUTPUT);
-}
-
-
-#############################################################################
-# Function : OutputSGML
-# Description : This collects the output for each section of the docs, and
-# outputs each file when the end of the section is found.
-# Arguments : $file - the $MODULE-sections.txt file which contains all of
-# the functions/macros/structs etc. being documented, organised
-# into sections and subsections.
-#############################################################################
-
-sub OutputSGML {
- my ($file) = @_;
-
- open (INPUT, $file)
- || die "Can't open $file";
- my $book_top = "";
- my $book_bottom = "";
- my $includes = "";
- my $section_includes = "";
- my $in_section = 0;
- my $title = "";
- my $subsection = "";
- my $synopsis;
- my $details;
- my $num_symbols;
- while (<INPUT>) {
- if (m/^#/) {
- next;
-
- } elsif (m/^<SECTION>/) {
- $synopsis = "";
- $details = "";
- $num_symbols = 0;
- $in_section = 1;
-
- } elsif (m/^<SUBSECTION\s*(.*)>/i) {
- $synopsis .= "\n";
- $subsection = $1;
-
- } elsif (m/^<SUBSECTION>/) {
-
- } elsif (m/^<TITLE>(.*)<\/TITLE>/) {
- $title = $1;
-# print "Section: $title\n";
-
- # We don't want warnings if object & class structs aren't used.
- $DeclarationOutput{$title} = 1;
- $DeclarationOutput{"${title}Class"} = 1;
-
- } elsif (m/^<FILE>(.*)<\/FILE>/) {
- $file = $1;
- %SymbolDocs = ();
- %SymbolTypes = ();
- %SymbolParams = ();
- &ReadTemplateFile ("$TMPL_DIR/$file.sgml", 1);
- &MergeSourceDocumentation;
-
- } elsif (m/^<INCLUDE>(.*)<\/INCLUDE>/) {
- if ($in_section) {
- $section_includes = $1;
- } else {
- $includes = $1;
- }
-
- } elsif (m/^<\/SECTION>/) {
- if ($title eq "") {
- $title = $file;
- }
-# print "End of section: $title\n";
-
- $file =~ s/\s/_/g;
- $file .= ".sgml";
-
- # GtkObjects use their class name as the ID.
- my $section_id;
- if (&CheckIsObject ($title)) {
- $section_id = &CreateValidSGMLID ($title);
- } else {
- $section_id = &CreateValidSGMLID ("$MODULE-$title");
- }
-
- if ($num_symbols > 0) {
- $book_top .= "<!entity $section_id SYSTEM \"sgml/$file\">\n";
- $book_bottom .= " &$section_id;\n";
-
- if ($section_includes eq "") {
- $section_includes = $includes;
- }
-
- &OutputSGMLFile ($file, $title, $section_id, $section_includes,
- \$synopsis, \$details);
- }
- $title = "";
- $subsection = "";
- $in_section = 0;
- $section_includes = "";
-
- } elsif (m/^(\S+)/) {
- my $symbol = $1;
- #print " Symbol: $symbol\n";
-
- my $declaration = $Declarations{$1};
- if (defined ($declaration)) {
- # We don't want standard macros/functions of GtkObjects,
- # or private declarations.
- if ($subsection ne "Standard" && $subsection ne "Private") {
- my ($synop, $desc) = &OutputDeclaration ($symbol,
- $declaration);
- $synopsis .= $synop;
- $details .= $desc;
- }
-
- # Note that the declaration has been output.
- $DeclarationOutput{$symbol} = 1;
- } else {
- print "WARNING: No declaration for: $1\n";
- }
- $num_symbols++;
- }
- }
- close (INPUT);
-
- &OutputBook ($book_top, $book_bottom);
-}
-
-
-#############################################################################
-# Function : OutputDeclaration
-# Description : Returns the synopsis and detailed description DocBook
-# describing one function/macro etc.
-# Arguments : $symbol - the name of the function/macro begin described.
-# $declaration - the declaration of the function/macro.
-#############################################################################
-
-sub OutputDeclaration {
- my ($symbol, $declaration) = @_;
-
- my $type = $DeclarationTypes {$symbol};
- if ($type eq 'MACRO') {
- return &OutputMacro ($symbol, $declaration);
- } elsif ($type eq 'TYPEDEF') {
- return &OutputTypedef ($symbol, $declaration);
- } elsif ($type eq 'STRUCT') {
- return &OutputStruct ($symbol, $declaration);
- } elsif ($type eq 'ENUM') {
- return &OutputEnum ($symbol, $declaration);
- } elsif ($type eq 'UNION') {
- return &OutputUnion ($symbol, $declaration);
- } elsif ($type eq 'VARIABLE') {
- return &OutputVariable ($symbol, $declaration);
-
- } elsif ($type eq 'FUNCTION') {
- return &OutputFunction ($symbol, $declaration, $type);
- } elsif ($type eq 'USER_FUNCTION') {
- return &OutputFunction ($symbol, $declaration, $type);
- } else {
- die "Unknown symbol type";
- }
-}
-
-
-#############################################################################
-# Function : OutputMacro
-# Description : Returns the synopsis and detailed description of a macro.
-# Arguments : $symbol - the macro.
-# $declaration - the declaration of the macro.
-#############################################################################
-
-sub OutputMacro {
- my ($symbol, $declaration) = @_;
- my $id = &CreateValidSGMLID ($symbol);
- my $synop = "#define <link linkend=\"$id\">$symbol</link>";
- my $desc;
- my $args = "";
- if ($declaration =~ m/^\s*#\s*define\s+\w+(\([^\)]*\))/) {
- $args = $1;
-
- if (length ($symbol) < $SYMBOL_FIELD_WIDTH) {
- $synop .= (' ' x ($SYMBOL_FIELD_WIDTH - length ($symbol)));
- }
-
- $synop .= &CreateValidSGML ($args);
- }
- $synop .= "\n";
-
- if ($args ne "") {
- $desc = "<refsect2>\n<title><anchor id=\"$id\">${symbol}()</title>\n";
- } else {
- $desc = "<refsect2>\n<title><anchor id=\"$id\">$symbol</title>\n";
- }
- # Don't output the macro definition if is is a conditional macro or it
- # looks like a function, i.e. starts with "g_" or "_?gnome_", or it is
- # longer than 2 lines, otherwise we get lots of complicated macros like
- # g_assert.
- if (!defined ($DeclarationConditional{$symbol}) && ($symbol !~ m/^g_/)
- && ($symbol !~ m/^_?gnome_/) && (($declaration =~ tr/\n//) < 2)) {
- $declaration = &CreateValidSGML ($declaration);
- $desc .= "<programlisting>$declaration</programlisting>\n";
- } else {
- $desc .= "<programlisting>#define $symbol";
- $desc .= &CreateValidSGML ($args);
- $desc .= "</programlisting>\n";
- }
- if (defined ($SymbolDocs{$symbol})) {
- $desc .= &ExpandAbbreviations($SymbolDocs{$symbol});
- }
- $desc .= &OutputParamDescriptions ("MACRO", $symbol);
- $desc .= "</refsect2>\n";
- return ($synop, $desc);
-}
-
-
-#############################################################################
-# Function : OutputTypedef
-# Description : Returns the synopsis and detailed description of a typedef.
-# Arguments : $symbol - the typedef.
-# $declaration - the declaration of the typedef,
-# e.g. 'typedef unsigned int guint;'
-#############################################################################
-
-sub OutputTypedef {
- my ($symbol, $declaration) = @_;
- my $id = &CreateValidSGMLID ($symbol);
- my $synop = "typedef <link linkend=\"$id\">$symbol</link>;\n";
- my $desc = "<refsect2>\n<title><anchor id=\"$id\">$symbol</title>\n";
- if (!defined ($DeclarationConditional{$symbol})) {
- $declaration = &CreateValidSGML ($declaration);
- $desc .= "<programlisting>$declaration</programlisting>\n";
- }
- if (defined ($SymbolDocs{$symbol})) {
- $desc .= &ExpandAbbreviations($SymbolDocs{$symbol});
- }
- $desc .= "</refsect2>\n";
- return ($synop, $desc);
-}
-
-
-#############################################################################
-# Function : OutputStruct
-# Description : Returns the synopsis and detailed description of a struct.
-# We check if it is a widget struct, and if so we only output
-# parts of it that are noted as public fields.
-# We also use a different SGML ID for widget structs, since the
-# original ID is used for the entire RefEntry.
-# Arguments : $symbol - the struct.
-# $declaration - the declaration of the struct.
-#############################################################################
-
-sub OutputStruct {
- my ($symbol, $declaration) = @_;
-
- my $is_widget_struct = 0;
- if (&CheckIsObject ($symbol)) {
-# print "Found widget struct: $symbol\n";
- $is_widget_struct = 1;
- }
-
- my $id;
- if ($is_widget_struct) {
- $id = &CreateValidSGMLID ($symbol . "_struct");
- } else {
- $id = &CreateValidSGMLID ($symbol);
- }
- my $synop = "struct <link linkend=\"$id\">$symbol</link>;\n";
- my $desc = "<refsect2>\n<title><anchor id=\"$id\">struct $symbol</title>\n";
-
- # Form a pretty-printed, private-data-removed form of the declaration
-
- my $decl_out;
- if ($declaration =~ m/^\s*$/) {
-# print "Found opaque struct\n";
- $decl_out = "struct $symbol;";
- } elsif ($is_widget_struct) {
- my $public = 0;
- my $new_declaration = "";
- my $decl_line;
- foreach $decl_line (split (/\n/, $declaration)) {
-# print "Struct line: $decl_line\n";
- if ($decl_line =~ m%/\*\s*<\s*public\s*>\s*\*/%) {
- $public = 1;
- } elsif ($decl_line =~ m%/\*\s*<\s*private\s*>\s*\*/%) {
- $public = 0;
- } elsif ($public) {
- $new_declaration .= $decl_line . "\n";
- }
- }
- if ($new_declaration) {
- $decl_out = "struct $symbol {\n" . $new_declaration;
- # If we finished with public set, we already have the struct end.
- if ($public == 0) {
- $decl_out .= "};\n";
- }
- } else {
- $decl_out = "struct $symbol;";
- }
- } else {
- $decl_out = $declaration;
- }
-
- $decl_out = &CreateValidSGML ($decl_out);
- $desc .= "<programlisting>$decl_out</programlisting>\n";
- if (defined ($SymbolDocs{$symbol})) {
- $desc .= &ExpandAbbreviations($SymbolDocs{$symbol});
- }
-
- # Create a table of fields and descriptions
-
- # FIXME: Inserting  's into the produced type declarations here would
- # improve the output in most situations ... except for function
- # members of structs!
- my @fields = ParseStructDeclaration($declaration, $is_widget_struct, \&MakeXRef,
- sub {
- "<structfield>$_[0]</structfield>";
- });
- my $params = $SymbolParams{$symbol};
-
- # If no parameters are filled in, we don't generate the description
- # table, for backwards compatibility
-
- my $found = 0;
- if (defined $params) {
- for (my $i = 1; $i <= $#$params; $i += 2) {
- if ($params->[$i] =~ /\S/) {
- $found = 1;
- last;
- }
- }
- }
-
- if ($found) {
- my %field_descrs = @$params;
-
- $desc .= <<EOF;
-<informaltable pgwide=1 frame="none" role="struct">
-<tgroup cols="2">
-<colspec colwidth="2*">
-<colspec colwidth="8*">
-<tbody>
-EOF
- while (@fields) {
- my $field_name = shift @fields;
- my $text = shift @fields;
- my $field_descr = $field_descrs{$field_name};
-
- $desc .= "<row>\n<entry>$text</entry>\n";
- if (defined $field_descr) {
- $desc .= "<entry>".&ExpandAbbreviations($field_descr)."</entry>\n";
- } else {
- $desc .= "<entry></entry>\n";
- }
- $desc .= "</row>\n";
- }
-
- $desc .= "</tbody></tgroup></informaltable>";
- }
- $desc .= "</refsect2>\n";
- return ($synop, $desc);
-}
-
-
-#############################################################################
-# Function : OutputEnum
-# Description : Returns the synopsis and detailed description of a enum.
-# Arguments : $symbol - the enum.
-# $declaration - the declaration of the enum.
-#############################################################################
-
-sub OutputEnum {
- my ($symbol, $declaration) = @_;
- my $id = &CreateValidSGMLID ($symbol);
- my $synop = "enum <link linkend=\"$id\">$symbol</link>;\n";
- my $desc = "<refsect2>\n<title><anchor id=\"$id\">enum $symbol</title>\n";
- $declaration = &CreateValidSGML ($declaration);
- $desc .= "<programlisting>$declaration</programlisting>\n";
- if (defined ($SymbolDocs{$symbol})) {
- $desc .= &ExpandAbbreviations($SymbolDocs{$symbol});
- }
-
- # Create a table of fields and descriptions
-
- my @members = ParseEnumDeclaration($declaration);
- my $params = $SymbolParams{$symbol};
-
- # If no parameters are filled in, we don't generate the description
- # table, for backwards compatibility
-
- my $found = 0;
- if (defined $params) {
- for (my $i = 1; $i <= $#$params; $i += 2) {
- if ($params->[$i] =~ /\S/) {
- $found = 1;
- last;
- }
- }
- }
-
- if ($found) {
- my %member_descrs = @$params;
-
- $desc .= <<EOF;
-<informaltable pgwide=1 frame="none" role="enum">
-<tgroup cols="2">
-<colspec colwidth="2*">
-<colspec colwidth="8*">
-<tbody>
-EOF
- for my $member_name (@members) {
- my $member_descr = $member_descrs{$member_name};
-
- $desc .= "<row>\n<entry><literal>$member_name</literal></entry>\n";
- if (defined $member_descr) {
- $desc .= "<entry>".&ExpandAbbreviations($member_descr)."</entry>\n";
- } else {
- $desc .= "<entry></entry>\n";
- }
- $desc .= "</row>\n";
- }
-
- $desc .= "</tbody></tgroup></informaltable>";
- }
-
- $desc .= "</refsect2>\n";
- return ($synop, $desc);
-}
-
-
-#############################################################################
-# Function : OutputUnion
-# Description : Returns the synopsis and detailed description of a union.
-# Arguments : $symbol - the union.
-# $declaration - the declaration of the union.
-#############################################################################
-
-sub OutputUnion {
- my ($symbol, $declaration) = @_;
- my $id = &CreateValidSGMLID ($symbol);
- my $synop = "union <link linkend=\"$id\">$symbol</link>;\n";
- my $desc = "<refsect2>\n<title><anchor id=\"$id\">union $symbol</title>\n";
- $declaration = &CreateValidSGML ($declaration);
- $desc .= "<programlisting>$declaration</programlisting>\n";
- if (defined ($SymbolDocs{$symbol})) {
- $desc .= &ExpandAbbreviations($SymbolDocs{$symbol});
- }
- $desc .= "</refsect2>\n";
- return ($synop, $desc);
-}
-
-
-#############################################################################
-# Function : OutputVariable
-# Description : Returns the synopsis and detailed description of a variable.
-# Arguments : $symbol - the extern'ed variable.
-# $declaration - the declaration of the variable.
-#############################################################################
-
-sub OutputVariable {
- my ($symbol, $declaration) = @_;
- my $id = &CreateValidSGMLID ($symbol);
-
- my $synop;
- if ($declaration =~ m/^\s*extern\s+((const\s+|unsigned\s+)*\w+)(\s+\*+|\*+|\s)(\s*)([A-Za-z]\w*)\s*;/) {
- my $mod = defined ($1) ? $1 : "";
- my $ptr = defined ($3) ? $3 : "";
- my $space = defined ($4) ? $4 : "";
- $synop = "extern $mod$ptr$space<link linkend=\"$id\">$symbol</link>;\n";
-
- } else {
- $synop = "extern <link linkend=\"$id\">$symbol</link>;\n";
- }
-
- my $desc = "<refsect2>\n<title><anchor id=\"$id\">$symbol</title>\n";
- $declaration = &CreateValidSGML ($declaration);
- $desc .= "<programlisting>$declaration</programlisting>\n";
- if (defined ($SymbolDocs{$symbol})) {
- $desc .= &ExpandAbbreviations($SymbolDocs{$symbol});
- }
- $desc .= "</refsect2>\n";
- return ($synop, $desc);
-}
-
-
-#############################################################################
-# Function : OutputFunction
-# Description : Returns the synopsis and detailed description of a function.
-# Arguments : $symbol - the function.
-# $declaration - the declaration of the function.
-#############################################################################
-
-sub OutputFunction {
- my ($symbol, $declaration, $symbol_type) = @_;
- my $id = &CreateValidSGMLID ($symbol);
-
- # Take out the return type
- $declaration =~ s/<RETURNS>\s*(const\s+|unsigned\s+)*(\w+)\s*(\**)\s*<\/RETURNS>\n//;
- my $type_modifier = defined($1) ? $1 : "";
- my $type = $2;
- my $pointer = $3;
- my $xref = &MakeXRef ($type);
- my $start = "";
- if ($symbol_type eq 'USER_FUNCTION') {
-# $start = "typedef ";
- }
-
- my $ret_type_len = length ($start) + length ($type_modifier)
- + length ($pointer) + length ($type);
- my $ret_type_output;
- my $symbol_len;
- if ($ret_type_len < $RETURN_TYPE_FIELD_WIDTH) {
- $ret_type_output = "$start$type_modifier$xref$pointer"
- . (' ' x ($RETURN_TYPE_FIELD_WIDTH - $ret_type_len));
- $symbol_len = 0;
- } else {
-# $ret_type_output = "$start$type_modifier$xref$pointer\n"
-# . (' ' x $RETURN_TYPE_FIELD_WIDTH);
-
- $ret_type_output = "$start$type_modifier$xref$pointer ";
- $symbol_len = $ret_type_len + 1 - $RETURN_TYPE_FIELD_WIDTH;
- }
-
- $symbol_len += length ($symbol);
- my $char1 = my $char2 = my $char3 = "";
- if ($symbol_type eq 'USER_FUNCTION') {
- $symbol_len += 3;
- $char1 = "(";
- $char2 = "*";
- $char3 = ")";
- }
-
- my ($symbol_output, $symbol_desc_output);
- if ($symbol_len < $SYMBOL_FIELD_WIDTH) {
- $symbol_output = "$char1<link linkend=\"$id\">$char2$symbol</link>$char3"
- . (' ' x ($SYMBOL_FIELD_WIDTH - $symbol_len));
- $symbol_desc_output = "$char1$char2$symbol$char3"
- . (' ' x ($SYMBOL_FIELD_WIDTH - $symbol_len));
- } else {
- $symbol_output = "$char1<link linkend=\"$id\">$char2$symbol</link>$char3\n"
- . (' ' x ($SYMBOL_FIELD_WIDTH + $RETURN_TYPE_FIELD_WIDTH));
- $symbol_desc_output = "$char1$char2$symbol$char3\n"
- . (' ' x ($SYMBOL_FIELD_WIDTH + $RETURN_TYPE_FIELD_WIDTH));
- }
-
- my $synop = $ret_type_output . $symbol_output . '(';
- my $desc = "<refsect2>\n<title><anchor id=\"$id\">${symbol} ()</title>\n";
- $desc .= "<programlisting>${ret_type_output}$symbol_desc_output(";
-
- my $param_num = 0;
- while ($declaration ne "") {
- if ($declaration =~ s/^[\s,]+//) {
- # skip whitespace and commas
- next;
-
- } elsif ($declaration =~ s/^void\s*[,\n]//) {
- $synop .= "void";
- $desc .= "void";
-
- } elsif ($declaration =~ s/^...\s*[,\n]//) {
- if ($param_num == 0) {
- $synop .= "...";
- $desc .= "...";
- } else {
- $synop .= ",\n"
- . (' ' x ($SYMBOL_FIELD_WIDTH + $RETURN_TYPE_FIELD_WIDTH))
- . " ...";
- $desc .= ",\n"
- . (' ' x ($SYMBOL_FIELD_WIDTH + $RETURN_TYPE_FIELD_WIDTH))
- . " ...";
- }
-
- # allow alphanumerics, '_', '[' & ']' in param names
- } elsif ($declaration =~ s/^(const\s+|unsigned\s+)*(struct\s+)?(\w+)\s*(\**)\s*(const\s+)?(\**)?\s*(\w+)?\s*(\[\d*\])?\s*[,\n]//) {
- my $mod1 = defined($1) ? $1 : "";
- if (defined($2)) { $mod1 .= $2; }
- my $type = $3;
- my $ptr1 = $4;
- my $mod2 = defined($5) ? $5 : "";
- my $ptr2 = $6;
- my $name = defined($7) ? $7 : "";
- if ($name) { $ptr1 = " " . $ptr1; }
- my $array = defined($8) ? $8 : "";
- my $xref = &MakeXRef ($type);
-
-# print "Type: $mod1$type $ptr1 $mod2 $name $array\n";
- if ($param_num == 0) {
- $synop .= "$mod1$xref$ptr1$mod2$ptr2$name$array";
- $desc .= "$mod1$xref$ptr1$mod2$ptr2$name$array";
- } else {
- $synop .= ",\n"
- . (' ' x ($SYMBOL_FIELD_WIDTH + $RETURN_TYPE_FIELD_WIDTH))
- . " $mod1$xref$ptr1$mod2$ptr2$name$array";
- $desc .= ",\n"
- . (' ' x ($SYMBOL_FIELD_WIDTH + $RETURN_TYPE_FIELD_WIDTH))
- . " $mod1$xref$ptr1$mod2$ptr2$name$array";
- }
-
- # Try to match parameters which are functions.
- } elsif ($declaration =~ s/^(const\s+|unsigned\s+)*(struct\s+)?(\w+)\s*(\**)\s*(const\s+)?\(\s*\*\s*(\w+)\s*\)\s*\(([^)]*)\)\s*[,\n]//) {
- my $mod1 = defined($1) ? $1 : "";
- if (defined($2)) { $mod1 .= $2; }
- my $type = $3;
- my $ptr1 = $4;
- my $mod2 = defined($5) ? $5 : "";
- my $name = $6;
- my $func_params = $7;
- my $xref = &MakeXRef ($type);
-
-# print "Type: $mod1$type$ptr1$mod2(*$name)($func_params)\n";
- if ($param_num == 0) {
- $synop .= "$mod1$xref$ptr1$mod2 (*$name) ($func_params)";
- $desc .= "$mod1$xref$ptr1$mod2 (*$name) ($func_params)";
- } else {
- $synop .= ",\n"
- . (' ' x ($SYMBOL_FIELD_WIDTH + $RETURN_TYPE_FIELD_WIDTH))
- . " $mod1$xref$ptr1$mod2 (*$name) ($func_params)";
- $desc .= ",\n"
- . (' ' x ($SYMBOL_FIELD_WIDTH + $RETURN_TYPE_FIELD_WIDTH))
- . " $mod1$xref$ptr1$mod2 (*$name) ($func_params)";
- }
-
- } else {
- print "###Can't parse args for function $symbol: $declaration\n";
- last;
- }
- $param_num++;
- }
- $synop .= ");\n";
- $desc .= ");</programlisting>\n";
- if (defined ($SymbolDocs{$symbol})) {
- $desc .= &ExpandAbbreviations($SymbolDocs{$symbol});
- }
-
- $desc .= &OutputParamDescriptions ("FUNCTION", $symbol);
- $desc .= "</refsect2>\n";
- return ($synop, $desc);
-}
-
-
-#############################################################################
-# Function : OutputParamDescriptions
-# Description : Returns the DocBook output describing the parameters of a
-# function, macro or signal handler.
-# Arguments : $symbol_type - 'FUNCTION', 'MACRO' or 'SIGNAL'. Signal
-# handlers have an implicit user_data parameter last.
-# $symbol - the name of the function/macro being described.
-#############################################################################
-
-sub OutputParamDescriptions {
- my ($symbol_type, $symbol) = @_;
- my $output = "";
-
- if (defined ($SymbolParams{$symbol})) {
- my $returns = "";
- my $params = $SymbolParams{$symbol};
- my $params_desc = "";
- if ($#$params < 0) {
- print "WARNING: 0 parameters\n";
- }
- my $j;
- for ($j = 0; $j <= $#$params; $j += 2) {
- my $param_name = $$params[$j];
- my $param = $$params[$j + 1];
- if ($param_name eq "Returns") {
- $returns = &ExpandAbbreviations($param);
- } else {
- if ($param_name eq "Varargs") {
- $param_name = "...";
- }
- $param = &ExpandAbbreviations($param);
- $params_desc .= "<row><entry align=\"right\"><parameter>$param_name</parameter> :</entry>\n<entry>$param</entry></row>\n";
- }
- }
-
- # Signals have an implicit user_data parameter which we describe.
- if ($symbol_type eq "SIGNAL") {
- $params_desc .= "<row><entry align=\"right\"><parameter>user_data</parameter> :</entry>\n<entry>user data set when the signal handler was connected.</entry></row>\n";
- }
-
- # Start a table if we need one.
- if ($params_desc || $returns) {
- $output .= <<EOF;
-<informaltable pgwide=1 frame="none" role="params">
-<tgroup cols="2">
-<colspec colwidth="2*">
-<colspec colwidth="8*">
-<tbody>
-EOF
-
- if ($params_desc ne "") {
-# $output .= "<row><entry>Parameters:</entry></row>\n";
- $output .= $params_desc;
- }
-
- # Output the returns info last.
- if ($returns) {
- $output .= "<row><entry align=\"right\"><emphasis>Returns</emphasis> :</entry><entry>$returns</entry></row>\n";
- }
-
- # Finish the table.
- $output .= "</tbody></tgroup></informaltable>";
- }
- }
- return $output;
-}
-
-
-#############################################################################
-# Function : OutputSGMLFile
-# Description : Outputs the final DocBook file for one section.
-# Arguments : $file - the name of the file.
-# $title - the title from the $MODULE-sections.txt file, which
-# will be overriden by the title in the template file.
-# $section_id - the SGML id to use for the toplevel tag.
-# $includes - comma-separates list of include files added at top
-# of synopsis, with '<' '>' around them.
-# $synopsis - reference to the DocBook for the Synopsis part.
-# $details - reference to the DocBook for the Details part.
-#############################################################################
-
-sub OutputSGMLFile {
- my ($file, $title, $section_id, $includes, $synopsis, $details) = @_;
-
- # Find out if this is a GtkObject or descendant.
- my $signals_synop = "";
- my $signals_desc = "";
- my $args_synop = "";
- my $args_desc = "";
- my $hierarchy = "";
- if (&CheckIsObject ($title)) {
- ($signals_synop, $signals_desc) = &GetSignals ($title);
- ($args_synop, $args_desc) = &GetArgs ($title);
- $hierarchy = &GetHierarchy ($title);
- }
-
- # The edited title overrides the one from the sections file.
- my $new_title = $SymbolDocs{"$TMPL_DIR/$file:Title"};
- if (defined ($new_title) && $new_title !~ m/^\s*$/) {
- $title = $new_title;
-# print "Found title: $title\n";
- }
- my $short_desc = $SymbolDocs{"$TMPL_DIR/$file:Short_Description"};
- if (!defined ($short_desc) || $short_desc =~ m/^\s*$/) {
-# $short_desc = "one line description goes here.";
- $short_desc = "";
- } else {
- $short_desc = &ExpandAbbreviations($short_desc);
-# print "Found short_desc: $short_desc";
- }
- my $long_desc = $SymbolDocs{"$TMPL_DIR/$file:Long_Description"};
- if (!defined ($long_desc) || $long_desc =~ m/^\s*$/) {
- $long_desc = "<para>\nA longer description goes here.\n</para>\n";
- } else {
- $long_desc = &ExpandAbbreviations($long_desc);
-# print "Found long_desc: $long_desc";
- }
- my $see_also = $SymbolDocs{"$TMPL_DIR/$file:See_Also"};
- if (!defined ($see_also) || $see_also =~ m%^\s*(<para>)?\s*(</para>)?\s*$%) {
- $see_also = "";
- } else {
- $see_also = &ExpandAbbreviations($see_also);
-# print "Found see_also: $see_also";
- }
- if ($see_also) {
- $see_also = "<refsect1>\n<title>See Also</title>\n$see_also\n</refsect1>\n";
- }
-
- my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
- gmtime (time);
- my $month = (qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec))[$mon];
- $year += 1900;
-
- my $include_output = "";
- my $include;
- foreach $include (split (/,/, $includes)) {
- $include_output .= "#include <${include}>\n";
- }
-
- open (OUTPUT, ">$SGML_OUTPUT_DIR/$file")
- || die "Can't create $SGML_OUTPUT_DIR/$file";
-
- # Note: The refname and refpurpose are on the same line to stop
- # docbook-to-man 1.08 putting them on separate lines.
- print OUTPUT <<EOF;
-<refentry id="$section_id" revision="$mday $month $year">
-<refmeta>
-<refentrytitle>$title</refentrytitle>
-<manvolnum>3</manvolnum>
-<refmiscinfo>\U$MODULE\E Library</refmiscinfo>
-</refmeta>
-
-<refnamediv>
-<refname>$title</refname><refpurpose>$short_desc</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv><title>Synopsis</title>
-<synopsis>
-
-$include_output
-
-$${synopsis}</synopsis>
-</refsynopsisdiv>
-
-$hierarchy
-$args_synop
-$signals_synop
-
-<refsect1>
-<title>Description</title>
-$long_desc
-</refsect1>
-
-<refsect1>
-<title>Details</title>
-$$details
-</refsect1>
-$args_desc
-$signals_desc
-
-$see_also
-</refentry>
-EOF
- close (OUTPUT);
-}
-
-
-#############################################################################
-# Function : OutputBook
-# Description : Outputs the SGML entities that need to be included into the
-# main SGML file for the module.
-# Arguments : $book_top - the declarations of the entities, which are added
-# at the top of the main SGML file.
-# $book_bottom - the references to the entities, which are
-# added in the main SGML file at the desired position.
-#############################################################################
-
-sub OutputBook {
- my ($book_top, $book_bottom) = @_;
-
- open (OUTPUT, ">$SGML_OUTPUT_DIR/$MODULE-doc.top")
- || die "Can't create $SGML_OUTPUT_DIR/$MODULE-doc.top";
- print OUTPUT $book_top;
- close (OUTPUT);
-
- open (OUTPUT, ">$SGML_OUTPUT_DIR/$MODULE-doc.bottom")
- || die "Can't create $SGML_OUTPUT_DIR/$MODULE-doc.bottom";
- print OUTPUT $book_bottom;
- close (OUTPUT);
-}
-
-
-#############################################################################
-# Function : CreateValidSGMLID
-# Description : Creates a valid SGML 'id' from the given string.
-# NOTE: SGML ids are case-insensitive, so we have a few special
-# cases to avoid clashes of ids.
-# Arguments : $id - the string to be converted into a valid SGML id.
-#############################################################################
-
-sub CreateValidSGMLID {
- my ($id) = $_[0];
-
- # Append -CAPS to all all-caps identifiers
-
- # Special case, '_' would end up as '' so we use 'gettext-macro' instead.
- if ($id eq "_") { return "gettext-macro"; }
-
- if ($id !~ /[a-z]/) { $id .= "-CAPS" };
-
- $id =~ s/[_ ]/-/g;
- $id =~ s/[,\.]//g;
- $id =~ s/^-*//;
- $id =~ s/::/-/g;
-
- return $id;
-}
-
-
-#############################################################################
-# Function : CreateValidSGML
-# Description : This turns any chars which are used in SGML into entities,
-# e.g. '<' into '<'
-# Arguments : $text - the text to turn into proper SGML.
-#############################################################################
-
-sub CreateValidSGML {
- my ($text) = @_;
- $text =~ s/&/&/g; # Do this first, or the others get messed up.
- $text =~ s/</</g;
- $text =~ s/>/>/g;
- return $text;
-}
-
-
-#############################################################################
-# Function : ExpandAbbreviations
-# Description : This turns the abbreviations function(), macro(), @param,
-# %constant, and #symbol into appropriate DocBook markup.
-# Arguments : $text - the text to expand.
-#############################################################################
-
-sub ExpandAbbreviations {
- my ($text) = @_;
-
- # Convert 'function()' or 'macro()'
- $text =~ s/(\w+)\s*\(\)/&MakeXRef($1) . "()";/eg;
-
- # Convert '@param'
- $text =~ s/\@(\w+)/<parameter>$1<\/parameter>/g;
-
- # Convert '%constant'. Also allow negative numbers, e.g. %-1.
- $text =~ s/\%(-?\w+)/<literal>$1<\/literal>/g;
-
- # Convert '#symbol'
- $text =~ s/#([\w-]+)/&MakeXRef($1);/eg;
-
- return $text;
-}
-
-
-#############################################################################
-# Function : MakeXRef
-# Description : This returns a cross-reference link to the given symbol.
-# Though it doesn't try to do this for a few standard C types
-# that it knows won't be in the documentation.
-# Arguments : $symbol - the symbol to try to create a XRef to.
-#############################################################################
-
-sub MakeXRef {
- my ($symbol) = $_[0];
-# print "Getting type link for $symbol\n";
-
- # Don't create a link for some standard C types and functions, to cut
- # down on the number of warnings output by jade.
- if ($symbol eq "void" || $symbol eq "va_list" || $symbol eq "int"
- || $symbol eq "char" || $symbol eq "printf" || $symbol eq "sprintf") {
- return $symbol;
- }
-
- my $symbol_id = &CreateValidSGMLID ($symbol);
- # Get rid of special '-struct' suffix.
- $symbol =~ s/-struct$//;
- return "<link linkend=\"$symbol_id\">$symbol</link>";
-}
-
-
-#############################################################################
-# Function : GetHierarchy
-# Description : Returns the DocBook output describing the ancestors of a
-# GtkObject subclass. It uses the global @Objects and
-# @ObjectLevels arrays to walk up the tree.
-# Arguments : $object - the GtkObject subclass.
-#############################################################################
-
-sub GetHierarchy {
- my ($object) = @_;
-
- # Find object in the objects array.
- my $found = 0;
- my $i;
- for ($i = 0; $i < @Objects; $i++) {
- if ($Objects[$i] eq $object) {
- $found = 1;
- last;
- }
- }
- if (!$found) {
- return "";
- }
-
- # Walk up the hierarchy, pushing ancestors onto the ancestors array.
- my @ancestors = ();
- push (@ancestors, $object);
- my $level = $ObjectLevels[$i];
-# print "Level: $level\n";
- while ($level > 1) {
- $i--;
- if ($ObjectLevels[$i] < $level) {
- push (@ancestors, $Objects[$i]);
- $level = $ObjectLevels[$i];
-# print "Level: $level\n";
- }
- }
-
- # Output the ancestors list, indented and with links.
- my $hierarchy = "<synopsis>\n\n";
- $level = 0;
- for ($i = $#ancestors; $i >= 0; $i--) {
- my $link_text;
- # Don't add a link to the current widget, i.e. when i == 0.
- if ($i > 0) {
- my $ancestor_id = &CreateValidSGMLID ($ancestors[$i]);
- $link_text = "<link linkend=\"$ancestor_id\">$ancestors[$i]</link>";
- } else {
- $link_text = "$ancestors[$i]";
- }
- if ($level == 0) {
- $hierarchy .= " $link_text\n";
- } else {
-# $hierarchy .= ' ' x ($level * 6 - 3) . "|\n";
- $hierarchy .= ' ' x ($level * 6 - 3) . "+----$link_text\n";
- }
- $level++;
- }
- $hierarchy .= "</synopsis>\n";
-
- return <<EOF;
-<refsect1>
-<title>Object Hierarchy</title>
-$hierarchy
-</refsect1>
-EOF
-}
-
-
-#############################################################################
-# Function : GetSignals
-# Description : Returns the synopsis and detailed description DocBook output
-# for the signal handlers of a given GtkObject subclass.
-# Arguments : $object - the GtkObject subclass, e.g. 'GtkButton'.
-#############################################################################
-
-sub GetSignals {
- my ($object) = @_;
- my $synop = "";
- my $desc = "";
-
- my $i;
- for ($i = 0; $i <= $#SignalObjects; $i++) {
- if ($SignalObjects[$i] eq $object) {
-# print "Found signal: $SignalNames[$i]\n";
- my $name = $SignalNames[$i];
- my $symbol = "${object}::${name}";
- my $id = &CreateValidSGMLID ("$object-$name");
-
- my $name_len = length ($name) + 2;
- if ($name_len < $SIGNAL_FIELD_WIDTH) {
- $synop .= ""<link linkend=\"$id\">$name</link>""
- . (' ' x ($SIGNAL_FIELD_WIDTH - $name_len));
- } else {
- $synop .= ""<link linkend=\"$id\">$name</link>"\n"
- . (' ' x $SIGNAL_FIELD_WIDTH);
- }
-
- $desc .= "<refsect2><title><anchor id=\"$id\">The "$name" signal</title>\n";
- $desc .= "<programlisting>";
-
- $SignalReturns[$i] =~ m/\s*(const\s*)?(\w+)\s*(\**)/;
- my $type_modifier = defined($1) ? $1 : "";
- my $type = $2;
- my $pointer = $3;
- my $xref = &MakeXRef ($type);
-
- my $ret_type_len = length ($type_modifier) + length ($pointer)
- + length ($type);
- my $ret_type_output = "$type_modifier$xref$pointer"
- . (' ' x ($RETURN_TYPE_FIELD_WIDTH - $ret_type_len));
-
- $synop .= "${ret_type_output}user_function (";
- $desc .= "${ret_type_output}user_function (";
-
- my @params = split ("\n", $SignalPrototypes[$i]);
- my $j;
- for ($j = 0; $j <= $#params; $j++) {
- # allow alphanumerics, '_', '[' & ']' in param names
- if ($params[$j] =~ m/^\s*(\w+)\s*(\**)\s*([\w\[\]]+)\s*$/) {
- $type = $1;
- $pointer = $2;
- $name = $3;
- $xref = &MakeXRef ($type);
- $synop .= "$xref $pointer$name,\n";
- $synop .= (' ' x ($SYMBOL_FIELD_WIDTH + $RETURN_TYPE_FIELD_WIDTH));
- $desc .= "$xref $pointer$name,\n";
- $desc .= (' ' x ($SYMBOL_FIELD_WIDTH + $RETURN_TYPE_FIELD_WIDTH));
- } else {
- print "###Can't parse arg: $params[$j]\nArgs:$SignalPrototypes[$i]\n";
- }
- }
- $xref = &MakeXRef ("gpointer");
- $synop .= "$xref user_data);\n";
- $desc .= "$xref user_data);</programlisting>\n";
-
- if (defined ($SymbolDocs{$symbol})) {
- $desc .= &ExpandAbbreviations($SymbolDocs{$symbol});
- }
-
- $desc .= &OutputParamDescriptions ("SIGNAL", $symbol);
- $desc .= "</refsect2>";
- }
- }
- if ($synop ne '') {
- $synop = <<EOF;
-<refsect1>
-<title>Signal Prototypes</title>
-<synopsis>
-
-${synop}</synopsis>
-</refsect1>
-EOF
- $desc = <<EOF;
-<refsect1>
-<title>Signals</title>
-$desc
-</refsect1>
-EOF
- }
- return ($synop, $desc);
-}
-
-
-#############################################################################
-# Function : GetArgs
-# Description : Returns the synopsis and detailed description DocBook output
-# for the Args of a given GtkObject subclass.
-# Arguments : $object - the GtkObject subclass, e.g. 'GtkButton'.
-#############################################################################
-
-sub GetArgs {
- my ($object) = @_;
- my $synop = "";
- my $desc = "";
-
- my $i;
- for ($i = 0; $i <= $#ArgObjects; $i++) {
- if ($ArgObjects[$i] eq $object) {
-# print "Found arg: $ArgNames[$i]\n";
- my $name = $ArgNames[$i];
- # Remember only one colon so we don't clash with signals.
- my $symbol = "${object}:${name}";
- # I've used two dashes here for the same reason.
- my $id = &CreateValidSGMLID ("$object--$name");
-
- my $type = $ArgTypes[$i];
- my $type_output;
-
- if ($type eq "GtkSignal") {
- $type = "GtkSignalFunc, gpointer";
- $type_output = &MakeXRef ("GtkSignalFunc") . ", "
- . &MakeXRef ("gpointer");
- } elsif ($type eq "GtkString") {
- $type = "gchar*";
- $type_output = &MakeXRef ("gchar") . "*";
- } else {
- $type_output = &MakeXRef ($type);
- }
-
- my $flags = $ArgFlags[$i];
- my $flags_string = "";
-
- if ($flags =~ m/r/) {
- $flags_string = "Read";
- }
- if ($flags =~ m/w/) {
- if ($flags_string) { $flags_string .= " / "; }
- $flags_string .= "Write";
- }
- if ($flags =~ m/x/) {
- if ($flags_string) { $flags_string .= " / "; }
- $flags_string .= "Construct";
- }
- if ($flags =~ m/X/) {
- if ($flags_string) { $flags_string .= " / "; }
- $flags_string .= "Construct Only";
- }
- if ($flags =~ m/c/) {
- if ($flags_string) { $flags_string .= " / "; }
- $flags_string .= "Child";
- }
-
- my $pad1 = " " x (20 - length ($name));
- my $pad2 = " " x (20 - length ($type));
- $synop .= " "<link linkend=\"$id\">$name</link>"$pad1 $type_output$pad2 : $flags_string\n";
-
- $desc .= "<varlistentry><term><anchor id=\"$id\">"<literal>$name</literal>" ($type_output : $flags_string)</term>\n<listitem>\n";
-
- if (defined ($SymbolDocs{$symbol})) {
- $desc .= &ExpandAbbreviations($SymbolDocs{$symbol});
- } else {
- $desc .= "<para></para>\n";
- }
-
- $desc .= "</listitem></varlistentry>\n";
- }
- }
- if ($synop ne '') {
- $synop = <<EOF;
-<refsect1>
-<title>Args</title>
-<synopsis>
-
-${synop}</synopsis>
-</refsect1>
-EOF
- $desc = <<EOF;
-<refsect1>
-<title>Args</title>
-<variablelist>
-$desc
-</variablelist>
-</refsect1>
-EOF
- }
- return ($synop, $desc);
-}
-
-
-#############################################################################
-# Function : ReadSourceDocumentation
-# Description : This reads in the documentation embedded in comment blocks
-# in the source code (for Gnome).
-#
-# Parameter descriptions override any in the template files.
-# Function descriptions are placed before any description from
-# the template files.
-#
-# It recursively descends the source directory looking for .c
-# files and scans them looking for specially-formatted comment
-# blocks.
-#
-# Arguments : $source_dir - the directory to scan.
-#############################################################################
-
-sub ReadSourceDocumentation {
- my ($source_dir) = @_;
-# print "Scanning source directory: $source_dir\n";
-
- # This array holds any subdirectories found.
- my (@subdirs) = ();
-
- opendir (SRCDIR, $source_dir)
- || die "Can't open source directory $source_dir: $!";
- my $file;
- foreach $file (readdir (SRCDIR)) {
- if ($file =~ /^\./) {
- next;
- } elsif (-d "$source_dir/$file") {
- push (@subdirs, $file);
- } elsif ($file =~ m/\.c$/) {
- &ScanSourceFile ("$source_dir/$file");
- }
- }
- closedir (SRCDIR);
-
- # Now recursively scan the subdirectories.
- my $dir;
- foreach $dir (@subdirs) {
- &ReadSourceDocumentation ("$source_dir/$dir");
- }
-}
-
-
-#############################################################################
-# Function : ScanSourceFile
-# Description : Scans one source file looking for specially-formatted comment
-# blocks. It calls &MergeSourceDocumentation to merge any
-# documentation found with the documentation already read in
-# from the template files.
-#
-# Arguments : $file - the file to scan.
-#############################################################################
-
-sub ScanSourceFile {
- my ($file) = @_;
-
-# print "Scanning source file: $file\n";
-
- open (SRCFILE, $file)
- || die "Can't open $file: $!";
- my $in_comment_block = 0;
- my $symbol;
- my ($in_description, $in_return);
- my ($description, $return_desc, $return_start);
- my $current_param;
- my @params;
- while (<SRCFILE>) {
- # Look for the start of a comment block.
- if (!$in_comment_block) {
- if (m%^\s*/\*\*\s%) {
-# print "Found comment block start\n";
- $in_comment_block = 1;
-
- # Reset all the symbol data.
- $symbol = "";
- $in_description = 0;
- $in_return = 0;
- $description = "";
- $return_desc = "";
- $current_param = -1;
- @params = ();
- }
- next;
- }
-
- # We're in a comment block. Check if we've found the end of it.
- if (m%^\s*\*+/%) {
-# print "Found comment block end: $symbol\n";
- if (!$symbol) {
- print <<EOF;
-WARNING: symbol name not found in comment block.
- $file line $.
-EOF
- } else {
- # Add the return value description onto the end of the params.
- if ($return_desc) {
- push (@params, "Returns");
- push (@params, $return_desc);
- }
- $SourceSymbolDocs{$symbol} = $description;
- $SourceSymbolParams{$symbol} = [ @params ];
- }
-
- $in_comment_block = 0;
- next;
- }
-
- # Get rid of ' * ' at start of every line in the comment block.
- s%^\s*\*\s*%%;
- # But make sure we don't get rid of the newline at the end.
- if (!$_) {
- $_ = "\n";
- }
-
- # If we haven't found the symbol name yet, look for it.
- if (!$symbol) {
- if (m%^(\w+)\s*:?%) {
- $symbol = $1;
- }
- next;
- }
-
- # If we're in the return value description, add it to the end.
- if ($in_return) {
- # If we find another valid returns line, we assume that the first
- # one was really part of the description.
- if (m%^(returns:|return\s+value:|returns\s*)%i) {
- $description .= $return_start . $return_desc;
- $return_start = $1;
- $return_desc = $';
- } else {
- $return_desc .= $_;
- }
- next;
- }
-
- # If we're in the description part, check for the 'Return' line.
- # If that isn't found, add the text to the end.
- if ($in_description) {
- # Get rid of 'Description:'
- s%^Description:%%;
-
- if (m%^(returns:|return\s+value:|returns\s*)%i) {
-# print "RETURNS: $_";
- $return_start = $1;
- $return_desc = $';
- $in_return = 1;
- next;
- }
-
- $description .= $_;
- next;
- }
-
- # We must be in the parameters. Check for the empty line at the end.
- if (m%^$%) {
- $in_description = 1;
- next;
- }
-
- # Look for a parameter name.
- if (m%^@(\S+)\s*:%) {
- my $param_name = $1;
-# print "Found parameter: $param_name\n";
- # Allow '...' as the Varargs parameter.
- if ($param_name eq "...") {
- $param_name = "Varargs";
- }
- push (@params, $param_name);
- push (@params, $');
- $current_param += 2;
- next;
- }
-
- # We must be in the middle of a parameter description, so add it on
- # to the last element in @params.
- if ($current_param == -1) {
- print <<EOF
-ERROR parsing comment block file : parameter expected -
- $file:$.
-EOF
- } else {
- $params[$#params] .= $_;
- }
- }
- close (SRCFILE);
-}
-
-
-#############################################################################
-# Function : MergeSourceDocumentation
-# Description : This merges documentation read from a source file into the
-# documentation read in from a template file.
-#
-# Parameter descriptions override any in the template files.
-# Function descriptions are placed before any description from
-# the template files.
-#
-# Arguments : none
-#############################################################################
-
-sub MergeSourceDocumentation {
- my $symbol;
- foreach $symbol (keys (%SymbolDocs)) {
- if (exists ($SourceSymbolDocs{$symbol})) {
- my $src_doc = $SourceSymbolDocs{$symbol};
- my $tmpl_doc = $SymbolDocs{$symbol};
- $tmpl_doc = defined ($tmpl_doc) ? $tmpl_doc : "";
- $src_doc =~ s/^\s+//;
- $src_doc =~ s/\s+$//;
-
- # Convert special SGML characters. I'm not sure if we want to do
- # this but currently there are a couple of '&'s in the source code
- # comment blocks which mess up the HTML output badly.
- $src_doc = &CreateValidSGML ($src_doc);
-
- # If there is a blank line, finish the paragraph and start another.
- if ($src_doc =~ s%\n{2,}%\n</para>\n<para>\n%g) {
-# print "Converted blank lines:\n$src_doc\n";
- }
- $SymbolDocs{$symbol} = "<para>\n$src_doc</para>\n$tmpl_doc";
-
- # The templates contain the definitive parameter names and order,
- # so we will not change that. We only override the actual text.
- my $tmpl_params = $SymbolParams{$symbol};
- if (!defined ($tmpl_params)) {
- next;
- }
-
- my $params = $SourceSymbolParams{$symbol};
- my $j;
- for ($j = 0; $j <= $#$tmpl_params; $j += 2) {
- my $tmpl_param_name = $$tmpl_params[$j];
- my $tmpl_param_desc = $$tmpl_params[$j + 1];
-
- # Try to find the param in the source comment documentation.
- my $found = 0;
- my $k;
- for ($k = 0; $k <= $#$params; $k += 2) {
- my $param_name = $$params[$k];
- my $param_desc = $$params[$k + 1];
-
- # We accept changed in case, since the Gnome source docs
- # contain a lot of these.
- if ("\L$param_name" eq "\L$tmpl_param_name") {
- $found = 1;
-
- # Override the description.
- $$tmpl_params[$j + 1] = &CreateValidSGML ($param_desc);
-
- # Set the name to "" to mark it as used.
- $$params[$k] = "";
- last;
- }
- }
-
- # Output a warning if the parameter is not found.
- if (!$found) {
- print <<EOF;
-WARNING: Parameter description missing in source code comment block -
- Func: $symbol Param: $tmpl_param_name.
-EOF
- }
- }
-
- # Now we output a warning if parameters have been described which
- # do not exist.
- for ($j = 0; $j <= $#$params; $j += 2) {
- my $param_name = $$params[$j];
- if ($param_name) {
- print <<EOF;
-WARNING: Parameter described in source code comment block but does not exist -
- Func: $symbol Param: $param_name.
-EOF
- }
- }
- }
- }
-}
-
-
-#############################################################################
-# LIBRARY FUNCTIONS - These functions are used in both gtkdoc-mkdb and
-# gtkdoc-mktmpl and should eventually be moved to a
-# separate library.
-#############################################################################
-
-#############################################################################
-# Function : ReadDeclarationsFile
-# Description : This reads in a file containing the function/macro/enum etc.
-# declarations.
-#
-# Note that in some cases there are several declarations with
-# the same name, e.g. for conditional macros. In this case we
-# set a flag in the %DeclarationConditional hash so the
-# declaration is not shown in the docs.
-#
-# If a macro and a function have the same name, e.g. for
-# gtk_object_ref, the function declaration takes precedence.
-#
-# Some opaque structs are just declared with 'typedef struct
-# _name name;' in which case the declaration may be empty.
-# The structure may have been found later in the header, so
-# that overrides the empty declaration.
-#
-# Arguments : $file - the declarations file to read
-# $override - if declarations in this file should override
-# any current declaration.
-#############################################################################
-
-sub ReadDeclarationsFile {
- my ($file, $override) = @_;
-
- if ($override == 0) {
- %Declarations = ();
- %DeclarationTypes = ();
- %DeclarationConditional = ();
- %DeclarationOutput = ();
- }
-
- open (INPUT, $file)
- || die "Can't open $file";
- my $declaration_type = "";
- my $declaration_name;
- my $declaration;
- while (<INPUT>) {
- if (!$declaration_type) {
- if (m/^<([^>]+)>/) {
- $declaration_type = $1;
- $declaration_name = "";
-# print "Found declaration: $declaration_type\n";
- $declaration = "";
- }
- } else {
- if (m%^<NAME>(.*)</NAME>%) {
- $declaration_name = $1;
- } elsif (m%^</$declaration_type>%) {
-# print "Found end of declaration: $declaration_name\n";
- # Check that the declaration has a name
- if ($declaration_name eq "") {
- print "ERROR: $declaration_type has no name $file:$.\n";
- }
-
- # Check if the symbol is already defined.
- if (defined ($Declarations{$declaration_name})
- && $override == 0) {
- # Function declarations take precedence.
- if ($DeclarationTypes{$declaration_name} eq 'FUNCTION') {
- # Ignore it.
- } elsif ($declaration_type eq 'FUNCTION') {
- $Declarations{$declaration_name} = $declaration;
- $DeclarationTypes{$declaration_name} = $declaration_type;
- } elsif ($DeclarationTypes{$declaration_name}
- eq $declaration_type) {
- # If the existing declaration is empty override it.
- if ($declaration_type eq 'STRUCT') {
- if ($Declarations{$declaration_name} =~ m/^\s*$/) {
- $Declarations{$declaration_name} = $declaration;
- } elsif ($declaration =~ m/^\s*$/) {
- # Ignore an empty declaration.
- } else {
- print "WARNING: Structure has multiple definitions: $declaration_name\n";
- }
-
- } else {
- # set flag in %DeclarationConditional hash for
- # multiply defined macros/typedefs.
- $DeclarationConditional{$declaration_name} = 1;
- }
- } else {
- print "ERROR: $declaration_name has multiple definitions\n";
- }
- } else {
- $Declarations{$declaration_name} = $declaration;
- $DeclarationTypes{$declaration_name} = $declaration_type;
- }
- $declaration_type = "";
- } else {
- $declaration .= $_;
- }
- }
- }
- close (INPUT);
-}
-
-
-#############################################################################
-# Function : ReadSignalsFile
-# Description : This reads in an existing file which contains information on
-# all GTK signals. It creates the arrays @SignalNames and
-# @SignalPrototypes containing info on the signals. The first
-# line of the SignalPrototype is the return type of the signal
-# handler. The remaining lines are the parameters passed to it.
-# The last parameter, "gpointer user_data" is always the same
-# so is not included.
-# Arguments : $file - the file containing the signal handler prototype
-# information.
-#############################################################################
-
-sub ReadSignalsFile {
- my ($file) = @_;
-
- my $in_signal = 0;
- my $signal_object;
- my $signal_name;
- my $signal_returns;
- my $signal_prototype;
-
- # Reset the signal info.
- @SignalObjects = ();
- @SignalNames = ();
- @SignalReturns = ();
- @SignalPrototypes = ();
-
- if (! -f $file) {
- return;
- }
- if (!open (INPUT, $file)) {
- warn "Can't open $file - skipping signals\n";
- return;
- }
- while (<INPUT>) {
- if (!$in_signal) {
- if (m/^<SIGNAL>/) {
- $in_signal = 1;
- $signal_object = "";
- $signal_name = "";
- $signal_returns = "";
- $signal_prototype = "";
- }
- } else {
- if (m/^<NAME>(.*)<\/NAME>/) {
- $signal_name = $1;
- if ($signal_name =~ m/^(.*)::(.*)$/) {
- $signal_object = $1;
- $signal_name = $2;
-# print "Found signal: $signal_name\n";
- } else {
- print "Invalid signal name: $signal_name\n";
- }
- } elsif (m/^<RETURNS>(.*)<\/RETURNS>/) {
- $signal_returns = $1;
- } elsif (m%^</SIGNAL>%) {
-# print "Found end of signal: ${signal_object}::${signal_name}\nReturns: ${signal_returns}\n${signal_prototype}";
- push (@SignalObjects, $signal_object);
- push (@SignalNames, $signal_name);
- push (@SignalReturns, $signal_returns);
- push (@SignalPrototypes, $signal_prototype);
- $in_signal = 0;
- } else {
- $signal_prototype .= $_;
- }
- }
- }
- close (INPUT);
-}
-
-
-#############################################################################
-# Function : ReadTemplateFile
-# Description : This reads in the manually-edited documentation file
-# corresponding to the file currently being created, so we can
-# insert the documentation at the appropriate places.
-# It outputs %SymbolTypes, %SymbolDocs and %SymbolParams, which
-# is a hash of arrays.
-# NOTE: This function is duplicated in gtkdoc-mkdb (but
-# slightly different).
-# Arguments : $docsfile - the template file to read in.
-# $skip_unused_params - 1 if the unused parameters should be
-# skipped.
-#############################################################################
-
-sub ReadTemplateFile {
- my ($docsfile, $skip_unused_params) = @_;
-
-# print "Reading $docsfile\n";
- if (! -f $docsfile) {
- print "File doesn't exist: $docsfile\n";
- return;
- }
-
- my $current_type = ""; # Type of symbol being read.
- my $current_symbol = ""; # Name of symbol being read.
- my $symbol_doc = ""; # Description of symbol being read.
- my @params; # Parameter names and descriptions of current
- # function/macro/function typedef.
- my $current_param = -1; # Index of parameter currently being read.
- # Note that the param array contains pairs
- # of param name & description.
- my $in_unused_params = 0; # True if we are reading in the unused params.
-
- open (DOCS, $docsfile)
- || die "Can't open file $docsfile: $!";
- while (<DOCS>) {
- if (m/^<!-- ##### ([A-Z_]+) (\S+) ##### -->/) {
- my $type = $1;
- my $symbol = $2;
- if ($symbol eq "Title"
- || $symbol eq "Short_Description"
- || $symbol eq "Long_Description"
- || $symbol eq "See_Also") {
- $symbol = $docsfile . ":" . $symbol;
-# print "Found symbol: $symbol\n";
- }
-
- # Store previous symbol, but remove any trailing blank lines.
- if ($current_symbol ne "") {
- $symbol_doc =~ s/\s+$//;
- $SymbolTypes{$current_symbol} = $current_type;
- $SymbolDocs{$current_symbol} = $symbol_doc;
- if ($current_param >= 0) {
- $SymbolParams{$current_symbol} = [ @params ];
- } else {
- # Delete any existing params in case we are overriding a
- # previously read template.
- delete $SymbolParams{$current_symbol};
- }
- }
- $current_type = $type;
- $current_symbol = $symbol;
- $current_param = -1;
- $in_unused_params = 0;
- $symbol_doc = "";
- @params = ();
-
- } elsif (m/^<!-- # Unused Parameters # -->/) {
-# print "DEBUG: Found unused parameters\n";
- $in_unused_params = 1;
- next;
-
- } elsif ($in_unused_params && $skip_unused_params) {
- # When outputting the DocBook we skip unused parameters.
-# print "DEBUG: Skipping unused param: $_";
- next;
-
- } else {
- # Check if param found
- if (s/^\@(\S+):\s*//) {
- my $param_name = $1;
- # Allow variations of 'Returns'
- if ($param_name =~ m/^[Rr]eturns?$/) {
- $param_name = "Returns";
- }
-# print "Found param: $param_name\n";
- push (@params, $param_name);
- push (@params, $_);
- $current_param += 2;
- next;
- }
-
- if ($current_param >= 0) {
- $params[$current_param] .= $_;
- } else {
- $symbol_doc .= $_;
- }
- }
- }
-
- # Remember to finish the current symbol doccs.
- if ($current_symbol ne "") {
- $symbol_doc =~ s/\s+$//;
- $SymbolTypes{$current_symbol} = $current_type;
- $SymbolDocs{$current_symbol} = $symbol_doc;
- if ($current_param >= 0) {
- $SymbolParams{$current_symbol} = [ @params ];
- } else {
- delete $SymbolParams{$current_symbol};
- }
- }
-
- close (DOCS);
-}
-
-
-#############################################################################
-# Function : ReadObjectHierarchy
-# Description : This reads in the $MODULE-hierarchy.txt file containing all
-# the GtkObject subclasses described in this module (and their
-# ancestors).
-# It places them in the @Objects array, and places their level
-# in the widget hierarchy in the @ObjectLevels array, at the
-# same index. GtkObject, the root object, has a level of 1.
-#
-# FIXME: the version in gtkdoc-mkdb also generates tree_index.sgml
-# as it goes along, this should be split out into a separate
-# function.
-#
-# Arguments : none
-#############################################################################
-
-sub ReadObjectHierarchy {
- @Objects = ();
- @ObjectLevels = ();
-
- if (! -f $OBJECT_TREE_FILE) {
- return;
- }
- if (!open (INPUT, $OBJECT_TREE_FILE)) {
- warn "Can't open $OBJECT_TREE_FILE - skipping object tree\n";
- return;
- }
- open (OUTPUT, ">$SGML_OUTPUT_DIR/tree_index.sgml")
- || die "Can't create $SGML_OUTPUT_DIR/tree_index.sgml";
- print (OUTPUT "<literallayout>\n");
-
- while (<INPUT>) {
- if (m/\S+/) {
- my $object = $&;
- my $level = (length($`)) / 2 + 1;
-# print ("Level: $level Object: $object\n");
-
- my $xref = &MakeXRef ($object);
- print (OUTPUT ' ' x ($level * 4), "$xref\n");
- push (@Objects, $object);
- push (@ObjectLevels, $level);
- }
- }
- print (OUTPUT "</literallayout>\n");
-
- close (INPUT);
- close (OUTPUT);
-
- &OutputObjectList;
-}
-
-
-#############################################################################
-# Function : ReadArgsFile
-# Description : This reads in an existing file which contains information on
-# all GTK args. It creates the arrays @ArgObjects, @ArgNames,
-# @ArgTypes and @ArgFlags containing info on the args.
-# Arguments : $file - the file containing the arg information.
-#############################################################################
-
-sub ReadArgsFile {
- my ($file) = @_;
-
- my $in_arg = 0;
- my $arg_object;
- my $arg_name;
- my $arg_type;
- my $arg_flags;
-
- # Reset the signal info.
- @ArgObjects = ();
- @ArgNames = ();
- @ArgTypes = ();
- @ArgFlags = ();
-
- if (! -f $file) {
- return;
- }
- if (!open (INPUT, $file)) {
- warn "Can't open $file - skipping args\n";
- return;
- }
- while (<INPUT>) {
- if (!$in_arg) {
- if (m/^<ARG>/) {
- $in_arg = 1;
- $arg_object = "";
- $arg_name = "";
- $arg_type = "";
- $arg_flags = "";
- }
- } else {
- if (m/^<NAME>(.*)<\/NAME>/) {
- $arg_name = $1;
- if ($arg_name =~ m/^(.*)::(.*)$/) {
- $arg_object = $1;
- $arg_name = $2;
-# print "Found arg: $arg_name\n";
- } else {
- print "Invalid arg name: $arg_name\n";
- }
- } elsif (m/^<TYPE>(.*)<\/TYPE>/) {
- $arg_type = $1;
- } elsif (m/^<FLAGS>(.*)<\/FLAGS>/) {
- $arg_flags = $1;
- } elsif (m%^</ARG>%) {
-# print "Found end of arg: ${arg_object}::${arg_name}\n${arg_type} : ${arg_flags}\n";
- push (@ArgObjects, $arg_object);
- push (@ArgNames, $arg_name);
- push (@ArgTypes, $arg_type);
- push (@ArgFlags, $arg_flags);
- $in_arg = 0;
- }
- }
- }
- close (INPUT);
-}
-
-
-#############################################################################
-# Function : CheckIsObject
-# Description : Returns 1 if the given name is a GtkObject or a subclass.
-# It uses the global @Objects array.
-# Note that the @Objects array only contains classes in the
-# current module and their ancestors - not all GTK classes.
-# Arguments : $name - the name to check.
-#############################################################################
-
-sub CheckIsObject {
- my ($name) = @_;
-
- my $object;
- foreach $object (@Objects) {
- if ($object eq $name) {
- return 1;
- }
- }
- return 0;
-}
-
-
-#############################################################################
-# Function : ParseStructDeclaration
-# Description : This function takes a structure declaration and
-# breaks it into individual type declarations.
-# Arguments : $declaration - the declaration to parse
-# $is_object - true if this is an object structure
-# $typefunc - function reference to apply to type
-# $namefunc - function reference to apply to name
-#############################################################################
-
-sub ParseStructDeclaration {
- my ($declaration, $is_object, $typefunc, $namefunc) = @_;
-
- # Remove all private parts of the declaration
-
- # For objects, assume private
- if ($is_object) {
- $declaration =~ s!(struct\s+\w*\s*\{)
- .*?
- (?:/\*\s*<\s*public\s*>\s*\*/|(?=\}))!$1!msgx;
- }
-
- $declaration =~ s!\n?[ \t]*/\*\s*<\s*private\s*>\s*\*/
- .*?
- (?:/\*\s*<\s*public\s*>\s*\*/|(?=\}))!!msgx;
-
- # Remove all other comments;
- $declaration =~ s@/\*([^*]+|\*(?!/))*\*/@ @g;
-
- my @result = ();
-
- if ($declaration =~ /^\s*$/) {
- return @result;
- }
-
- # Prime match after "struct {" declaration
- if (!scalar($declaration =~ m/struct\s+\w*\s*\{/msg)) {
- die "Structure declaration '$declaration' does not begin with struct [NAME] {\n";
- }
-
- # Treat lines in sequence, allowing singly nested anonymous structs
- # and unions.
- while ($declaration =~ m/\s*([^{;]+(\{[^\}]*\}[^{;]+)?);/msg) {
- my $line = $1;
-
- last if $line =~ /^\s*\}\s*\w*\s*$/;
-
- # FIXME: Just ignore nested structs and unions for now
- next if $line =~ /{/;
-
- # FIXME: The regexes here are the same as in OutputFunction;
- # this functionality should be separated out.
-
- if ($line =~ m/^
- (const\s+|unsigned\s+)*(struct\s+)? # mod1
- (\w+)\s* # type
- (\**)\s* # ptr1
- (const\s+)? # mod2
- (\**)?\s* # ptr2
- (\w+(?:\s*,\s*\w+)*)\s* # name
- (?:((?:\[[^\]]*\]\s*)+) | # array
- (:\s*\d+))?\s* # bits
- $/x) {
- my $mod1 = defined($1) ? $1 : "";
- if (defined($2)) { $mod1 .= $2; }
- my $type = $3;
- my $ptr1 = $4;
- my $mod2 = defined($5) ? $5 : "";
- my $ptr2 = $6;
- my $name = $7;
- $ptr1 = " " . $ptr1;
- my $array = defined($8) ? $8 : "";
- my $bits = defined($9) ? " $9" : "";
- my $ptype = defined $typefunc ? $typefunc->($type) : $type;
-
- # FIXME:
- # As a hack, we allow the "name" to be of the form
- # "a, b, c". This isn't the correct C syntax, but
- # at least we get "gint16 x, y" right. Such constructs
- # should really be completely removed from the source.
- # Or we should really try to understand the C syntax
- # here...
-
- my @names = split /\s*,\s*/, $name;
- for my $n (@names) {
- push @result, $n;
- if (defined $namefunc) {
- $n = $namefunc->($n);
- }
- push @result, "$mod1$ptype$ptr1$mod2$ptr2$n$array$bits";
- }
-
- # Try to match structure members which are functions
- } elsif ($line =~ m/^
- (const\s+|unsigned\s+)*(struct\s+)? # mod1
- (\w+)\s* # type
- (\**)\s* # ptr1
- (const\s+)? # mod2
- \(\s*\*\s*(\w+)\s*\)\s* # name
- \(([^)]*)\)\s* # func_params
- $/x) {
-
- my $mod1 = defined($1) ? $1 : "";
- if (defined($2)) { $mod1 .= $2; }
- my $type = $3;
- my $ptr1 = $4;
- my $mod2 = defined($5) ? $5 : "";
- my $name = $6;
- my $func_params = $7;
- my $ptype = defined $typefunc ? $typefunc->($type) : $type;
- my $pname = defined $namefunc ? $namefunc->($name) : $name;
-
- push @result, $name;
- push @result, "$mod1$ptype$ptr1$mod2 (*$pname) ($func_params)";
-
- } else {
- warn "Cannot parse structure field $line";
- }
- }
-
- return @result;
-}
-
-
-#############################################################################
-# Function : ParseEnumDeclaration
-# Description : This function takes a enumeration declaration and
-# breaks it into individual enum member declarations.
-# Arguments : $declaration - the declaration to parse
-#############################################################################
-
-sub ParseEnumDeclaration {
- my ($declaration, $is_object) = @_;
-
- # Remove comments;
- $declaration =~ s@/\*([^*]+|\*(?!/))*\*/@ @g;
-
- my @result = ();
-
- if ($declaration =~ /^\s*$/) {
- return @result;
- }
-
- # Remove parenthesized expressions (in macros like GTK_BLAH = BLAH(1,3))
- # to avoid getting confused by commas they might contain. This
- # doesn't handle nested parentheses correctly.
-
- $declaration =~ s/\([^)]+\)//g;
-
- # Prime match after "typedef enum {" declaration
- if (!scalar($declaration =~ m/typedef\s+enum\s*\{/msg)) {
- die "Enum declaration '$declaration' does not begin with typedef enum {\n";
- }
-
- # Treat lines in sequence.
- while ($declaration =~ m/\s*([^,\}]+)([,\}])/msg) {
- my $line = $1;
- my $terminator = $2;
-
- if ($line =~ m/^(\w+)\s*(=.*)?$/msg) {
- push @result, $1;
-
- # Special case for GIOCondition, where the values are specified by
- # macros which expand to include the equal sign like '=1'.
- } elsif ($line =~ m/^(\w+)\s*GLIB_SYSDEF_POLL/msg) {
- push @result, $1;
-
- # Special case include of <gdk/gdkcursors.h>, just ignore it
- } elsif ($line =~ m/^#include/) {
- last;
-
- } else {
- warn "Cannot parse enumeration member $line";
- }
-
- last if $terminator eq '}';
- }
-
- return @result;
-}
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# gtk-doc - GTK DocBook documentation generator.
-# Copyright (C) 1998 Damon Chaplin
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-
-#############################################################################
-# Script : gtkdoc-mktmpl
-# Description : This creates or updates the template files which contain the
-# manually-edited documentation. (A 'template' is a simple text
-# form which is filled in with the description of a function,
-# macro, enum, or struct. For functions and macros it also
-# contains fields for describing the parameters.)
-#
-# This script reads in the existing templates, found in
-# tmpl/*.sgml, moves these files to tmpl/*.sgml.bak, and then
-# recreates the .sgml files according to the structure given in
-# the file $MODULE-sections.txt.
-#
-# Any new templates added, or new function parameters, are
-# marked with 'FIXME' so you can do a grep to see which parts
-# need updating.
-#
-# Any templates which are no longer used (i.e. they are remove
-# from $MODULE-sections.txt) are placed in the file
-# tmpl/$MODULE-unused.txt. If they are included again later
-# they are automatically copied back into position.
-# If you are certain that these templates will never be used
-# again you can delete them from $MODULE-unused.txt.
-#
-# Any parameters to functions which are no longer used are
-# separated from the rest of the parameters with the line
-# '<!-- # Unused Parameters # -->'. It may be that the parameter
-# name has just been changed, in which case you can copy the
-# description to the parameter with the new name. You can delete
-# the unused parameter descriptions when no longer needed.
-#############################################################################
-
-use strict;
-use Getopt::Long;
-
-# Options
-
-# name of documentation module
-my $MODULE;
-my $TMPL_DIR;
-my $FLAG_CHANGES;
-
-my %optctl = (module => \$MODULE,
- 'flag-changes' => \$FLAG_CHANGES,
- 'output-dir' => \$TMPL_DIR);
-GetOptions(\%optctl, "module=s", "flag-changes!", "output-dir:s");
-
-my $ROOT_DIR = ".";
-
-# The directory containing the template files.
-$TMPL_DIR = $TMPL_DIR ? $TMPL_DIR : "$ROOT_DIR/tmpl";
-
-# This file contains the object hierarchy.
-my $OBJECT_TREE_FILE = "$ROOT_DIR/$MODULE.hierarchy";
-
-# The file containing signal handler prototype information.
-my $SIGNALS_FILE = "$ROOT_DIR/$MODULE.signals";
-
-# The file containing Arg information.
-my $ARGS_FILE = "$ROOT_DIR/$MODULE.args";
-
-# Set the flag to indicate changes, if requested.
-my $CHANGES_FLAG = $FLAG_CHANGES ? "FIXME" : "";
-
-# These global arrays store information on signals. Each signal has an entry
-# in each of these arrays at the same index, like a multi-dimensional array.
-my @SignalObjects; # The GtkObject which emits the signal.
-my @SignalNames; # The signal name.
-my @SignalReturns; # The return type.
-my @SignalPrototypes; # The rest of the prototype of the signal handler.
-
-# These global arrays store information on Args. Each Arg has an entry
-# in each of these arrays at the same index, like a multi-dimensional array.
-my @ArgObjects; # The GtkObject which has the Arg.
-my @ArgNames; # The Arg name.
-my @ArgTypes; # The Arg type - gint, GtkArrowType etc.
-my @ArgFlags; # How the Arg can be used - readable/writable etc.
-
-# These global hashes store declaration info keyed on a symbol name.
-my %Declarations;
-my %DeclarationTypes;
-my %DeclarationConditional;
-my %DeclarationOutput;
-
-# These global hashes store the existing documentation.
-my %SymbolDocs;
-my %SymbolTypes;
-my %SymbolParams;
-
-# These global arrays store GtkObject and subclasses and the hierarchy.
-my @Objects;
-my @ObjectLevels;
-
-&ReadSignalsFile ($SIGNALS_FILE);
-&ReadArgsFile ($ARGS_FILE);
-&ReadObjectHierarchy;
-
-&ReadExistingTemplates;
-&BackupExistingTemplates;
-&UpdateTemplates ("$ROOT_DIR/$MODULE-sections.txt");
-&OutputUnusedTemplates;
-&CheckAllDeclarationsOutput;
-
-
-#############################################################################
-# Function : ReadExistingTemplates
-# Description : This reads in all the existing documentation, into the global
-# variables %SymbolDocs, %SymbolTypes, and %SymbolParams (a
-# hash of arrays).
-# Arguments : none
-#############################################################################
-
-sub ReadExistingTemplates {
- %SymbolDocs = ();
- %SymbolTypes = ();
- %SymbolParams = ();
-
- # Read the unused docs first, so they get overridden by any real docs.
- # (though this shouldn't happen often).
- my $unused_doc = "$TMPL_DIR/$MODULE-unused.sgml";
- if (-e $unused_doc) {
- &ReadTemplateFile ($unused_doc, 0);
- }
-
- while (<$TMPL_DIR/*.sgml>) {
-# print "Reading $_\n";
- if ($_ eq $unused_doc) {
-# print "skipping $unused_doc\n";
- } else {
- &ReadTemplateFile ($_, 0);
- }
- }
-}
-
-
-#############################################################################
-# Function : BackupExistingTemplates
-# Description : This moves all existing .sgml to .sgml.bak.
-# Arguments : none
-#############################################################################
-
-sub BackupExistingTemplates {
- while (<$TMPL_DIR/*.sgml>) {
- my $backup_file = $_ . ".bak";
-# print "Backing up $_ to $backup_file\n";
- if (-e $backup_file) {
- unlink ($backup_file)
- || die "Can't delete old backup file: $backup_file";
- }
- rename ($_, $backup_file)
- || die "Can't move $_ to $backup_file";
- }
-}
-
-
-#############################################################################
-# Function : UpdateTemplates
-# Description : This collects the output for each section of the docs, and
-# outputs each file when the end of the section is found.
-# Arguments : $file - the file containing the sections of the docs.
-#############################################################################
-
-sub UpdateTemplates {
- my ($file) = @_;
-# print "Reading: $file\n";
-
- open (INPUT, $file)
- || die "Can't open $file";
-
- # Create the top output directory if it doesn't exist.
- if (! -e $TMPL_DIR) {
- mkdir ("$TMPL_DIR", 0777)
- || die "Can't create directory: $TMPL_DIR";
- }
-
- my $title = "";
- my $subsection = "";
- my $output;
- while (<INPUT>) {
- if (m/^#/) {
- next;
-
- } elsif (m/^<SECTION>/) {
- $output = "";
-
- } elsif (m/^<SUBSECTION\s*(.*)>/i) {
- $subsection = $1;
- next;
-
- } elsif (m/^<TITLE>(.*)<\/TITLE>/) {
- $title = $1;
-# print "Section: $title\n";
-
- # We don't want warnings if object & class structs aren't used.
-# $DeclarationOutput{$title} = 1;
- $DeclarationOutput{"${title}Class"} = 1;
-
- } elsif (m/^<FILE>(.*)<\/FILE>/) {
- $file = $1;
-
- } elsif (m/^<INCLUDE>(.*)<\/INCLUDE>/) {
- next;
-
- } elsif (m/^<\/SECTION>/) {
- if ($title eq "") {
- $title = $file;
- }
-# print "End of section: $title\n";
-
- $file =~ s/\s/_/g;
- $file .= ".sgml";
-
- &OutputTemplateFile ($file, $title, \$output);
-
- $title = "";
- $subsection = "";
-
- } elsif (m/^(\S+)/) {
- my $symbol = $1;
-# print " Symbol: $symbol\n";
-
- my $declaration = $Declarations{$1};
- if (defined ($declaration)) {
- # We don't want templates for standard macros/functions of
- # GtkObjects or private declarations.
- if ($subsection ne "Standard" && $subsection ne "Private") {
- $output .= &OutputDeclaration ($DeclarationTypes {$symbol},
- $symbol, $declaration);
- }
-
- # Note that the declaration has been output.
- $DeclarationOutput{$symbol} = 1;
-
- if ($declaration eq '##conditional##') {
-# print "Conditional $DeclarationTypes{$symbol}\n";
- }
- } else {
- print "WARNING: No declaration for: $1\n";
- }
- }
- }
- close (INPUT);
-}
-
-
-#############################################################################
-# Function : CheckAllDeclarationsOutput
-# Description : This steps through all the declarations that were loaded, and
-# makes sure that each one has been output, by checking the
-# corresponding flag in the %DeclarationOutput hash. It is
-# intended to check that any new declarations in new versions
-# of GTK/Gnome get added to the $MODULE-sections.txt file.
-# Arguments : none
-#############################################################################
-
-sub CheckAllDeclarationsOutput {
- my $num_unused = 0;
- open (UNUSED, ">$ROOT_DIR/$MODULE-unused.txt")
- || die "Can't open $ROOT_DIR/$MODULE-unused.txt";
- my ($symbol);
- foreach $symbol (keys (%Declarations)) {
- if (!defined ($DeclarationOutput{$symbol})) {
- print (UNUSED "$symbol\n");
- $num_unused++;
- }
- }
- close (UNUSED);
- if ($num_unused != 0) {
- print <<EOF;
-=============================================================================
-WARNING: $num_unused unused declarations.
- These can be found in $MODULE-unused.txt.
- They should be added to $MODULE-sections.txt in the appropriate place.
-=============================================================================
-EOF
- }
-}
-
-
-#############################################################################
-# Function : OutputDeclaration
-# Description : This returns the template for one symbol & declaration.
-# Note that it uses the global %SymbolDocs and %SymbolParams to
-# lookup any existing documentation.
-# Arguments : $type - the type of the symbol ('FUNCTION'/'MACRO' etc.)
-# $symbol - the symbol name.
-# $declaration - the declaration of the symbol.
-#############################################################################
-
-sub OutputDeclaration {
- my ($type, $symbol, $declaration) = @_;
- my ($output) = "";
-
-# print "Outputting $type: $symbol\n";
-
- # See if symbol already has a description.
- my ($symbol_desc) = $SymbolDocs{$symbol};
- my ($template_exists);
- if (defined ($symbol_desc)) {
- $template_exists = 1;
- $symbol_desc =~ s/\s+$//;
- } else {
- $template_exists = 0;
- $symbol_desc = "<para>\n$CHANGES_FLAG\n</para>";
- }
-
- $output .= <<EOF;
-<!-- ##### $type $symbol ##### -->
-$symbol_desc
-
-EOF
-
- # For functions, function typedefs and macros, we output the arguments.
- # For functions and function typedefs we also output the return value.
- if ($type eq "FUNCTION" || $type eq "USER_FUNCTION") {
- # Take out the return type
- $declaration =~ s/<RETURNS>\s*(const\s+|unsigned\s+)*(\w+)\s*(\**)\s*<\/RETURNS>\n//;
- my ($ret_type) = $2;
-
- my ($param_num) = 0;
- my ($name);
- while ($declaration ne "") {
- if ($declaration =~ s/^[\s,]+//) {
- # skip whitespace and commas
- next;
-
- } elsif ($declaration =~ s/^void\s*[,\n]//) {
- if ($param_num != 0) {
- print "WARNING: void used as parameter in function $symbol\n";
- }
-
- } elsif ($declaration =~ s/^...\s*[,\n]//) {
- $output .= &OutputParam ($symbol, "Varargs",
- $template_exists, 1, "");
-
- # Try to match a standard parameter.
- } elsif ($declaration =~ s/^(const\s+|unsigned\s+)*(struct\s+)?(\w+)\s*(\**)\s*(const\s+)?(\**)?\s*(\w+)?\s*(\[\d*\])?\s*[,\n]//) {
- if (defined ($7)) {
- $name = $7;
- } else {
- $name = "Param" . ($param_num + 1);
- }
- $output .= &OutputParam ($symbol, $name, $template_exists, 1,
- "");
-
- # Try to match parameters which are functions.
- } elsif ($declaration =~ s/^(const\s+|unsigned\s+)*(struct\s+)?(\w+)\s*(\**)\s*(const\s+)?\(\s*\*\s*(\w+)\s*\)\s*\(([^)]*)\)\s*[,\n]//) {
- $name = $6;
- $output .= &OutputParam ($symbol, $name, $template_exists, 1,
- "");
-
- } else {
- print "###Can't parse args for function $symbol: $declaration\n";
- last;
- }
- $param_num++;
- }
-
-
- if ($ret_type ne "void") {
- $output .= &OutputParam ($symbol, "Returns", $template_exists, 1,
- "");
- }
- $output .= &OutputOldParams ($symbol);
- $output .= "\n";
- }
-
- if ($type eq "MACRO") {
- if ($declaration =~ m/^\s*#\s*define\s+\w+\(([^\)]*)\)/) {
- my ($param);
- foreach $param (split (/,/, $1)) {
- $param =~ s/^\s+//;
- $param =~ s/\s*$//;
- if ($param =~ m/\S/) {
- $output .= &OutputParam ($symbol, $param, $template_exists,
- 1, "");
- }
- }
- }
- $output .= &OutputParam ($symbol, "Returns", $template_exists, 0, "");
- $output .= &OutputOldParams ($symbol);
- $output .= "\n";
- }
-
- if ($type eq "STRUCT") {
- my $is_object_struct = CheckIsObject ($symbol);
- my @fields = ParseStructDeclaration($declaration, $is_object_struct);
-
- for (my $i = 0; $i <= $#fields; $i += 2) {
- my $field_name = $fields[$i];
- $output .= &OutputParam ($symbol, $field_name, $template_exists, 1, "");
- }
- }
-
- if ($type eq "ENUM") {
- my @members = ParseEnumDeclaration($declaration);
-
- for my $member (@members) {
- $output .= &OutputParam ($symbol, $member, $template_exists, 1, "");
- }
- }
-
- $output .= "\n";
-
- # Remove the used docs from the hashes.
- if ($template_exists) {
- delete $SymbolDocs{$symbol};
- delete $SymbolParams{$symbol};
- }
-
- return $output;
-}
-
-
-#############################################################################
-# Function : OutputParam
-# Description : This outputs the part of a template for one parameter.
-# It first checks if the parameter is already described, and if
-# so it uses that description, and clears it so it isn't output
-# as an old param.
-# Arguments : $symbol - the symbol (function or macro) name.
-# $param_to_output - the parameter to add.
-# $template_exists - TRUE if the template already existed in
-# template files. If it did, then we will flag any changes
-# with 'FIXME'.
-# $force_output - TRUE if the parameter should be output even
-# if it didn't already exist in the template. (The return
-# values of macros are added manually if required, and so we
-# never add it here - we only copy it if it already exists.)
-# $default_description - the default description of the
-# parameter to be used if it doesn't already exist. (Signal
-# handlers have a few common parameters.)
-#############################################################################
-
-sub OutputParam {
- my ($symbol, $param_to_output, $template_exists,
- $force_output, $default_description) = @_;
- my ($j);
-
- my ($params) = $SymbolParams{$symbol};
- if (defined ($params)) {
- for ($j = 0; $j <= $#$params; $j += 2) {
- my $param_name = $$params[$j];
- my $param_desc = $$params[$j + 1];
-
- if ($param_name eq $param_to_output) {
- $param_desc =~ s/\s+$//;
- $$params[$j] = "";
- $$params[$j + 1] = "";
- return "\@$param_name: $param_desc\n";
- }
- }
- }
-
- # If the template was already in a file, flag the new parameter.
- # If not, the template itself will be flagged, so we don't need to flag
- # all the new parameters as well.
- if ($force_output) {
- if ($default_description ne "") {
- $default_description =~ s/\s+$//;
- return "\@$param_to_output: $default_description\n";
- } else {
- if ($template_exists) {
- return "\@$param_to_output: $CHANGES_FLAG\n";
- } else {
- return "\@$param_to_output: \n";
- }
- }
- }
- return "";
-}
-
-
-#############################################################################
-# Function : OutputOldParams
-# Description : This returns all the existing documentation for parameters of
-# the given function/macro/signal symbol which are unused, with
-# a comment before them.
-# Arguments : $symbol - the symbol (function/macro/signal) name.
-#############################################################################
-
-sub OutputOldParams {
- my ($symbol) = @_;
- my $output = "";
-
- my ($params) = $SymbolParams{$symbol};
- if (defined ($params)) {
- my $j;
- for ($j = 0; $j <= $#$params; $j += 2) {
- my $param_name = $$params[$j];
- my $param_desc = $$params[$j + 1];
-
- if ($param_name ne "") {
- $param_desc =~ s/\s+$//;
- $output .= "\@$param_name: $param_desc\n";
- }
- }
- }
- if ($output) {
- $output = "<!-- # Unused Parameters # -->\n" . $output;
- }
- return $output;
-}
-
-
-#############################################################################
-# Function : OutputTemplateFile
-# Description : This outputs one template file.
-# Arguments : $file - the basename of the file to output.
-# $title - the title from the $MODULE-sections.txt file. This
-# will be overridden by any title given in the template file.
-# $output - reference to the templates to output.
-#############################################################################
-
-sub OutputTemplateFile {
- my ($file, $title, $output) = @_;
-
- my ($short_desc, $long_desc, $see_also);
-
- if (defined ($SymbolDocs{"$TMPL_DIR/$file:Title"})) {
- $title = $SymbolDocs{"$TMPL_DIR/$file:Title"};
- delete $SymbolDocs{"$TMPL_DIR/$file:Title"};
- }
- if (defined ($SymbolDocs{"$TMPL_DIR/$file:Short_Description"})) {
- $short_desc = $SymbolDocs{"$TMPL_DIR/$file:Short_Description"};
- delete $SymbolDocs{"$TMPL_DIR/$file:Short_Description"};
- } else {
- $short_desc = "";
- }
- if (defined ($SymbolDocs{"$TMPL_DIR/$file:Long_Description"})) {
- $long_desc = $SymbolDocs{"$TMPL_DIR/$file:Long_Description"};
- delete $SymbolDocs{"$TMPL_DIR/$file:Long_Description"};
- } else {
- $long_desc = "<para>\n\n</para>\n";
- }
- if (defined ($SymbolDocs{"$TMPL_DIR/$file:See_Also"})) {
- $see_also = $SymbolDocs{"$TMPL_DIR/$file:See_Also"};
- delete $SymbolDocs{"$TMPL_DIR/$file:See_Also"};
- } else {
- $see_also = "<para>\n\n</para>\n";
- }
-
- open (OUTPUT, ">$TMPL_DIR/$file")
- || die "Can't create $TMPL_DIR/$file";
-
- print (OUTPUT <<EOF);
-<!-- ##### SECTION Title ##### -->
-$title
-
-<!-- ##### SECTION Short_Description ##### -->
-$short_desc
-
-<!-- ##### SECTION Long_Description ##### -->
-$long_desc
-
-<!-- ##### SECTION See_Also ##### -->
-$see_also
-
-EOF
-
- print (OUTPUT $$output);
- &OutputSignalTemplates ($title);
- &OutputArgTemplates ($title);
- close (OUTPUT);
-}
-
-
-#############################################################################
-# Function : OutputSignalTemplates
-# Description : Outputs templates for signal handlers.
-# Arguments : $title - the title from the $MODULE-sections.txt file. If the
-# file is describing a GtkObject subclass, the title should
-# be the name of the class, e.g. 'GtkButton'.
-#############################################################################
-
-sub OutputSignalTemplates {
- my ($title) = @_;
-
- my $output = "";
- my ($i, $template_exists);
- for ($i = 0; $i <= $#SignalObjects; $i++) {
- if ($SignalObjects[$i] eq $title) {
-# print "Found signal: $SignalObjects[$i]\n";
- my ($symbol) = "$SignalObjects[$i]::$SignalNames[$i]";
-
- # See if symbol already has a description.
- my ($symbol_desc) = $SymbolDocs{$symbol};
- if (defined ($symbol_desc)) {
- $template_exists = 1;
- $symbol_desc =~ s/\s+$//;
- delete $SymbolDocs{$symbol};
- } else {
- $template_exists = 0;
- $symbol_desc = "<para>\n$CHANGES_FLAG\n</para>";
- }
-
- $output .= <<EOF;
-<!-- ##### SIGNAL $symbol ##### -->
-$symbol_desc
-
-EOF
-
- my @params = split ("[,\n]", $SignalPrototypes[$i]);
- my ($j, $name);
- for ($j = 0; $j <= $#params; $j++) {
- my $param = $params[$j];
- $param =~ s/^\s+//;
- $param =~ s/\s*$//;
- if ($param =~ m/^\s*$/) { next; }
- if ($param =~ m/^void$/) { next; }
-
- if ($param =~ m/^\s*(\w+)\s*(\**)\s*([\w\[\]]+)?\s*$/) {
- if (defined($3)) {
- $name = $3;
- } else {
- $name = "Param" . ($j + 1);
- }
- if ($j == 0) {
- $output .= &OutputParam ($symbol, $name,
- $template_exists, 1,
- "the object which received the signal.");
- } else {
- $output .= &OutputParam ($symbol, $name,
- $template_exists, 1, "");
- }
- }
- }
-
- if ($SignalReturns[$i] ne "void") {
- $output .= &OutputParam ($symbol, "Returns", $template_exists,
- 1, "");
- }
- $output .= &OutputOldParams ($symbol);
- $output .= "\n";
- }
- }
- print (OUTPUT $output);
-}
-
-
-#############################################################################
-# Function : OutputArgTemplates
-# Description : Outputs templates for Args.
-# Arguments : $title - the title from the $MODULE-sections.txt file. If the
-# file is describing a GtkObject subclass, the title should
-# be the name of the class, e.g. 'GtkButton'.
-#############################################################################
-
-sub OutputArgTemplates {
- my ($title) = @_;
-
- my $output = "";
- my $i;
- for ($i = 0; $i <= $#ArgObjects; $i++) {
- if ($ArgObjects[$i] eq $title) {
-# print "Found arg: $ArgObjects[$i]\n";
- # I've only used one colon so we don't clash with signals.
- my ($symbol) = "$ArgObjects[$i]:$ArgNames[$i]";
-
- # See if symbol already has a description.
- my ($symbol_desc) = $SymbolDocs{$symbol};
- if (defined ($symbol_desc)) {
- delete $SymbolDocs{$symbol};
- $symbol_desc =~ s/\s+$//;
- } else {
- $symbol_desc = "<para>\n$CHANGES_FLAG\n</para>";
- }
-
- $output .= <<EOF;
-<!-- ##### ARG $symbol ##### -->
-$symbol_desc
-
-EOF
- }
- }
- print (OUTPUT $output);
-}
-
-
-#############################################################################
-# Function : OutputUnusedTemplates
-# Description : This saves any unused documentation into $MODULE-unused.sgml.
-# Arguments : none
-#############################################################################
-
-sub OutputUnusedTemplates {
- my ($unused_file) = "$TMPL_DIR/$MODULE-unused.sgml";
- open (UNUSED, ">$unused_file")
- || die "Can't open file: $unused_file";
-
- my $output = "";
- my ($symbol, $symbol_desc);
- while (($symbol, $symbol_desc) = each (%SymbolDocs)) {
-# print "Unused: $symbol\n";
-
- my $type = $SymbolTypes{$symbol};
- if (!defined ($type)) {
- $type = "UNKNOWN";
- print "WARNING: Unused symbol $symbol has unknown type\n";
- }
-
- $output .= <<EOF;
-<!-- ##### $type $symbol ##### -->
-$symbol_desc
-
-EOF
-
- my ($params) = $SymbolParams{$symbol};
- if (defined ($params)) {
- my $j;
- for ($j = 0; $j <= $#$params; $j += 2) {
- my $param_name = $$params[$j];
- my $param_desc = $$params[$j + 1];
- $param_desc =~ s/\s+$//;
- $output .= "\@$param_name: $param_desc\n";
- }
- }
- $output .= "\n";
- }
-
- print UNUSED $output;
- close (UNUSED);
-}
-
-
-#############################################################################
-# LIBRARY FUNCTIONS - These functions are used in both gtkdoc-mkdb and
-# gtkdoc-mktmpl and should eventually be moved to a
-# separate library.
-#############################################################################
-
-#############################################################################
-# Function : ReadDeclarationsFile
-# Description : This reads in a file containing the function/macro/enum etc.
-# declarations.
-#
-# Note that in some cases there are several declarations with
-# the same name, e.g. for conditional macros. In this case we
-# set a flag in the %DeclarationConditional hash so the
-# declaration is not shown in the docs.
-#
-# If a macro and a function have the same name, e.g. for
-# gtk_object_ref, the function declaration takes precedence.
-#
-# Some opaque structs are just declared with 'typedef struct
-# _name name;' in which case the declaration may be empty.
-# The structure may have been found later in the header, so
-# that overrides the empty declaration.
-#
-# Arguments : $file - the declarations file to read
-# $override - if declarations in this file should override
-# any current declaration.
-#############################################################################
-
-sub ReadDeclarationsFile {
- my ($file, $override) = @_;
-
- if ($override == 0) {
- %Declarations = ();
- %DeclarationTypes = ();
- %DeclarationConditional = ();
- %DeclarationOutput = ();
- }
-
- open (INPUT, $file)
- || die "Can't open $file";
- my $declaration_type = "";
- my $declaration_name;
- my $declaration;
- while (<INPUT>) {
- if (!$declaration_type) {
- if (m/^<([^>]+)>/) {
- $declaration_type = $1;
- $declaration_name = "";
-# print "Found declaration: $declaration_type\n";
- $declaration = "";
- }
- } else {
- if (m%^<NAME>(.*)</NAME>%) {
- $declaration_name = $1;
- } elsif (m%^</$declaration_type>%) {
-# print "Found end of declaration: $declaration_name\n";
- # Check that the declaration has a name
- if ($declaration_name eq "") {
- print "ERROR: $declaration_type has no name $file:$.\n";
- }
-
- # Check if the symbol is already defined.
- if (defined ($Declarations{$declaration_name})
- && $override == 0) {
- # Function declarations take precedence.
- if ($DeclarationTypes{$declaration_name} eq 'FUNCTION') {
- # Ignore it.
- } elsif ($declaration_type eq 'FUNCTION') {
- $Declarations{$declaration_name} = $declaration;
- $DeclarationTypes{$declaration_name} = $declaration_type;
- } elsif ($DeclarationTypes{$declaration_name}
- eq $declaration_type) {
- # If the existing declaration is empty override it.
- if ($declaration_type eq 'STRUCT') {
- if ($Declarations{$declaration_name} =~ m/^\s*$/) {
- $Declarations{$declaration_name} = $declaration;
- } elsif ($declaration =~ m/^\s*$/) {
- # Ignore an empty declaration.
- } else {
- print "WARNING: Structure has multiple definitions: $declaration_name\n";
- }
-
- } else {
- # set flag in %DeclarationConditional hash for
- # multiply defined macros/typedefs.
- $DeclarationConditional{$declaration_name} = 1;
- }
- } else {
- print "WARNING: $declaration_name has multiple definitions\n";
- }
- } else {
- $Declarations{$declaration_name} = $declaration;
- $DeclarationTypes{$declaration_name} = $declaration_type;
- }
- $declaration_type = "";
- } else {
- $declaration .= $_;
- }
- }
- }
- close (INPUT);
-}
-
-
-#############################################################################
-# Function : ReadSignalsFile
-# Description : This reads in an existing file which contains information on
-# all GTK signals. It creates the arrays @SignalNames and
-# @SignalPrototypes containing info on the signals. The first
-# line of the SignalPrototype is the return type of the signal
-# handler. The remaining lines are the parameters passed to it.
-# The last parameter, "gpointer user_data" is always the same
-# so is not included.
-# Arguments : $file - the file containing the signal handler prototype
-# information.
-#############################################################################
-
-sub ReadSignalsFile {
- my ($file) = @_;
-
- my $in_signal = 0;
- my $signal_object;
- my $signal_name;
- my $signal_returns;
- my $signal_prototype;
-
- # Reset the signal info.
- @SignalObjects = ();
- @SignalNames = ();
- @SignalReturns = ();
- @SignalPrototypes = ();
-
- if (! -f $file) {
- return;
- }
- if (!open (INPUT, $file)) {
- warn "Can't open $file - skipping signals\n";
- return;
- }
- while (<INPUT>) {
- if (!$in_signal) {
- if (m/^<SIGNAL>/) {
- $in_signal = 1;
- $signal_object = "";
- $signal_name = "";
- $signal_returns = "";
- $signal_prototype = "";
- }
- } else {
- if (m/^<NAME>(.*)<\/NAME>/) {
- $signal_name = $1;
- if ($signal_name =~ m/^(.*)::(.*)$/) {
- $signal_object = $1;
- $signal_name = $2;
-# print "Found signal: $signal_name\n";
- } else {
- print "Invalid signal name: $signal_name\n";
- }
- } elsif (m/^<RETURNS>(.*)<\/RETURNS>/) {
- $signal_returns = $1;
- } elsif (m%^</SIGNAL>%) {
-# print "Found end of signal: ${signal_object}::${signal_name}\nReturns: ${signal_returns}\n${signal_prototype}";
- push (@SignalObjects, $signal_object);
- push (@SignalNames, $signal_name);
- push (@SignalReturns, $signal_returns);
- push (@SignalPrototypes, $signal_prototype);
- $in_signal = 0;
- } else {
- $signal_prototype .= $_;
- }
- }
- }
- close (INPUT);
-}
-
-
-#############################################################################
-# Function : ReadTemplateFile
-# Description : This reads in the manually-edited documentation file
-# corresponding to the file currently being created, so we can
-# insert the documentation at the appropriate places.
-# It outputs %SymbolTypes, %SymbolDocs and %SymbolParams, which
-# is a hash of arrays.
-# NOTE: This function is duplicated in gtkdoc-mkdb (but
-# slightly different).
-# Arguments : $docsfile - the template file to read in.
-# $skip_unused_params - 1 if the unused parameters should be
-# skipped.
-#############################################################################
-
-sub ReadTemplateFile {
- my ($docsfile, $skip_unused_params) = @_;
-
-# print "Reading $docsfile\n";
- if (! -f $docsfile) {
- print "File doesn't exist: $docsfile\n";
- return;
- }
-
- my $CurrentType = ""; # Type of symbol being read.
- my $CurrentSymbol = ""; # Name of symbol being read.
- my $SymbolDoc = ""; # Description of symbol being read.
- my @Params; # Parameter names and descriptions of current
- # function/macro/function typedef.
- my $CurrentParam = -1; # Index of parameter currently being read.
- # Note that the param array contains pairs
- # of param name & description.
- my $InUnusedParameters = 0; # True if we are reading in the unused params.
-
- open (DOCS, $docsfile)
- || die "Can't open file $docsfile: $!";
- while (<DOCS>) {
- if (m/^<!-- ##### ([A-Z_]+) (\S+) ##### -->/) {
- my $type = $1;
- my $symbol = $2;
- if ($symbol eq "Title"
- || $symbol eq "Short_Description"
- || $symbol eq "Long_Description"
- || $symbol eq "See_Also") {
- $symbol = $docsfile . ":" . $symbol;
-# print "Found symbol: $symbol\n";
- }
-
- # Store previous symbol, but remove any trailing blank lines.
- if ($CurrentSymbol ne "") {
- $SymbolDoc =~ s/\s+$//;
- $SymbolTypes{$CurrentSymbol} = $CurrentType;
- $SymbolDocs{$CurrentSymbol} = $SymbolDoc;
- if ($CurrentParam >= 0) {
- $SymbolParams{$CurrentSymbol} = [ @Params ];
- } else {
- # Delete any existing params in case we are overriding a
- # previously read template.
- delete $SymbolParams{$CurrentSymbol};
- }
- }
- $CurrentType = $type;
- $CurrentSymbol = $symbol;
- $CurrentParam = -1;
- $InUnusedParameters = 0;
- $SymbolDoc = "";
- @Params = ();
-
- } elsif (m/^<!-- # Unused Parameters # -->/) {
- $InUnusedParameters = 1;
- next;
-
- } else {
- # Check if param found
- if (s/^\@(\S+):\s*//) {
- my $param_name = $1;
- # Allow variations of 'Returns'
- if ($param_name =~ m/^[Rr]eturns?$/) {
- $param_name = "Returns";
- }
-# print "Found param: $param_name\n";
- push (@Params, $param_name);
- push (@Params, $_);
- $CurrentParam += 2;
- next;
- }
-
- # When outputting the DocBook we skip unused parameters.
- if (!$InUnusedParameters || !$skip_unused_params) {
- if ($CurrentParam >= 0) {
- $Params[$CurrentParam] .= $_;
- } else {
- $SymbolDoc .= $_;
- }
- }
- }
- }
-
- # Remember to finish the current symbol doccs.
- if ($CurrentSymbol ne "") {
- $SymbolDoc =~ s/\s+$//;
- $SymbolTypes{$CurrentSymbol} = $CurrentType;
- $SymbolDocs{$CurrentSymbol} = $SymbolDoc;
- if ($CurrentParam >= 0) {
- $SymbolParams{$CurrentSymbol} = [ @Params ];
- } else {
- delete $SymbolParams{$CurrentSymbol};
- }
- }
-
- close (DOCS);
-}
-
-
-#############################################################################
-# Function : ReadObjectHierarchy
-# Description : This reads in the $MODULE-hierarchy.txt file containing all
-# the GtkObject subclasses described in this module (and their
-# ancestors).
-# It places them in the @Objects array, and places their level
-# in the widget hierarchy in the @ObjectLevels array, at the
-# same index. GtkObject, the root object, has a level of 1.
-#
-# FIXME: the version in gtkdoc-mkdb also generates tree_index.sgml
-# as it goes along, this should be split out into a separate
-# function.
-#
-# Arguments : none
-#############################################################################
-
-sub ReadObjectHierarchy {
- @Objects = ();
- @ObjectLevels = ();
-
- if (! -f $OBJECT_TREE_FILE) {
- return;
- }
- if (!open (INPUT, $OBJECT_TREE_FILE)) {
- warn "Can't open $OBJECT_TREE_FILE - skipping object tree\n";
- return;
- }
- while (<INPUT>) {
- if (m/\S+/) {
- my $object = $&;
- my $level = (length($`)) / 2 + 1;
-# print ("Level: $level Object: $object\n");
-
- push (@Objects, $object);
- push (@ObjectLevels, $level);
- }
- }
-
- close (INPUT);
-}
-
-
-#############################################################################
-# Function : ReadArgsFile
-# Description : This reads in an existing file which contains information on
-# all GTK args. It creates the arrays @ArgObjects, @ArgNames,
-# @ArgTypes and @ArgFlags containing info on the args.
-# Arguments : $file - the file containing the arg information.
-#############################################################################
-
-sub ReadArgsFile {
- my ($file) = @_;
-
- my $in_arg = 0;
- my $arg_object;
- my $arg_name;
- my $arg_type;
- my $arg_flags;
-
- # Reset the signal info.
- @ArgObjects = ();
- @ArgNames = ();
- @ArgTypes = ();
- @ArgFlags = ();
-
- if (! -f $file) {
- return;
- }
- if (!open (INPUT, $file)) {
- warn "Can't open $file - skipping args\n";
- return;
- }
- while (<INPUT>) {
- if (!$in_arg) {
- if (m/^<ARG>/) {
- $in_arg = 1;
- $arg_object = "";
- $arg_name = "";
- $arg_type = "";
- $arg_flags = "";
- }
- } else {
- if (m/^<NAME>(.*)<\/NAME>/) {
- $arg_name = $1;
- if ($arg_name =~ m/^(.*)::(.*)$/) {
- $arg_object = $1;
- $arg_name = $2;
-# print "Found arg: $arg_name\n";
- } else {
- print "Invalid arg name: $arg_name\n";
- }
- } elsif (m/^<TYPE>(.*)<\/TYPE>/) {
- $arg_type = $1;
- } elsif (m/^<FLAGS>(.*)<\/FLAGS>/) {
- $arg_flags = $1;
- } elsif (m%^</ARG>%) {
-# print "Found end of arg: ${arg_object}::${arg_name}\n${arg_type} : ${arg_flags}\n";
- push (@ArgObjects, $arg_object);
- push (@ArgNames, $arg_name);
- push (@ArgTypes, $arg_type);
- push (@ArgFlags, $arg_flags);
- $in_arg = 0;
- }
- }
- }
- close (INPUT);
-}
-
-
-#############################################################################
-# Function : CheckIsObject
-# Description : Returns 1 if the given name is a GtkObject or a subclass.
-# It uses the global @Objects array.
-# Note that the @Objects array only contains classes in the
-# current module and their ancestors - not all GTK classes.
-# Arguments : $name - the name to check.
-#############################################################################
-
-sub CheckIsObject {
- my ($name) = @_;
-
- my $object;
- foreach $object (@Objects) {
- if ($object eq $name) {
- return 1;
- }
- }
- return 0;
-}
-
-
-#############################################################################
-# Function : ParseStructDeclaration
-# Description : This function takes a structure declaration and
-# breaks it into individual type declarations.
-# Arguments : $declaration - the declaration to parse
-# $is_object - true if this is an object structure
-# $typefunc - function reference to apply to type
-# $namefunc - function reference to apply to name
-#############################################################################
-
-sub ParseStructDeclaration {
- my ($declaration, $is_object, $typefunc, $namefunc) = @_;
-
- # Remove all private parts of the declaration
-
- # For objects, assume private
- if ($is_object) {
- $declaration =~ s!(struct\s+\w*\s*\{)
- .*?
- (?:/\*\s*<\s*public\s*>\s*\*/|(?=\}))!$1!msgx;
- }
-
- $declaration =~ s!\n?[ \t]*/\*\s*<\s*private\s*>\s*\*/
- .*?
- (?:/\*\s*<\s*public\s*>\s*\*/|(?=\}))!!msgx;
-
- # Remove all other comments;
- $declaration =~ s@/\*([^*]+|\*(?!/))*\*/@ @g;
-
- my @result = ();
-
- if ($declaration =~ /^\s*$/) {
- return @result;
- }
-
- # Prime match after "struct {" declaration
- if (!scalar($declaration =~ m/struct\s+\w*\s*\{/msg)) {
- die "Structure declaration '$declaration' does not begin with struct [NAME] {\n";
- }
-
- # Treat lines in sequence, allowing singly nested anonymous structs
- # and unions.
- while ($declaration =~ m/\s*([^{;]+(\{[^\}]*\}[^{;]+)?);/msg) {
- my $line = $1;
-
- last if $line =~ /^\s*\}\s*\w*\s*$/;
-
- # FIXME: Just ignore nested structs and unions for now
- next if $line =~ /{/;
-
- # FIXME: The regexes here are the same as in OutputFunction;
- # this functionality should be separated out.
-
- if ($line =~ m/^
- (const\s+|unsigned\s+)*(struct\s+)? # mod1
- (\w+)\s* # type
- (\**)\s* # ptr1
- (const\s+)? # mod2
- (\**)?\s* # ptr2
- (\w+(?:\s*,\s*\w+)*)\s* # name
- (?:((?:\[[^\]]*\]\s*)+) | # array
- (:\s*\d+))?\s* # bits
- $/x) {
- my $mod1 = defined($1) ? $1 : "";
- if (defined($2)) { $mod1 .= $2; }
- my $type = $3;
- my $ptr1 = $4;
- my $mod2 = defined($5) ? $5 : "";
- my $ptr2 = $6;
- my $name = $7;
- $ptr1 = " " . $ptr1;
- my $array = defined($8) ? $8 : "";
- my $bits = defined($9) ? " $9" : "";
- my $ptype = defined $typefunc ? $typefunc->($type) : $type;
-
- # FIXME:
- # As a hack, we allow the "name" to be of the form
- # "a, b, c". This isn't the correct C syntax, but
- # at least we get "gint16 x, y" right. Such constructs
- # should really be completely removed from the source.
- # Or we should really try to understand the C syntax
- # here...
-
- my @names = split /\s*,\s*/, $name;
- for my $n (@names) {
- push @result, $n;
- if (defined $namefunc) {
- $n = $namefunc->($n);
- }
- push @result, "$mod1$ptype$ptr1$mod2$ptr2$n$array$bits";
- }
-
- # Try to match structure members which are functions
- } elsif ($line =~ m/^
- (const\s+|unsigned\s+)*(struct\s+)? # mod1
- (\w+)\s* # type
- (\**)\s* # ptr1
- (const\s+)? # mod2
- \(\s*\*\s*(\w+)\s*\)\s* # name
- \(([^)]*)\)\s* # func_params
- $/x) {
-
- my $mod1 = defined($1) ? $1 : "";
- if (defined($2)) { $mod1 .= $2; }
- my $type = $3;
- my $ptr1 = $4;
- my $mod2 = defined($5) ? $5 : "";
- my $name = $6;
- my $func_params = $7;
- my $ptype = defined $typefunc ? $typefunc->($type) : $type;
- my $pname = defined $namefunc ? $namefunc->($name) : $name;
-
- push @result, $name;
- push @result, "$mod1$ptype$ptr1$mod2 (*$pname) ($func_params)";
-
- } else {
- warn "Cannot parse structure field $line";
- }
- }
-
- return @result;
-}
-
-
-#############################################################################
-# Function : ParseEnumDeclaration
-# Description : This function takes a enumeration declaration and
-# breaks it into individual enum member declarations.
-# Arguments : $declaration - the declaration to parse
-#############################################################################
-
-sub ParseEnumDeclaration {
- my ($declaration, $is_object) = @_;
-
- # Remove comments;
- $declaration =~ s@/\*([^*]+|\*(?!/))*\*/@ @g;
-
- my @result = ();
-
- if ($declaration =~ /^\s*$/) {
- return @result;
- }
-
- # Remove parenthesized expressions (in macros like GTK_BLAH = BLAH(1,3))
- # to avoid getting confused by commas they might contain. This
- # doesn't handle nested parentheses correctly.
-
- $declaration =~ s/\([^)]*\)//g;
-
- # Prime match after "typedef enum {" declaration
- if (!scalar($declaration =~ m/typedef\s+enum\s*\{/msg)) {
- die "Enum declaration '$declaration' does not begin with typedef enum {\n";
- }
-
- # Treat lines in sequence.
- while ($declaration =~ m/\s*([^,\}]+)([,\}])/msg) {
- my $line = $1;
- my $terminator = $2;
-
- if ($line =~ m/^(\w+)\s*(=.*)?$/msg) {
- push @result, $1;
-
- # Special case for GIOCondition, where the values are specified by
- # macros which expand to include the equal sign like '=1'.
- } elsif ($line =~ m/^(\w+)\s*GLIB_SYSDEF_POLL/msg) {
- push @result, $1;
-
- # Special case include of <gdk/gdkcursors.h>, just ignore it
- } elsif ($line =~ m/^#include/) {
- last;
-
- } else {
- warn "Cannot parse enumeration member $line";
- }
-
- last if $terminator eq '}';
- }
-
- return @result;
-}
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# gtk-doc - GTK DocBook documentation generator.
-# Copyright (C) 1998 Damon Chaplin
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-
-#
-# This gets information about object heirarchies and signals
-# by compiling a small C program. CFLAGS and LDFLAGS must be
-# set appropriately before running this script.
-#
-# NOTE: the lookup_signal_srg_names() function contains the argument names of
-# standard GTK signal handlers. This may need to be updated for new
-# GTK signals or Gnome widget signals.
-
-use Getopt::Long;
-
-# Options
-
-# name of documentation module
-my $MODULE;
-my $OUTPUT_DIR;
-
-%optctl = (module => \$MODULE,
- types => \$TYPES_FILE,
- nogtkinit => \$NO_GTK_INIT);
-
-GetOptions(\%optctl, "module=s", "types:s", "nogtkinit");
-
-$TYPES_FILE = $TYPES_FILE ? $TYPES_FILE : "$MODULE.types";
-
-open TYPES, $TYPES_FILE || die "Cannot open $TYPES_FILE: $!\n";
-open OUTPUT, ">$MODULE-scan.c" || die "Cannot open $MODULE-scan.c: $!\n";
-
-# write a C program to scan the types
-
-$includes = "";
-@types = ();
-
-for (<TYPES>) {
- if (/^#include/) {
- $includes .= $_;
- } elsif (/^%/) {
- next;
- } elsif (/^\s*$/) {
- next;
- } else {
- chomp;
- push @types, $_;
- }
-}
-
-$ntypes = @types + 1;
-
-print OUTPUT <<EOT;
-#include <string.h>
-#include <stdio.h>
-
-$includes
-GtkType object_types[$ntypes];
-GstElement *elements[$ntypes];
-
-gint _typenr = 0;
-
-gboolean
-get_plugins ()
-{
- gint i = 0;
-EOT
-
-for (@types) {
- print OUTPUT " gst_plugin_load(\"$_\");\n";
- print OUTPUT " elements[i] = gst_elementfactory_make(\"$_\", \"dummy\");\n";
- print OUTPUT " object_types[i] = GTK_OBJECT_TYPE(GTK_OBJECT(elements[i]));\n";
- print OUTPUT " i++; \n";
-}
- print OUTPUT " object_types[i] = 0;\n";
-
-print OUTPUT <<EOT;
- return TRUE;
-}
-
-/*
- * This uses GTK type functions to output signal prototypes and the widget
- * hierarchy.
- */
-
-/* The output files */
-gchar *signals_filename = "$MODULE.signals";
-gchar *hierarchy_filename = "$MODULE.hierarchy";
-gchar *args_filename = "$MODULE.args";
-gchar *pads_filename = "$MODULE.pads";
-
-
-static void output_signals ();
-static void output_widget_signals (FILE *fp,
- GtkType object_type);
-static void output_widget_signal (FILE *fp,
- GtkType object_type,
- gchar *object_class_name,
- guint signal_id);
-static gchar * get_type_name (GtkType type,
- gboolean * is_pointer);
-static gchar * get_gdk_event (const gchar * signal_name);
-static gchar ** lookup_signal_arg_names (gchar * type,
- const gchar * signal_name);
-
-static void output_widget_hierarchy ();
-static void output_hierarchy (FILE *fp,
- GtkType type,
- gint level);
-
-static void output_args ();
-static void output_widget_args (FILE *fp, GtkType object_type);
-
-static void output_pads ();
-static void output_widget_pads (FILE *fp, GstElement *element);
-
-int
-main (int argc, char *argv[])
-{
-EOT
-
- if ($NO_GTK_INIT) {
- print OUTPUT <<EOT;
- gtk_type_init ();
-EOT
- } else {
- print OUTPUT <<EOT;
- gtk_init (&argc, &argv);
-EOT
- }
-
-print OUTPUT <<EOT;
- gst_init (&argc, &argv);
- get_plugins();
-
- output_widget_hierarchy ();
- output_signals ();
- output_args ();
- output_pads ();
-
- return 0;
-}
-
-
-static void
-output_signals ()
-{
- FILE *fp;
- gint i;
-
- fp = fopen (signals_filename, "w");
- if (fp == NULL)
- {
- g_warning ("Couldn't open output file: %s", signals_filename);
- return;
- }
-
- for (i = 0; object_types[i]; i++)
- output_widget_signals (fp, object_types[i]);
-
- fclose (fp);
-}
-
-
-/* This outputs all the signals of one widget. */
-static void
-output_widget_signals (FILE *fp, GtkType object_type)
-{
- GtkObjectClass *class;
- gchar *object_class_name;
- guint sig;
-
- class = gtk_type_class (object_type);
- if (!class || class->nsignals == 0)
- return;
-
- object_class_name = gtk_type_name (object_type);
-
- for (sig = 0; sig < class->nsignals; sig++)
- {
- if (!class->signals[sig])
- {
- /*g_print ("Signal slot [%u] is empty\n", sig);*/
- continue;
- }
-
- output_widget_signal (fp, object_type, object_class_name,
- class->signals[sig]);
- }
-}
-
-
-/* This outputs one signal. */
-static void
-output_widget_signal (FILE *fp,
- GtkType object_type,
- gchar *object_name,
- guint signal_id)
-{
- GtkSignalQuery *query_info;
- gchar *ret_type, *pos, *type_name, *arg_name, *object_arg, *object_arg_start;
- gboolean is_pointer;
- gchar ret_type_buffer[1024], buffer[1024];
- gint i, param;
- gchar **arg_names;
- gint param_num, widget_num, event_num, callback_num;
- gint *arg_num;
- gchar signal_name[128];
-
-
- /* g_print ("Object: %s Type: %i Signal: %u\n", object_name, object_type,
- signal_id);*/
-
- param_num = 1;
- widget_num = event_num = callback_num = 0;
-
- query_info = gtk_signal_query (signal_id);
- if (query_info == NULL)
- {
- g_warning ("Couldn't query signal");
- return;
- }
-
- /* Output the return type and function name. */
- ret_type = get_type_name (query_info->return_val, &is_pointer);
- sprintf (ret_type_buffer, "%s%s", ret_type, is_pointer ? "*" : "");
-
- /* Output the signal object type and the argument name. We assume the
- type is a pointer - I think that is OK. We remove "Gtk" or "Gnome" and
- convert to lower case for the argument name. */
- pos = buffer;
- sprintf (pos, "%s ", object_name);
- pos += strlen (pos);
-
- if (!strncmp (object_name, "Gtk", 3))
- object_arg = object_name + 3;
- else if (!strncmp (object_name, "Gnome", 5))
- object_arg = object_name + 5;
- else
- object_arg = object_name;
-
- object_arg_start = pos;
- sprintf (pos, "*%s\n", object_arg);
- pos += strlen (pos);
- g_strdown (object_arg_start);
- if (!strcmp (object_arg_start, "widget"))
- widget_num++;
-
- /* Convert signal name to use underscores rather than dashes '-'. */
- strcpy (signal_name, query_info->signal_name);
- for (i = 0; signal_name[i]; i++)
- {
- if (signal_name[i] == '-')
- signal_name[i] = '_';
- }
-
- /* Output the signal parameters. */
- arg_names = lookup_signal_arg_names (object_name, signal_name);
-
- for (param = 0; param < query_info->nparams; param++)
- {
- if (arg_names)
- {
- sprintf (pos, "%s\n", arg_names[param]);
- pos += strlen (pos);
- }
- else
- {
- type_name = get_type_name (query_info->params[param], &is_pointer);
-
- /* Most arguments to the callback are called "arg1", "arg2", etc.
- GdkWidgets are called "widget", "widget2", ...
- GdkEvents are called "event", "event2", ...
- GtkCallbacks are called "callback", "callback2", ... */
- if (!strcmp (type_name, "GtkWidget"))
- {
- arg_name = "widget";
- arg_num = &widget_num;
- }
- else if (!strcmp (type_name, "GdkEvent"))
- {
- type_name = get_gdk_event (signal_name);
- arg_name = "event";
- arg_num = &event_num;
- is_pointer = TRUE;
- }
- else if (!strcmp (type_name, "GtkCallback")
- || !strcmp (type_name, "GtkCCallback"))
- {
- arg_name = "callback";
- arg_num = &callback_num;
- }
- else
- {
- arg_name = "arg";
- arg_num = ¶m_num;
- }
- sprintf (pos, "%s ", type_name);
- pos += strlen (pos);
-
- if (!arg_num || *arg_num == 0)
- sprintf (pos, "%s%s\n", is_pointer ? "*" : " ", arg_name);
- else
- sprintf (pos, "%s%s%i\n", is_pointer ? "*" : " ", arg_name,
- *arg_num);
- pos += strlen (pos);
-
- if (arg_num)
- *arg_num += 1;
- }
- }
-
- fprintf (fp,
- "<SIGNAL>\n<NAME>%s::%s</NAME>\n<RETURNS>%s</RETURNS>\n%s</SIGNAL>\n\n",
- object_name, query_info->signal_name, ret_type_buffer, buffer);
- g_free (query_info);
-}
-
-
-static gchar *
-get_type_name (GtkType type, gboolean * is_pointer)
-{
- static gchar *GbTypeNames[] =
- {
- "char", "gchar",
- "bool", "gboolean",
- "int", "gint",
- "uint", "guint",
- "long", "glong",
- "ulong", "gulong",
- "float", "gfloat",
- "double", "gdouble",
- "string", "gchar",
- "enum", "gint",
- "flags", "gint",
- "boxed", "gpointer",
- "foreign", "gpointer",
- "callback", "GtkCallback", /* ?? */
- "args", "gpointer",
-
- "pointer", "gpointer",
- "signal", "gpointer",
- "c_callback", "GtkCallback", /* ?? */
-
- NULL
- };
-
- GtkType parent_type;
- gchar *type_name, *parent_type_name;
- gint i;
-
- *is_pointer = FALSE;
- type_name = gtk_type_name (type);
- for (i = 0; GbTypeNames[i]; i += 2)
- {
- if (!strcmp (type_name, GbTypeNames[i]))
- {
- if (!strcmp (type_name, "string"))
- *is_pointer = TRUE;
- return GbTypeNames[i + 1];
- }
- }
-
- for (;;)
- {
- parent_type = gtk_type_parent (type);
- if (parent_type == 0)
- break;
- type = parent_type;
- }
- parent_type_name = gtk_type_name (type);
- /*g_print ("Parent type name: %s\n", parent_type_name);*/
- if (!strcmp (parent_type_name, "GtkObject")
- || !strcmp (parent_type_name, "boxed")
- || !strcmp (parent_type_name, "GtkBoxed"))
- *is_pointer = TRUE;
-
- return type_name;
-}
-
-
-static gchar *
-get_gdk_event (const gchar * signal_name)
-{
- static gchar *GbGDKEvents[] =
- {
- "button_press_event", "GdkEventButton",
- "button_release_event", "GdkEventButton",
- "motion_notify_event", "GdkEventMotion",
- "delete_event", "GdkEvent",
- "destroy_event", "GdkEvent",
- "expose_event", "GdkEventExpose",
- "key_press_event", "GdkEventKey",
- "key_release_event", "GdkEventKey",
- "enter_notify_event", "GdkEventCrossing",
- "leave_notify_event", "GdkEventCrossing",
- "configure_event", "GdkEventConfigure",
- "focus_in_event", "GdkEventFocus",
- "focus_out_event", "GdkEventFocus",
- "map_event", "GdkEvent",
- "unmap_event", "GdkEvent",
- "property_notify_event", "GdkEventProperty",
- "selection_clear_event", "GdkEventSelection",
- "selection_request_event", "GdkEventSelection",
- "selection_notify_event", "GdkEventSelection",
- "proximity_in_event", "GdkEventProximity",
- "proximity_out_event", "GdkEventProximity",
- "drag_begin_event", "GdkEventDragBegin",
- "drag_request_event", "GdkEventDragRequest",
- "drag_end_event", "GdkEventDragRequest",
- "drop_enter_event", "GdkEventDropEnter",
- "drop_leave_event", "GdkEventDropLeave",
- "drop_data_available_event", "GdkEventDropDataAvailable",
- "other_event", "GdkEventOther",
- "client_event", "GdkEventClient",
- "no_expose_event", "GdkEventNoExpose",
- NULL
- };
-
- gint i;
-
- for (i = 0; GbGDKEvents[i]; i += 2)
- {
- if (!strcmp (signal_name, GbGDKEvents[i]))
- return GbGDKEvents[i + 1];
- }
- return "GdkEvent";
-}
-
-
-/* This returns argument names to use for some known GTK signals.
- It is passed a widget name, e.g. 'GtkCList' and a signal name, e.g.
- 'select_row' and it returns a pointer to an array of argument types and
- names. */
-static gchar **
-lookup_signal_arg_names (gchar * type, const gchar * signal_name)
-{
- /* Each arg array starts with the object type name and the signal name,
- and then signal arguments follow. */
- static gchar *GbArgTable[][16] =
- {
- {"GtkCList", "select_row",
- "gint row",
- "gint column",
- "GdkEventButton *event"},
- {"GtkCList", "unselect_row",
- "gint row",
- "gint column",
- "GdkEventButton *event"},
- {"GtkCList", "click_column",
- "gint column"},
-
- {"GtkCList", "resize_column",
- "gint column",
- "gint width"},
-
- {"GtkCList", "extend_selection",
- "GtkScrollType scroll_type",
- "gfloat position",
- "gboolean auto_start_selection"},
- {"GtkCList", "scroll_vertical",
- "GtkScrollType scroll_type",
- "gfloat position"},
- {"GtkCList", "scroll_horizontal",
- "GtkScrollType scroll_type",
- "gfloat position"},
- {"GtkContainer", "focus",
- "GtkDirectionType direction"},
- {"GtkCTree", "tree_select_row",
- "GList *node",
- "gint column"},
- {"GtkCTree", "tree_unselect_row",
- "GList *node",
- "gint column"},
-
- {"GtkCTree", "tree_expand",
- "GList *node"},
- {"GtkCTree", "tree_collapse",
- "GList *node"},
- {"GtkCTree", "tree_move",
- "GList *node",
- "GList *new_parent",
- "GList *new_sibling"},
- {"GtkCTree", "change_focus_row_expansion",
- "GtkCTreeExpansionType expansion"},
-
- {"GtkEditable", "insert_text",
- "gchar *new_text",
- "gint new_text_length",
- "gint *position"},
- {"GtkEditable", "delete_text",
- "gint start_pos",
- "gint end_pos"},
- {"GtkEditable", "set_editable",
- "gboolean is_editable"},
- {"GtkEditable", "move_cursor",
- "gint x",
- "gint y"},
- {"GtkEditable", "move_word",
- "gint num_words"},
- {"GtkEditable", "move_page",
- "gint x",
- "gint y"},
- {"GtkEditable", "move_to_row",
- "gint row"},
- {"GtkEditable", "move_to_column",
- "gint column"},
-
- {"GtkEditable", "kill_char",
- "gint direction"},
- {"GtkEditable", "kill_word",
- "gint direction"},
- {"GtkEditable", "kill_line",
- "gint direction"},
-
-
- {"GtkInputDialog", "enable_device",
- "gint deviceid"},
- {"GtkInputDialog", "disable_device",
- "gint deviceid"},
-
- {"GtkListItem", "extend_selection",
- "GtkScrollType scroll_type",
- "gfloat position",
- "gboolean auto_start_selection"},
- {"GtkListItem", "scroll_vertical",
- "GtkScrollType scroll_type",
- "gfloat position"},
- {"GtkListItem", "scroll_horizontal",
- "GtkScrollType scroll_type",
- "gfloat position"},
-
- {"GtkMenuShell", "move_current",
- "GtkMenuDirectionType direction"},
- {"GtkMenuShell", "activate_current",
- "gboolean force_hide"},
-
-
- {"GtkNotebook", "switch_page",
- "GtkNotebookPage *page",
- "gint page_num"},
- {"GtkStatusbar", "text_pushed",
- "guint context_id",
- "gchar *text"},
- {"GtkStatusbar", "text_popped",
- "guint context_id",
- "gchar *text"},
- {"GtkTipsQuery", "widget_entered",
- "GtkWidget *widget",
- "gchar *tip_text",
- "gchar *tip_private"},
- {"GtkTipsQuery", "widget_selected",
- "GtkWidget *widget",
- "gchar *tip_text",
- "gchar *tip_private",
- "GdkEventButton *event"},
- {"GtkToolbar", "orientation_changed",
- "GtkOrientation orientation"},
- {"GtkToolbar", "style_changed",
- "GtkToolbarStyle style"},
- {"GtkWidget", "draw",
- "GdkRectangle *area"},
- {"GtkWidget", "size_request",
- "GtkRequisition *requisition"},
- {"GtkWidget", "size_allocate",
- "GtkAllocation *allocation"},
- {"GtkWidget", "state_changed",
- "GtkStateType state"},
- {"GtkWidget", "style_set",
- "GtkStyle *previous_style"},
-
- {"GtkWidget", "install_accelerator",
- "gchar *signal_name",
- "gchar key",
- "gint modifiers"},
-
- {"GtkWidget", "add_accelerator",
- "guint accel_signal_id",
- "GtkAccelGroup *accel_group",
- "guint accel_key",
- "GdkModifierType accel_mods",
- "GtkAccelFlags accel_flags"},
-
- {"GtkWidget", "parent_set",
- "GtkObject *old_parent"},
-
- {"GtkWidget", "remove_accelerator",
- "GtkAccelGroup *accel_group",
- "guint accel_key",
- "GdkModifierType accel_mods"},
- {"GtkWidget", "debug_msg",
- "gchar *message"},
- {"GtkWindow", "move_resize",
- "gint *x",
- "gint *y",
- "gint width",
- "gint height"},
- {"GtkWindow", "set_focus",
- "GtkWidget *widget"},
-
- {"GtkWidget", "selection_get",
- "GtkSelectionData *data",
- "guint info",
- "guint time"},
- {"GtkWidget", "selection_received",
- "GtkSelectionData *data",
- "guint time"},
-
- {"GtkWidget", "drag_begin",
- "GdkDragContext *drag_context"},
- {"GtkWidget", "drag_end",
- "GdkDragContext *drag_context"},
- {"GtkWidget", "drag_data_delete",
- "GdkDragContext *drag_context"},
- {"GtkWidget", "drag_leave",
- "GdkDragContext *drag_context",
- "guint time"},
- {"GtkWidget", "drag_motion",
- "GdkDragContext *drag_context",
- "gint x",
- "gint y",
- "guint time"},
- {"GtkWidget", "drag_drop",
- "GdkDragContext *drag_context",
- "gint x",
- "gint y",
- "guint time"},
- {"GtkWidget", "drag_data_get",
- "GdkDragContext *drag_context",
- "GtkSelectionData *data",
- "guint info",
- "guint time"},
- {"GtkWidget", "drag_data_received",
- "GdkDragContext *drag_context",
- "gint x",
- "gint y",
- "GtkSelectionData *data",
- "guint info",
- "guint time"},
-
- {NULL}
- };
-
- gint i;
-
- for (i = 0; GbArgTable[i][0]; i++)
- {
- if (!strcmp (type, GbArgTable[i][0])
- && !strcmp (signal_name, GbArgTable[i][1]))
- return &GbArgTable[i][2];
- }
- return NULL;
-}
-
-
-/* This outputs the hierarchy of all widgets which have been initialized,
- i.e. by calling their XXX_get_type() initialization function. */
-static void
-output_widget_hierarchy ()
-{
- FILE *fp;
-
- fp = fopen (hierarchy_filename, "w");
- if (fp == NULL)
- {
- g_warning ("Couldn't open output file: %s", hierarchy_filename);
- return;
- }
- output_hierarchy (fp, GTK_TYPE_OBJECT, 0);
- fclose (fp);
-}
-
-
-/* This is called recursively to output the hierarchy of a widget. */
-static void
-output_hierarchy (FILE *fp,
- GtkType type,
- gint level)
-{
- GList *list;
- guint i;
-
- if (!type)
- return;
-
- for (i = 0; i < level; i++)
- fprintf (fp, " ");
- fprintf (fp, gtk_type_name (type));
- fprintf (fp, "\n");
-
- list = gtk_type_children_types (type);
-
- while (list)
- {
- GtkType child = (GtkType) list->data;
- output_hierarchy (fp, child, level + 1);
- list = list->next;
- }
-}
-
-
-static void
-output_args ()
-{
- FILE *fp;
- gint i;
-
- fp = fopen (args_filename, "w");
- if (fp == NULL)
- {
- g_warning ("Couldn't open output file: %s", args_filename);
- return;
- }
-
- for (i = 0; object_types[i]; i++)
- output_widget_args (fp, object_types[i]);
-
- fclose (fp);
-}
-
-
-static void
-output_widget_args (FILE *fp, GtkType object_type)
-{
- GtkObjectClass *class;
- gchar *object_class_name;
- GtkArg *args;
- guint32 *arg_flags;
- guint n_args;
- gint arg;
- gchar flags[16], *pos;
-
- class = gtk_type_class (object_type);
- if (!class)
- return;
-
- object_class_name = gtk_type_name (object_type);
-
- args = gtk_object_query_args (class->type, &arg_flags, &n_args);
-
- for (arg = 0; arg < n_args; arg++)
- {
- pos = flags;
- /* We use one-character flags for simplicity. */
- if (arg_flags[arg] & GTK_ARG_READABLE)
- *pos++ = 'r';
- if (arg_flags[arg] & GTK_ARG_WRITABLE)
- *pos++ = 'w';
- if (arg_flags[arg] & GTK_ARG_CONSTRUCT)
- *pos++ = 'x';
- if (arg_flags[arg] & GTK_ARG_CONSTRUCT_ONLY)
- *pos++ = 'X';
- if (arg_flags[arg] & GTK_ARG_CHILD_ARG)
- *pos++ = 'c';
- *pos = '\0';
-
- fprintf (fp, "<ARG>\n<NAME>%s</NAME>\n<TYPE>%s</TYPE>\n<FLAGS>%s</FLAGS>\n",
- args[arg].name, gtk_type_name (args[arg].type), flags);
-
- if (GTK_FUNDAMENTAL_TYPE(args[arg].type) == GTK_TYPE_ENUM) {
- GtkEnumValue *values;
- gint i=0;
-
- values = gtk_type_enum_get_values(args[arg].type);
-
- while (values[i].value_name) {
- fprintf (fp, "<ENUM>\n<VALUE>%d</VALUE>\n<NICK>%s</NICK>\n</ENUM>\n",
- values[i].value, values[i].value_nick);
- i++;
- }
- }
-
- fprintf(fp, "</ARG>\n\n");
- }
-
- g_free (args);
- g_free (arg_flags);
-}
-
-
-static void
-output_pads ()
-{
- FILE *fp;
- gint i;
-
- fp = fopen (pads_filename, "w");
- if (fp == NULL)
- {
- g_warning ("Couldn't open output file: %s", pads_filename);
- return;
- }
-
- for (i = 0; elements[i]; i++)
- output_widget_pads (fp, elements[i]);
-
- fclose (fp);
-}
-
-static void
-output_widget_pads (FILE *fp, GstElement *element)
-{
- GtkObjectClass *class;
- GstElementFactory *factory;
- GList *pads;
-
- class = GTK_OBJECT(element)->klass;
- if (!class || !GST_IS_ELEMENT_CLASS(class))
- return;
-
- pads = gst_element_get_pad_list(element);
-
- factory = GST_ELEMENT_CLASS(class)->elementfactory;
-
- if (!factory)
- return;
-
- while (pads) {
- GstPad *pad = (GstPad *)pads->data;
- GstType *type;
-
- //type = gst_type_find_by_id(pad->type);
- type = gst_type_find_by_id(1);
-
- fprintf (fp, "<PAD>\n<NAME>%s::%s</NAME>\n",
- gtk_type_name(factory->type), gst_object_get_name (GST_OBJECT (pad)));
-
- if (type) {
- fprintf(fp, "<MIME>%s</MIME>\n", type->mime);
- if (type->exts)
- fprintf(fp, "<EXTS>%s</EXTS>\n", type->exts);
- }
-
- fprintf(fp, "</PAD>\n\n");
-
- pads = g_list_next(pads);
- }
-}
-
-EOT
-
-close OUTPUT;
-
-# Compile and run our file
-
-$CC = $ENV{CC} ? $ENV{CC} : "gcc";
-$LD = $ENV{LD} ? $ENV{LD} : $CC;
-$CFLAGS = $ENV{CFLAGS} ? $ENV{CFLAGS} : "";
-$LDFLAGS = $ENV{LDFLAGS} ? $ENV{LDFLAGS} : "";
-
-$command = "$CC $CFLAGS -c -o $MODULE-scan.o $MODULE-scan.c && $LD -o $MODULE-scan $MODULE-scan.o $LDFLAGS";
-
-system($command) == 0 or die "Compilation of scanner failed\n";
-
-system("./$MODULE-scan") == 0 or die "Scan failed\n";
-
-unlink "./$MODULE-scan.c", "./$MODULE-scan",
+++ /dev/null
-<!doctype book PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [
-
-<!entity GstParseAu SYSTEM "sgml/gstparseau.sgml">
-<!entity Audioscale SYSTEM "sgml/audioscale.sgml">
-<!entity GstAviEncoder SYSTEM "sgml/gstaviencoder.sgml">
-<!entity GstParseAvi SYSTEM "sgml/gstparseavi.sgml">
-<!entity GstWinDec SYSTEM "sgml/gstwindec.sgml">
-<!entity GstWinEnc SYSTEM "sgml/gstwinenc.sgml">
-<!entity GstV4lSrc SYSTEM "sgml/gstv4lsrc.sgml">
-<!entity GstStereo SYSTEM "sgml/stereo.sgml">
-<!entity GstVolume SYSTEM "sgml/volume.sgml">
-<!entity GstMedian SYSTEM "sgml/median.sgml">
-<!entity GstSmooth SYSTEM "sgml/smooth.sgml">
-<!entity GstJpegDec SYSTEM "sgml/gstjpegdec.sgml">
-<!entity GstJpegEnc SYSTEM "sgml/gstjpegenc.sgml">
-<!entity GstMpg123 SYSTEM "sgml/gstmpg123.sgml">
-<!entity Mp3Parse SYSTEM "sgml/mp3parse.sgml">
-<!entity GstMpegplay SYSTEM "sgml/gstmpeg_play.sgml">
-<!entity GstMpegAudio SYSTEM "sgml/gstmpegaudio.sgml">
-<!entity GstMpeg1Parse SYSTEM "sgml/mpeg1parse.sgml">
-<!entity SystemEncode SYSTEM "sgml/system_encode.sgml">
-<!entity Mp1VideoParse SYSTEM "sgml/mp1videoparse.sgml">
-<!entity Ac3Dec SYSTEM "sgml/ac3dec.sgml">
-<!entity Ac3Parse SYSTEM "sgml/ac3parse.sgml">
-<!entity GstMpeg2enc SYSTEM "sgml/gstmpeg2enc.sgml">
-<!entity Mpeg2Parse SYSTEM "sgml/mpeg2parse.sgml">
-<!entity Mpeg2Subt SYSTEM "sgml/mpeg2subt.sgml">
-<!entity Mpeg2Play SYSTEM "sgml/gstmpeg2play.sgml">
-<!entity Mp2VideoParse SYSTEM "sgml/mp2videoparse.sgml">
-<!entity RTJpegDec SYSTEM "sgml/rtjpegdec.sgml">
-<!entity RTJpegEnc SYSTEM "sgml/rtjpegenc.sgml">
-<!entity VCDSrc SYSTEM "sgml/vcdsrc.sgml">
-<!entity Videoscale SYSTEM "sgml/videoscale.sgml">
-<!entity VideoSink SYSTEM "sgml/videosink.sgml">
-<!entity GstSmoothWave SYSTEM "sgml/smoothwave.sgml">
-<!entity GstSpectrum SYSTEM "sgml/gstspectrum.sgml">
-<!entity GstSynaesthesia SYSTEM "sgml/synaesthesia.sgml">
-<!entity GstVuMeter SYSTEM "sgml/vumeter.sgml">
-<!entity VorbisDec SYSTEM "sgml/vorbisdec.sgml">
-<!entity VorbisEnc SYSTEM "sgml/vorbisenc.sgml">
-<!entity GstParseWav SYSTEM "sgml/gstparsewav.sgml">
-
-<!entity gstreamer-tree-index SYSTEM "sgml/tree_index.sgml">
-]>
-
-
-<book>
- <bookinfo>
- <title>GStreamer Library Reference Manual (Plugins)</title>
- </bookinfo>
-
- <chapter id="plugins">
- <title>GStreamer Standard Plugins</title>
-
- <para>
- The following code example shows you how to create a GstDiskSrc element.
- </para>
-
- &GstParseAu;
- &Audioscale;
-
- &GstAviEncoder;
- &GstParseAvi;
- &GstWinDec;
- &GstWinEnc;
- &GstParseWav;
-
- &GstV4lSrc;
-
- &GstStereo;
- &GstVolume;
-
- &GstMedian;
- &GstSmooth;
-
- &GstJpegDec;
- &GstJpegEnc;
-
- &GstMpg123;
- &Mp3Parse;
- &GstMpegplay;
- &GstMpegAudio;
- &GstMpeg1Parse;
- &SystemEncode;
- &Mp1VideoParse;
-
- &Ac3Dec;
- &Ac3Parse;
- &GstMpeg2enc;
- &Mpeg2Parse;
- &Mpeg2Subt;
- &Mpeg2Play;
- &Mp2VideoParse;
-
- &RTJpegDec;
- &RTJpegEnc;
-
- &VCDSrc;
-
- &Videoscale;
- &VideoSink;
-
- &GstSmoothWave;
- &GstSpectrum;
- &GstSynaesthesia;
- &GstVuMeter;
-
- &VorbisDec;
- &VorbisEnc;
- </chapter>
-
- <chapter id="gst-index">
- <title>Index</title>
-
- <sect1>
- <title>Object Hierarchy</title>
- &gstreamer-tree-index;
- </sect1>
- </chapter>
-</book>
+++ /dev/null
-<SECTION>
-<FILE>example</FILE>
-<TITLE>GstExample</TITLE>
-<SUBSECTION Standard>
-</SECTION>
-
-<SECTION>
-<FILE>gstparseau</FILE>
-<TITLE>GstParseAu</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>gstaviencoder</FILE>
-<TITLE>GstAviEncoder</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_AVIENCODER
-</SECTION>
-
-<SECTION>
-<FILE>gstparseavi</FILE>
-<TITLE>GstParseAvi</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAVI
-</SECTION>
-
-<SECTION>
-<FILE>gstwindec</FILE>
-<TITLE>GstWinDec</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>gstwinenc</FILE>
-<TITLE>GstWinEnc</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>gstwincodec</FILE>
-<TITLE>GstWin</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>gstv4lsrc</FILE>
-<TITLE>GstV4lSrc</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>cobin</FILE>
-<TITLE>GstCoBin</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>spindentity</FILE>
-<TITLE>GstSpindentity</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>dvdsrc</FILE>
-<TITLE>DVDSrc</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>stereo</FILE>
-<TITLE>GstStereo</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>volume</FILE>
-<TITLE>GstVolume</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>gstjpeg</FILE>
-<TITLE>GstJpeg</TITLE>
-</SECTION>
-
-<SECTION>
-<FILE>gstjpegdec</FILE>
-<TITLE>GstJpegDec</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>gstjpegenc</FILE>
-<TITLE>GstJpegEnc</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>gstmpg123</FILE>
-<TITLE>GstMpg123</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>mp3parse</FILE>
-<TITLE>Mp3Parse</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>gstxa</FILE>
-<TITLE>GstXa</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>gstxing</FILE>
-<TITLE>GstXing</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>gstmpeg_play</FILE>
-<TITLE>GstMpeg_play</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>mpeg1parse</FILE>
-<TITLE>Mpeg1Parse</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>gstmpeg1encoder</FILE>
-<TITLE>GstMpeg1encoder</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>system_encode</FILE>
-<TITLE>System_Encode</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>gstmpegaudio</FILE>
-<TITLE>GstMpegAudio</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>mp1videoparse</FILE>
-<TITLE>Mp1VideoParse</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>ac3dec</FILE>
-<TITLE>Ac3Dec</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>ac3parse</FILE>
-<TITLE>Ac3Parse</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>mpeg2parse</FILE>
-<TITLE>Mpeg2Parse</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>gstmpeg2play</FILE>
-<TITLE>GstMpeg2play</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>gstmpeg2enc</FILE>
-<TITLE>GstMpeg2enc</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>mpeg2subt</FILE>
-<TITLE>Mpeg2Subt</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>mp2videoparse</FILE>
-<TITLE>Mp2VideoParse</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>rtjpegdec</FILE>
-<TITLE>RTJpegDec</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>rtjpegenc</FILE>
-<TITLE>RTJpegEnc</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>vcdsrc</FILE>
-<TITLE>VCDSrc</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>videosink</FILE>
-<TITLE>GstVideoSink</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_VIDEOSINK
-</SECTION>
-
-<SECTION>
-<FILE>smoothwave</FILE>
-<TITLE>GstSmoothWave</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>gstspectrum</FILE>
-<TITLE>GstSpectrum</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>synaesthesia</FILE>
-<TITLE>GstSynaesthesia</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>vumeter</FILE>
-<TITLE>GstVuMeter</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>gstparsewav</FILE>
-<TITLE>GstParseWav</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>smooth</FILE>
-<TITLE>GstSmooth</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>median</FILE>
-<TITLE>GstMedian</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>videoscale</FILE>
-<TITLE>Videoscale</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>audioscale</FILE>
-<TITLE>Audioscale</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>vorbisenc</FILE>
-<TITLE>VorbisEnc</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
-<SECTION>
-<FILE>vorbisdec</FILE>
-<TITLE>VorbisDec</TITLE>
-<SUBSECTION Standard>
-GST_TYPE_PARSEAU
-</SECTION>
-
+++ /dev/null
-#include <gtk/gtk.h>
-#include <gst/gst.h>
-
-audiosink
-parseau
-audioscale
-parseavi
-aviencoder
-winenc
-windec
-v4lsrc
-stereo
-volume
-median
-smooth
-jpegenc
-jpegdec
-mpg123
-mp3parse
-mpeg_play
-mpeg1parse
-system_encode
-mp1videoparse
-ac3dec
-ac3parse
-mpeg2enc
-mpeg2parse
-mpeg2subt
-mpeg2play
-mp2videoparse
-rtjpegdec
-rtjpegenc
-videoscale
-videosink
-smoothwave
-spectrum
-synaesthesia
-vumeter
-parsewav
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-Ac3Dec
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-Ac3Parse
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-Audioscale
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstCoBin
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-DVDSrc
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstExample
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstAviEncoder
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstJpeg
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstJpegDec
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstJpegEnc
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstMpeg1encoder
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstMpeg2enc
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstMpeg2play
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstMpeg_play
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstMpegAudio
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstMpg123
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-parseau
-
-<!-- ##### SECTION Short_Description ##### -->
-Parse an .au file into raw audio
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstParseAvi
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstParseWav
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### FUNCTION i_audio_decode_init ##### -->
-<para>
-
-</para>
-
-@h:
-@framebytes_arg:
-@reduction_code:
-@transform_code:
-@convert_code:
-@freq_limit:
-@Returns:
-
-<!-- ##### MACRO EXT_BUF_SIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DecodeDCTCoeffFirst ##### -->
-<para>
-
-</para>
-
-@gb:
-@runval:
-@levelval:
-
-<!-- ##### MACRO GetFlag ##### -->
-<para>
-
-</para>
-
-@value:
-@flag:
-
-<!-- ##### MACRO MAX_NAME_SIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DC_QUARTER ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MAIN_LEVEL ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION inithuff ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### SECTION ./tmpl/mpeg2dec.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION aiff_write_headers ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Param2:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/param.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION ReadGOPHeader ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### MACRO LBOUND ##### -->
-<para>
-
-</para>
-
-@index:
-@value:
-
-<!-- ##### SECTION ./tmpl/parse.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/gdkxvimage.sgml:Title ##### -->
-gdkxvimage
-
-
-<!-- ##### MACRO VIDEO_ELEMENTARY_STREAM ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DecodeMBAddrInc ##### -->
-<para>
-
-</para>
-
-@gb:
-@val:
-
-<!-- ##### FUNCTION Sub2Compensate ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@matrix:
-@XIob:
-@YIob:
-
-<!-- ##### FUNCTION gdk_xvimage_check_xvideo ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### SECTION ./tmpl/L3.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION create_pack ##### -->
-<para>
-
-</para>
-
-@pack:
-@SCR:
-@mux_rate:
-
-<!-- ##### MACRO WHISPER ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION MoveTo ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@hp:
-@vp:
-@h:
-@v:
-
-<!-- ##### SECTION ./tmpl/decoders.sgml:Title ##### -->
-decoders
-
-
-<!-- ##### MACRO GOP_START_CODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MACROBLOCK_MOTION_FORWARD ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VIDEO_RGB16_LE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MONO ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/stream.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO DFLT_EXT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/mhead.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MAX_LENGTH ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MB_BACKWARD ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO QUANT_MATRIX_EXTENSION_ID ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION RTjpeg_yuvrgb16 ##### -->
-<para>
-
-</para>
-
-@buf:
-@rgb:
-
-<!-- ##### STRUCT Mpeg1Meta ##### -->
-<para>
-
-</para>
-
-@packet_length:
-@PES_scrambling_control:
-@PES_priority:
-@data_alignment_indicator:
-@copyright:
-@original_or_copy:
-@PTS_DTS_flags:
-@ESCR_flag:
-@ES_rate_flag:
-@DSM_trick_mode_flag:
-@additional_copy_info_flag:
-@CRC_flag:
-@PES_extension_flag:
-@PES_header_data_length:
-@PTS:
-@DTS:
-@ESCR_base:
-@ESCR_extension:
-@ES_rate:
-@trick_mode_control:
-
-<!-- ##### SECTION ./tmpl/jdw.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO LITTLE_SHORT16 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION audio_decode_init ##### -->
-<para>
-
-</para>
-
-@h:
-@framebytes_arg:
-@reduction_code:
-@transform_code:
-@convert_code:
-@freq_limit:
-@Returns:
-
-<!-- ##### FUNCTION gst_volume_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### MACRO L_RATE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_mpeg2play_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### FUNCTION gst_example_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### FUNCTION AddCompensate ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@matrix:
-@XIob:
-
-<!-- ##### MACRO BOTTOM_FIELD ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO P ##### -->
-<para>
-
-</para>
-
-@s:
-
-<!-- ##### SECTION ./tmpl/bitstream.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_spectrum_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/marker.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DISP_ID ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION output_play ##### -->
-<para>
-
-</para>
-
-@bsi:
-@samples:
-@Returns:
-
-<!-- ##### MACRO WORD ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF sint_16 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION RTjpeg_yuvrgb24 ##### -->
-<para>
-
-</para>
-
-@buf:
-@rgb:
-
-<!-- ##### MACRO STATUS_VIDEO_TIME_OUT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO PARSE_OK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SEQUENCE_ERROR_CODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO IFF_LONG ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION debug_is_on ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO SYS_HEADER_SIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mem_free ##### -->
-<para>
-
-</para>
-
-@Param1:
-
-<!-- ##### MACRO SYSTEM_START_CODE_MAX ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/uncouple.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/globals.sgml:Title ##### -->
-globals
-
-
-<!-- ##### MACRO ERROR_UNRECOVERABLE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/uncouple.sgml:Title ##### -->
-uncouple
-
-
-<!-- ##### MACRO GST_PARSEAVI_REGULAR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/system.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO L_QDFACT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION RTjpeg_yuvrgb32 ##### -->
-<para>
-
-</para>
-
-@buf:
-@rgb:
-
-<!-- ##### MACRO GST_PARSEWAV_OTHER ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/qtables.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/itype.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO READ_MODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION bitstream_close ##### -->
-<para>
-
-</para>
-
-@bs:
-
-<!-- ##### TYPEDEF WININT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG VCDSrc:offset ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION MakeEHUFF ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### TYPEDEF IFFT2[FFT_SIZE/2] ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NULL_CHAR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/mhead.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/ac3.sgml:Title ##### -->
-ac3
-
-
-<!-- ##### SECTION ./tmpl/mpeg2enc.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/main.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### TYPEDEF coded_block_pattern_entry ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstSmoothWave:height ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GRAB_ATTR_COLOR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_parseavi_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### TYPEDEF sint_32 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstStereo:stereo ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mpeg1mux_buffer_new ##### -->
-<para>
-
-</para>
-
-@type:
-@id:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/musicin.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO PROFILE_422 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG Mpeg1Parse:mux_rate ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MARKER_SCR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO STREAMS_VIDEO ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF DCTtab ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/dither.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VIDEO_STR_0 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION ReadPictureHeader ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### FUNCTION mpg123_bpf_from_header ##### -->
-<para>
-
-</para>
-
-@header:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/video.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SEQUENCE_DISPLAY_EXTENSION_ID ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mrseek ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@distance:
-
-<!-- ##### SECTION ./tmpl/crc.sgml:Title ##### -->
-crc
-
-
-<!-- ##### FUNCTION mpeg2enc_new_picture ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@inbuf:
-@size:
-@encoder_state:
-@Returns:
-
-<!-- ##### MACRO PROTO_ARGS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/imdct.sgml:Title ##### -->
-imdct
-
-
-<!-- ##### FUNCTION gst_parsewav_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### MACRO PSC_LENGTH ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/mpeg2enc.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/size.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DVDSRC_BASEOFFSET ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TIMESTAMPS_NO ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GTK_OVERLAY_IMAGE_TYPE ##### -->
-<para>
-
-</para>
-
-@obj:
-
-<!-- ##### MACRO SEEK_SET ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_mpeg_play_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### FUNCTION gst_mpegaudio_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### FUNCTION mwtell ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/csize.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO NEW_PICTURE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DefaultDct ##### -->
-<para>
-
-</para>
-
-@vs:
-@o:
-@i:
-
-<!-- ##### FUNCTION gst_parseavi_get_video_srcpad ##### -->
-<para>
-
-</para>
-
-@parseavi:
-@pad_nr:
-@strf:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/jdw.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO L_FVAR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION get_number_of_input_bytes ##### -->
-<para>
-
-</para>
-
-@enc:
-@Returns:
-
-<!-- ##### MACRO STDC_HEADERS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/gdkxvimage.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION ReadMBHeader ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@Returns:
-
-<!-- ##### FUNCTION JVCHInterpolateMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO ERRC_LENGTH ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstV4lSrc:bright ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO sputc ##### -->
-<para>
-
-</para>
-
-@b:
-
-<!-- ##### MACRO PI4 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/RTjpeg.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MAX_FLIP_BUFFERS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO HBLKSIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION EncodeAC ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@index:
-@matrix:
-
-<!-- ##### FUNCTION rb_end_write ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION ReferenceIDct ##### -->
-<para>
-
-</para>
-
-@matrix:
-@newmatrix:
-
-<!-- ##### MACRO GOPSC ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstMpeg2play:frames_per_second ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NEW_DATA ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MPEGTABENV ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_vumeter_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### MACRO SC_NONE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mpeg2enc_new_encoder ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO FRAME_TYPE_IFRAME ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/acconfig.sgml:Title ##### -->
-acconfig
-
-
-<!-- ##### MACRO sputv ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mpg123_get_songlen ##### -->
-<para>
-
-</para>
-
-@fr:
-@no:
-@Returns:
-
-<!-- ##### ARG System_Encode:video ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/output.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ERROR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/system.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/mpg123.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/getvlc.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/globals.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MACRO_BLOCK_ESCAPE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SLICE_START_CODE_MIN ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/gdkxvimage.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO TRAP ##### -->
-<para>
-
-</para>
-
-@txt:
-
-<!-- ##### ARG GstWinDec:bitdepth ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION Help ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### FUNCTION dvdsrc_get_type ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### TYPEDEF UINT16 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VIDEO_RGB08 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GST_PARSEAVI_STRL ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO STAT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION MPEGNonIntraQuantize ##### -->
-<para>
-
-</para>
-
-@matrix:
-@qptr:
-@qfact:
-
-<!-- ##### MACRO BufferContents ##### -->
-<para>
-
-</para>
-
-@vs:
-
-<!-- ##### MACRO DECODE_MAGIC_NUMBER ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/util.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### ARG VCDSrc:bytesperread ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION head_info ##### -->
-<para>
-
-</para>
-
-@buf:
-@n:
-@h:
-@Returns:
-
-<!-- ##### MACRO IN_SEQ_PARSE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SCREAM ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/mhead.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION MPEGIntraIQuantize ##### -->
-<para>
-
-</para>
-
-@matrix:
-@qptr:
-@qfact:
-
-<!-- ##### MACRO MARKER_DTS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TIMESTAMPS_PTS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GST_PARSEAVI_STRH_VIDS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/exponent.sgml:Title ##### -->
-exponent
-
-
-<!-- ##### SECTION ./tmpl/getvlc.sgml:Title ##### -->
-getvlc
-
-
-<!-- ##### TYPEDEF D9[9] ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_riff_next_buffer ##### -->
-<para>
-
-</para>
-
-@riff:
-@buf:
-@off:
-@Returns:
-
-<!-- ##### ARG GstVuMeter:volumeptr_left ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/grab.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/gtkoverlayimage.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MACROBLOCK_LAYER ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION SmpFrqIndex ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Returns:
-
-<!-- ##### MACRO POWERNORM ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION ReferenceDct ##### -->
-<para>
-
-</para>
-
-@matrix:
-@newmatrix:
-
-<!-- ##### MACRO IFF_ID_MPEG ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO IFF_ID_FORM ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO UBOUND ##### -->
-<para>
-
-</para>
-
-@index:
-@value:
-
-<!-- ##### FUNCTION gst_jpeg_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### ARG Ac3Parse:skip ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SYSTEM_START_CODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/exponent.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/itype.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mputb ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@b:
-
-<!-- ##### TYPEDEF VLCtab ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT Mpeg1MuxTimecode ##### -->
-<para>
-
-</para>
-
-@length:
-@original_length:
-@frame_type:
-@PTS:
-@DTS:
-
-<!-- ##### MACRO VSSC ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF UINT32 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO sropen ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO EXTENSION_START_CODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION EncodeDC ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@coef:
-@LocalEHuff:
-
-<!-- ##### MACRO VIDEO_RGB24 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG Audioscale:frequency ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/config.sgml:Title ##### -->
-config
-
-
-<!-- ##### FUNCTION RTjpeg_compress8 ##### -->
-<para>
-
-</para>
-
-@sp:
-@bp:
-@Returns:
-
-<!-- ##### FUNCTION mputv ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@n:
-@b:
-
-<!-- ##### MACRO T_X11HIQ ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/vlc.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION gdk_xvimage_destroy ##### -->
-<para>
-
-</para>
-
-@image:
-
-<!-- ##### MACRO MC_FRAME ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO UNIX ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VIDEO_YUV422 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DecodeDCTCoeff ##### -->
-<para>
-
-</para>
-
-@gb:
-@dct_coeff_tbl:
-@run:
-@level:
-
-<!-- ##### MACRO inline ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION ReadMBSHeader ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### FUNCTION gst_cobin_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### FUNCTION gst_win_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### FUNCTION bitstream_done ##### -->
-<para>
-
-</para>
-
-@bs:
-@Returns:
-
-<!-- ##### MACRO L_MTYPE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION JVCVInterpolateMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### ARG GstVolume:active ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION BoundQuantizeMatrix ##### -->
-<para>
-
-</para>
-
-@matrix:
-
-<!-- ##### MACRO VIDEO_RGB32 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF uint_8 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO IFF_ID_AIFF ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION dprintf ##### -->
-<para>
-
-</para>
-
-@fmt:
-@Varargs:
-
-<!-- ##### SECTION ./tmpl/dct.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MPEG2_SYSHEAD ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION js_bound ##### -->
-<para>
-
-</para>
-
-@Varargs:
-@Varargs:
-@Returns:
-
-<!-- ##### MACRO M_DECODER ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO EXP_D15 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SYSTEM_START_CODE_MIN ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MS_DOS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/getvlc.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF INT8 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/exponent.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO MACRO_BLOCK_STUFFING ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION DecodeAC ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@index:
-@matrix:
-
-<!-- ##### MACRO NUM_ATTR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION WriteStuff ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### FUNCTION mpg123_init_decode_tables ##### -->
-<para>
-
-</para>
-
-@de:
-@scale:
-
-<!-- ##### MACRO MPG_MD_MONO ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GOP_LENGTH ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO T_SIF ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/stream.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GST_PARSEWAV_UNKNOWN ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/system.sgml:Title ##### -->
-system
-
-
-<!-- ##### MACRO UNPACK_FBW ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT Mpeg2Meta ##### -->
-<para>
-
-</para>
-
-@packet_length:
-@PES_scrambling_control:
-@PES_priority:
-@data_alignment_indicator:
-@copyright:
-@original_or_copy:
-@PTS_DTS_flags:
-@ESCR_flag:
-@ES_rate_flag:
-@DSM_trick_mode_flag:
-@additional_copy_info_flag:
-@CRC_flag:
-@PES_extension_flag:
-@PES_header_data_length:
-@PTS:
-@DTS:
-@ESCR_base:
-@ESCR_extension:
-@ES_rate:
-@trick_mode_control:
-
-<!-- ##### FUNCTION mpeg1mux_buffer_shrink ##### -->
-<para>
-
-</para>
-
-@mb:
-@size:
-
-<!-- ##### FUNCTION InterpolativeBME ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### MACRO SC_TEMP ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstV4lSrc:mode ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION initparser ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION ac3dec_imdct_init ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO EXP_D25 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GST_AVIENCODER_MAX_VIDEO_PADS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_aviencoder_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### FUNCTION read_absthr ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Varargs:
-
-<!-- ##### FUNCTION Integer2TimeCode ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@fnum:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/debug.sgml:Title ##### -->
-debug
-
-
-<!-- ##### SECTION ./tmpl/prototypes.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### TYPEDEF motion_vectors_entry ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT GstRiffChunk ##### -->
-<para>
-
-</para>
-
-@offset:
-@id:
-@size:
-
-<!-- ##### MACRO STATUS_AUDIO_TIME_OUT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DVDSRC ##### -->
-<para>
-
-</para>
-
-@obj:
-
-<!-- ##### SECTION ./tmpl/htable.sgml:Title ##### -->
-htable
-
-
-<!-- ##### FUNCTION putbits_new_empty_buffer ##### -->
-<para>
-
-</para>
-
-@pb:
-@len:
-
-<!-- ##### MACRO ERROR_MARKER_STRUCTURE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION RTjpeg_decompress8 ##### -->
-<para>
-
-</para>
-
-@sp:
-@bp:
-
-<!-- ##### FUNCTION JP0HDecimateMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO MB_FORWARD ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ISO_END_CODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/acconfig.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/bitstream.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION ReadVSHeader ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@Returns:
-
-<!-- ##### MACRO SYNA_SIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION CopyBlock ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SBLIMIT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GRAB_ATTR_VOLUME ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO STATUS_AUDIO_END ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO InBounds ##### -->
-<para>
-
-</para>
-
-@var:
-@lo:
-@hi:
-@str:
-
-<!-- ##### FUNCTION BruteMotionEstimation ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@pmem:
-@fmem:
-
-<!-- ##### SECTION ./tmpl/musicin.sgml:Title ##### -->
-musicin
-
-
-<!-- ##### MACRO PICTURE_LAYER ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION BellCoreHInterpolateMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO DecodeCBP ##### -->
-<para>
-
-</para>
-
-@gb:
-@coded_bp:
-
-<!-- ##### MACRO MakeStructure ##### -->
-<para>
-
-</para>
-
-@named_st:
-
-<!-- ##### TYPEDEF D10[10] ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO L_SQUANT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SIGNAL GstVideoSink::frame-displayed ##### -->
-<para>
-
-</para>
-
-@gstvideosink: the object which received the signal.
-@arg1:
-
-<!-- ##### FUNCTION putbits_new_buffer ##### -->
-<para>
-
-</para>
-
-@pb:
-@buffer:
-@len:
-
-<!-- ##### MACRO SLICE_MIN_START_CODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF BLOCK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION HPFastBME ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@rx:
-@ry:
-@rm:
-@cx:
-@cy:
-@cm:
-@ox:
-@oy:
-
-<!-- ##### FUNCTION parse_auxdata ##### -->
-<para>
-
-</para>
-
-@syncinfo:
-@gb:
-
-<!-- ##### FUNCTION Decode ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@huff:
-@Returns:
-
-<!-- ##### MACRO GTK_OVERLAY_IMAGE_MEM ##### -->
-<para>
-
-</para>
-
-@obj:
-
-<!-- ##### MACRO FADE_HEAT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/dither.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION parse_bsi ##### -->
-<para>
-
-</para>
-
-@bsi:
-@gb:
-
-<!-- ##### SECTION ./tmpl/tableawd.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### ARG Mpeg2Parse:mux_rate ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO WHEREAMI ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VERSION ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO EXP_D45 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/util.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO L_FDBD ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION create_sys_header ##### -->
-<para>
-
-</para>
-
-@sys_header:
-@rate_bound:
-@audio_bound:
-@fixed:
-@CSPS:
-@audio_lock:
-@video_lock:
-@video_bound:
-@stream1:
-@buffer1_scale:
-@buffer1_size:
-@stream2:
-@buffer2_scale:
-@buffer2_size:
-@which_streams:
-
-<!-- ##### SECTION ./tmpl/mantissa.sgml:Title ##### -->
-mantissa
-
-
-<!-- ##### FUNCTION DecodeDC ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@LocalDHuff:
-@Returns:
-
-<!-- ##### MACRO DC_THREE_EIGHTHS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/proto.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/video.sgml:Title ##### -->
-video
-
-
-<!-- ##### FUNCTION TransposeMatrix ##### -->
-<para>
-
-</para>
-
-@matrix:
-@newmatrix:
-
-<!-- ##### SECTION ./tmpl/core.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO PACK_START ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GST_AVIENCODER_INITIAL ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/decoders.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO CODING_ID ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/gtkoverlayimage.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO SLICE_LAYER ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF DCTELEM ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO FUTURE_LOCK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO P_DCINTRA ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION crc_init ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/gstriff.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION gst_v4lsrc_push ##### -->
-<para>
-
-</para>
-
-@src:
-
-<!-- ##### MACRO SSLIMIT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_riff_id_to_fourcc ##### -->
-<para>
-
-</para>
-
-@id:
-@Returns:
-
-<!-- ##### TYPEDEF DCTBLOCK[DCTSIZE2] ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO CRC16_POLYNOMIAL ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ASCII ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mpg123_hsstell ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION gst_v4lsrc_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/dither.sgml:Title ##### -->
-dither
-
-
-<!-- ##### FUNCTION WriteBitAlloc ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION SM0HDecimateMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO BITS_IN_A_BYTE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION InstallFSIob ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@fs:
-@index:
-
-<!-- ##### MACRO SCALE_BLOCK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO CHARBOUND ##### -->
-<para>
-
-</para>
-
-@value:
-
-<!-- ##### FUNCTION putbits ##### -->
-<para>
-
-</para>
-
-@pb:
-@val:
-@n:
-
-<!-- ##### FUNCTION gst_example_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### MACRO SCALE_RANGE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION ByteAlign ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### MACRO DFLT_MOD ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO BUFFER_SIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VCDSRC_CLASS ##### -->
-<para>
-
-</para>
-
-@klass:
-
-<!-- ##### MACRO MPEG1MUX_BUFFER_TYPE ##### -->
-<para>
-
-</para>
-
-@mb:
-
-<!-- ##### MACRO READ_IOB ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MBSC_LENGTH ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/mhead.sgml:Title ##### -->
-mhead
-
-
-<!-- ##### MACRO LOGBLKSIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VCD_BYTES_PER_SECTOR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DecodeDCTDCSizeLum ##### -->
-<para>
-
-</para>
-
-@gb:
-@macro_val:
-
-<!-- ##### MACRO ERROR_MARKER ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mpg123_set_pointer ##### -->
-<para>
-
-</para>
-
-@fr:
-@Param2:
-
-<!-- ##### MACRO BEGIN ##### -->
-<para>
-
-</para>
-
-@name:
-
-<!-- ##### TYPEDEF DFFT[FFT_SIZE] ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NO_VID_STREAM ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DefaultIDct ##### -->
-<para>
-
-</para>
-
-@vs:
-@o:
-@i:
-
-<!-- ##### MACRO MPEGVER25 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION PrintDhuff ##### -->
-<para>
-
-</para>
-
-@huff:
-
-<!-- ##### SECTION ./tmpl/mantissa.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO P_TYPE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO EXSC ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/mpeg2enc.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO SC_SNR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/htable.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO EVENT_LAYER ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SYS_HEADER_START ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/musicin.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MV_FIELD ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION RTjpeg_mcompress8 ##### -->
-<para>
-
-</para>
-
-@sp:
-@bp:
-@lmask:
-@Returns:
-
-<!-- ##### FUNCTION stats_print_audblk ##### -->
-<para>
-
-</para>
-
-@audblk:
-
-<!-- ##### MACRO PSC ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MPG_MD_DUAL_CHANNEL ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DCTSIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DFLT_BRT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/stream.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gtk_xvimage_redraw ##### -->
-<para>
-
-</para>
-
-@widget:
-
-<!-- ##### SECTION ./tmpl/core.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/mpg123.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION BellCoreVInterpolateMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO PACKET_HEADER_SIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION seof ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@Returns:
-
-<!-- ##### FUNCTION ZigzagMatrix ##### -->
-<para>
-
-</para>
-
-@imatrix:
-@omatrix:
-
-<!-- ##### FUNCTION decode_sanity_check_init ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SEQUENCE_SCALABLE_EXTENSION_ID ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/stream.sgml:Title ##### -->
-stream
-
-
-<!-- ##### MACRO PADDING_STR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mrtell ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@Returns:
-
-<!-- ##### FUNCTION MakeStat ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### SECTION ./tmpl/common.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF SBS[2][3][SCALE_BLOCK][SBLIMIT] ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstWinEnc:last_frame_size ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/imdct.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/proto.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO swseek ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GST_PARSEAVI_HDRL ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/bit_allocate.sgml:Title ##### -->
-bit_allocate
-
-
-<!-- ##### FUNCTION WriteGOPHeader ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### SECTION ./tmpl/ctables.sgml:Title ##### -->
-ctables
-
-
-<!-- ##### MACRO MPEG1MUX_BUFFER_SPACE ##### -->
-<para>
-
-</para>
-
-@mb:
-
-<!-- ##### FUNCTION gst_parseavi_winloader_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### FUNCTION rb_init ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gdk_xvimage_init ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mpg123_do_layer1 ##### -->
-<para>
-
-</para>
-
-@fr:
-@Returns:
-
-<!-- ##### FUNCTION gst_stereo_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### FUNCTION mpg123_do_layer2 ##### -->
-<para>
-
-</para>
-
-@fr:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/decode.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION mpg123_do_layer3 ##### -->
-<para>
-
-</para>
-
-@fr:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/mpg123.sgml:Title ##### -->
-mpg123
-
-
-<!-- ##### MACRO USER_BUF_SIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TEMPSCAL_ID ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ALIGNING ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VOL_REF_NUM ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION decode_sanity_check ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/putbits.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/dither.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION UDFOpenDisc ##### -->
-<para>
-
-</para>
-
-@filename:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/decode.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION UDFReadLB ##### -->
-<para>
-
-</para>
-
-@fd:
-@Returns:
-
-<!-- ##### MACRO FINISHED_BLOCK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ISO11172_END ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstV4lSrc:tune ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT putbits_t ##### -->
-<para>
-
-</para>
-
-@outbfr:
-@outbase:
-@temp:
-@outcnt:
-@bytecnt:
-@len:
-@newlen:
-
-<!-- ##### FUNCTION quant_weight_coeff_sum ##### -->
-<para>
-
-</para>
-
-@blk:
-@i_quant_mat:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/tables.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/dvd_udf.sgml:Title ##### -->
-dvd_udf
-
-
-<!-- ##### FUNCTION pick_table ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Returns:
-
-<!-- ##### MACRO BLKSIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION audio_decode8_info ##### -->
-<para>
-
-</para>
-
-@info:
-
-<!-- ##### MACRO GST_AVIENCODER_MOVI ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_windec_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### FUNCTION MakeSubMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION gdk_xvimage_put ##### -->
-<para>
-
-</para>
-
-@window:
-@gc:
-@image:
-@xsrc:
-@ysrc:
-@wsrc:
-@hsrc:
-@xdest:
-@ydest:
-@wdest:
-@hdest:
-
-<!-- ##### SECTION ./tmpl/gtkxvimage.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SIGNAL GstWinEnc::frame-encoded ##### -->
-<para>
-
-</para>
-
-@gstwinenc: the object which received the signal.
-@arg1:
-
-<!-- ##### ARG Mp3Parse:skip ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO WINMULT ##### -->
-<para>
-
-</para>
-
-@x:
-@coef:
-
-<!-- ##### MACRO LAST ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO EXT_START_CODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT GdkXvImage ##### -->
-<para>
-
-</para>
-
-@type:
-@byte_order:
-@width:
-@height:
-@depth:
-@bpp:
-@bpl:
-@mem:
-
-<!-- ##### SECTION ./tmpl/ring_buffer.sgml:Title ##### -->
-ring_buffer
-
-
-<!-- ##### FUNCTION stats_print_syncinfo ##### -->
-<para>
-
-</para>
-
-@syncinfo:
-
-<!-- ##### FUNCTION gst_xa_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### ARG GstWinEnc:compression ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DCTSIZE2 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION WriteMBHeader ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### MACRO OK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mantissa_unpack ##### -->
-<para>
-
-</para>
-
-@bsi:
-@audblk:
-@gb:
-
-<!-- ##### MACRO GST_PARSEAVI_AVIH ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION ReadHeaderTrailer ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### FUNCTION gst_mpg123_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### ARG Mpeg2Subt:skip ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mpeg1mux_buffer_update_queued ##### -->
-<para>
-
-</para>
-
-@mb:
-@scr:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/mpeg2enc.sgml:Title ##### -->
-mpeg2enc
-
-
-<!-- ##### MACRO PICTURE_TEMPORAL_SCALABLE_EXTENSION_ID ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION MPEGIntraQuantize ##### -->
-<para>
-
-</para>
-
-@matrix:
-@qptr:
-@qfact:
-
-<!-- ##### SECTION ./tmpl/port.sgml:Title ##### -->
-port
-
-
-<!-- ##### FUNCTION Statistics ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@RefFS:
-@NewFS:
-
-<!-- ##### MACRO STOP ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### VARIABLE global_prefs ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/csize.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MARKER_JUST_PTS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/proto.sgml:Title ##### -->
-proto
-
-
-<!-- ##### SECTION ./tmpl/ring_buffer.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/dvd_udf.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/gstriff.sgml:Title ##### -->
-gstriff
-
-
-<!-- ##### SECTION ./tmpl/marker.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO MAX_SNR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO PI ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF frame_params ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/stats.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MPG_VER_25 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION CopyMem ##### -->
-<para>
-
-</para>
-
-@m1:
-@m2:
-
-<!-- ##### FUNCTION LoadFGroup ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@index:
-
-<!-- ##### FUNCTION TimeCode2Integer ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@tc:
-@Returns:
-
-<!-- ##### ARG GstSpectrum:width ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MPG_VER_1 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/gtkxvimage.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO MPG_VER_2 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG Videoscale:height ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION hdr_to_frps ##### -->
-<para>
-
-</para>
-
-@Param1:
-
-<!-- ##### MACRO GRAB_ATTR_MUTE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION ClearFS ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### MACRO MACROBLOCK_INTRA ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/huffman.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION OpenTableFile ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/marker.sgml:Title ##### -->
-marker
-
-
-<!-- ##### TYPEDEF D1408[1408] ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VIDEO_GRAY ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION audio_decode8_init ##### -->
-<para>
-
-</para>
-
-@h:
-@framebytes_arg:
-@reduction_code:
-@transform_code:
-@convert_code:
-@freq_limit:
-@Returns:
-
-<!-- ##### MACRO L_IVAR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstSpindentity:control ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/dga.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION WriteBlock ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@store:
-
-<!-- ##### USER_FUNCTION Ifunc ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### ENUM GstV4lSrcFlags ##### -->
-<para>
-
-</para>
-
-@GST_V4LSRC_OPEN:
-
-<!-- ##### FUNCTION dither_gen ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO NOISE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/port.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO STARTCODE_FOUND ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/RTjpeg.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION MakeImage ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### FUNCTION MakeFGroup ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### MACRO MB_QUANT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_riff_get_chunk ##### -->
-<para>
-
-</para>
-
-@riff:
-@fourcc:
-@Returns:
-
-<!-- ##### FUNCTION SaveMem ##### -->
-<para>
-
-</para>
-
-@filename:
-@mem:
-@Returns:
-
-<!-- ##### MACRO L_BUFFERSIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DCT_COEFF_NEXT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VIDEO_BGR24 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION bitstream_get ##### -->
-<para>
-
-</para>
-
-@bs:
-@num_bits:
-@Returns:
-
-<!-- ##### MACRO NOISY ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MINIMUM ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/ac3.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO BS_FORMAT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION WriteHdr ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Param2:
-
-<!-- ##### ARG Videoscale:width ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO BOOLEAN ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_mpegaudio_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### MACRO PACK_START_CODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF DFFT2[FFT_SIZE/2] ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SYS_HEADER_LENGTH ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/buffer.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION RTjpeg_compressYUV420 ##### -->
-<para>
-
-</para>
-
-@sp:
-@bp:
-@Returns:
-
-<!-- ##### MACRO DFLT_SFQ ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION RTjpeg_compressYUV422 ##### -->
-<para>
-
-</para>
-
-@sp:
-@bp:
-@Returns:
-
-<!-- ##### TYPEDEF JSBS[3][SCALE_BLOCK][SBLIMIT] ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION head_info2 ##### -->
-<para>
-
-</para>
-
-@buf:
-@n:
-@h:
-@br:
-@Returns:
-
-<!-- ##### FUNCTION head_info3 ##### -->
-<para>
-
-</para>
-
-@buf:
-@n:
-@h:
-@br:
-@searchForward:
-@Returns:
-
-<!-- ##### TYPEDEF IFFT[FFT_SIZE] ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MEM ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VIDEO_BGR32 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MUTE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO START_BLOCK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/tables.sgml:Title ##### -->
-tables
-
-
-<!-- ##### ARG GstV4lSrc:volume ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SEQUENCE_END_CODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO P_FORBIDDEN ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/output.sgml:Title ##### -->
-output
-
-
-<!-- ##### FUNCTION audio_decode ##### -->
-<para>
-
-</para>
-
-@bs:
-@pcm:
-@Returns:
-
-<!-- ##### FUNCTION mpg123_synth_1to1 ##### -->
-<para>
-
-</para>
-
-@fr:
-@bandPtr:
-@channel:
-@out:
-@pnt:
-@Returns:
-
-<!-- ##### FUNCTION gst_riff_get_nextlikely ##### -->
-<para>
-
-</para>
-
-@riff:
-@Returns:
-
-<!-- ##### FUNCTION II_CRC_calc ##### -->
-<para>
-
-</para>
-
-@Param1:
-
-<!-- ##### SECTION ./tmpl/stats.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/gtkoverlayimage.sgml:Title ##### -->
-GtkOverlayImage
-
-
-<!-- ##### MACRO D_TYPE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstWinDec:avi_header ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SPATIAL_TEMPORAL_WEIGHT_CODE_FLAG ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION MakeFStore ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### FUNCTION PrintEhuff ##### -->
-<para>
-
-</para>
-
-@huff:
-
-<!-- ##### MACRO MB_PATTERN ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_spindentity_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### MACRO P_INTERPOLATED ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/config.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO BLOCK_LAYER ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ERROR_WRITE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/mantissa.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### VARIABLE Clip ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/l2tables.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION SuperSubCompensate ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@fmcmatrix:
-@bmcmatrix:
-@imcmatrix:
-@XIob:
-@YIob:
-
-<!-- ##### MACRO STREAM_UNDERFLOW ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SEQUENCE_HEADER_CODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO FILETYPE_ENCODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstVuMeter:volumeptr ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/buffer.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/csize.sgml:Title ##### -->
-csize
-
-
-<!-- ##### MACRO DELTA_BIT_NEW ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION bit_allocate ##### -->
-<para>
-
-</para>
-
-@fscod:
-@bsi:
-@audblk:
-
-<!-- ##### SECTION ./tmpl/downmix.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION BitrateIndex ##### -->
-<para>
-
-</para>
-
-@Varargs:
-@Varargs:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/crc.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MAC_WINDOW_SIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION RTjpeg_init_mcompress ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_mpeg_play_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### ARG VCDSrc:track ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/config.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/stats.sgml:Title ##### -->
-stats
-
-
-<!-- ##### SECTION ./tmpl/musicin.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO FRAME_TYPE_BFRAME ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/mpeg2dec.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION MakeFileNames ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### MACRO IT_QCIF ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstMpeg2enc:frames_per_second ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GST_AVIENCODER_MAX_AUDIO_PADS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION WriteVSHeader ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### FUNCTION WriteMBSHeader ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### ARG GstVideoSink:frames_displayed ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/csize.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VCDSRC ##### -->
-<para>
-
-</para>
-
-@obj:
-
-<!-- ##### MACRO STREAMS_BOTH ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION ChenIDct ##### -->
-<para>
-
-</para>
-
-@x:
-@y:
-
-<!-- ##### FUNCTION LoadMem ##### -->
-<para>
-
-</para>
-
-@filename:
-@width:
-@height:
-@omem:
-@Returns:
-
-<!-- ##### MACRO MPEGLAYER1 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MPEGLAYER2 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MPEGLAYER3 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstV4lSrc:height ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ERROR_HUFFMAN_READ ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO WRITE_MODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_windec_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### MACRO CONST_BITS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO sgetb ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/stats.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO sgetc ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION seek_sync ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### ARG GstV4lSrc:color ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/size.sgml:Title ##### -->
-size
-
-
-<!-- ##### ARG GstSmooth:tolerance ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstVideoSink:xv_enabled ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MC_FIELD ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO sgetv ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION SetPointerBlock ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION bitcount ##### -->
-<para>
-
-</para>
-
-@pb:
-@Returns:
-
-<!-- ##### MACRO DEFAULT_QUANTIZATION ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstVuMeter:volumeptr_right ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstSynaesthesia:widget ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION dct64_486 ##### -->
-<para>
-
-</para>
-
-@a:
-@b:
-@samples:
-
-<!-- ##### MACRO DFLT_LAY ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GST_PARSEAVI_MAX_VIDEO_PADS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ERROR_INIT_FILE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SEQSCAL_ID ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION downmix ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Param2:
-
-<!-- ##### MACRO SYNA_BITS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION MakeFrame ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### FUNCTION gst_spindentity_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### SECTION ./tmpl/itype.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/gstriff.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DHUFF ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/putbits.sgml:Title ##### -->
-putbits
-
-
-<!-- ##### FUNCTION gst_volume_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/downmix.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mpg123_compute_tpf ##### -->
-<para>
-
-</para>
-
-@fr:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/itype.sgml:Title ##### -->
-itype
-
-
-<!-- ##### MACRO GST_RIFF_ENOTRIFF ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/crc.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/globals.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION MakeFS ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@flag:
-
-<!-- ##### SECTION ./tmpl/decode.sgml:Title ##### -->
-decode
-
-
-<!-- ##### MACRO GRAB_ATTR_CONTRAST ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO L_BD ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_smooth_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### MACRO MPG_MD_JOINT_STEREO ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO FRAME_TYPE_AUDIO ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MB_STUFFING ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO FAR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF GdkXvImageType ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstAviEncoder:audio ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/output.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO srseek ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_synaesthesia_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### FUNCTION VerifyFiles ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### SECTION ./tmpl/ctables.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TABLES_PATH ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VIDEO_YUV420P ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/rematrix.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/bit_allocate.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/l2tables.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mpeg1mux_buffer_queue ##### -->
-<para>
-
-</para>
-
-@mb:
-@buf:
-
-<!-- ##### MACRO CHROMA420 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/bitstream.sgml:Title ##### -->
-bitstream
-
-
-<!-- ##### MACRO CHROMA422 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO swtell ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION PrintIob ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### MACRO IFF_ID_SSND ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_win_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### MACRO LN_TO_LOG10 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION WriteSamples ##### -->
-<para>
-
-</para>
-
-@Varargs:
-
-<!-- ##### FUNCTION rb_begin_read ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO T_X11 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/prototypes.sgml:Title ##### -->
-prototypes
-
-
-<!-- ##### FUNCTION mgetb ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/L3.sgml:Title ##### -->
-L3
-
-
-<!-- ##### FUNCTION crc_process ##### -->
-<para>
-
-</para>
-
-@data:
-
-<!-- ##### MACRO L_IDBD ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MACROBLOCK_PATTERN ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_videosink_pull ##### -->
-<para>
-
-</para>
-
-@pad:
-@Returns:
-
-<!-- ##### MACRO DVDSRC_CLASS ##### -->
-<para>
-
-</para>
-
-@klass:
-
-<!-- ##### MACRO DELTA_BIT_REUSE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/qtables.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_median_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### MACRO AUSHIFT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MAX_SECTOR_SIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/encoder.sgml:Title ##### -->
-encoder
-
-
-<!-- ##### FUNCTION mpg123_decode_frame ##### -->
-<para>
-
-</para>
-
-@de:
-@inbuf:
-@inlen:
-@outbuf:
-@outlen:
-@Returns:
-
-<!-- ##### FUNCTION mpg123_rewindNbits ##### -->
-<para>
-
-</para>
-
-@fr:
-@bits:
-
-<!-- ##### MACRO SCALE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION PrintMatrix ##### -->
-<para>
-
-</para>
-
-@matrix:
-
-<!-- ##### ARG GstV4lSrc:norm ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mwopen ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@filename:
-
-<!-- ##### FUNCTION mgetv ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@n:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/marker.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstMedian:active ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION zeroflush ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### MACRO MAXFRAMESIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO AUDIO_STREAMS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO UNPACK_LFE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/parse.sgml:Title ##### -->
-parse
-
-
-<!-- ##### FUNCTION gst_parseau_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### MACRO CBANDS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION stats_print_bsi ##### -->
-<para>
-
-</para>
-
-@bsi:
-
-<!-- ##### MACRO MB_WEIGHT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO FSTORE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/tableawd.sgml:Title ##### -->
-tableawd
-
-
-<!-- ##### MACRO SLICE_MAX_START ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VIDEO_YUV422P ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO IC_QUARTER ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TIMESTAMPS_PTS_DTS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION Add2Compensate ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@matrix:
-@XIob:
-@YIob:
-
-<!-- ##### MACRO CHROMA444 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/parse.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION BoundIQuantizeMatrix ##### -->
-<para>
-
-</para>
-
-@matrix:
-
-<!-- ##### SECTION ./tmpl/stamp.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO CLOCKS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION MPEGNonIntraIQuantize ##### -->
-<para>
-
-</para>
-
-@matrix:
-@qptr:
-@qfact:
-
-<!-- ##### MACRO SEEK_END ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mpg123_synth_1to1_486 ##### -->
-<para>
-
-</para>
-
-@fr:
-@bandPtr:
-@channel:
-@out:
-@nb_blocks:
-@Returns:
-
-<!-- ##### FUNCTION YUVSaveMem ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO IQUANT_SCALE_POW2 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO PICTURE_START_CODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MPEG2PLAY_HEIGHT ##### -->
-<para>
-
-</para>
-
-@mp:
-
-<!-- ##### MACRO CAN_AUDIO_VOLUME ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/bit_allocate.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/debug.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### TYPEDEF IN[2][HAN_SIZE] ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/common.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION RTjpeg_init_decompress ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO CREATOR_ENCODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_spectrum_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### MACRO srclose ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstSmooth:active ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DCTBITS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstMedian:filtersize ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SIGNAL GstMpeg_play::frame-decoded ##### -->
-<para>
-
-</para>
-
-@gstmpeg_play: the object which received the signal.
-@arg1:
-
-<!-- ##### MACRO ERROR_READ ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO USER_START_CODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Pads ##### -->
-<refsect1>
- <title>pads</title>
- <para>
- test
- </para>
-</refsect1>
-
-
-<!-- ##### FUNCTION mpg123_huffman_count1 ##### -->
-<para>
-
-</para>
-
-@Varargs:
-@Param2:
-
-<!-- ##### FUNCTION gtk_xvimage_set ##### -->
-<para>
-
-</para>
-
-@image:
-@val:
-
-<!-- ##### FUNCTION RTjpeg_yuv420rgb ##### -->
-<para>
-
-</para>
-
-@buf:
-@rgb:
-
-<!-- ##### FUNCTION mrclose ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### MACRO ZERO_STUFFING_BYTE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO COPYRIGHT_EXTENSION_ID ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO WRITE_IOB ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_parseavi_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### MACRO P_INTRA ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_mpeg2play_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### MACRO SEEK_CUR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VSSC_LENGTH ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ENUM DVDSrcFlags ##### -->
-<para>
-
-</para>
-
-@DVDSRC_OPEN:
-
-<!-- ##### SECTION ./tmpl/port.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO FrameRate ##### -->
-<para>
-
-</para>
-
-@vs:
-
-<!-- ##### MACRO DBMIN ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstVideoSink:widget ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GTK_OVERLAY_IMAGE_HEIGHT ##### -->
-<para>
-
-</para>
-
-@obj:
-
-<!-- ##### MACRO MPEG2PLAY_WIDTH ##### -->
-<para>
-
-</para>
-
-@mp:
-
-<!-- ##### MACRO GTK_OVERLAY_IMAGE_WIDTH ##### -->
-<para>
-
-</para>
-
-@obj:
-
-<!-- ##### FUNCTION PrintImage ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### SECTION ./tmpl/gtkxvimage.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_xa_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### MACRO CB_FRACTION ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION ClearToHeader ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@Returns:
-
-<!-- ##### FUNCTION mpegaudio_encode_frame ##### -->
-<para>
-
-</para>
-
-@enc:
-@inbuf:
-@outbuf:
-@outlen:
-@Returns:
-
-<!-- ##### MACRO UDSC_LENGTH ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO BUFFER_TYPE_AUDIO ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/debug.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_riff_get_chunk_list ##### -->
-<para>
-
-</para>
-
-@riff:
-@Returns:
-
-<!-- ##### FUNCTION MakeMask ##### -->
-<para>
-
-</para>
-
-@x:
-@y:
-@mask:
-@XIob:
-
-<!-- ##### MACRO MPEG_AUDIO_ID ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION RTjpeg_set_test ##### -->
-<para>
-
-</para>
-
-@i:
-
-<!-- ##### MACRO MAX_U_32_NUM ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MPEG1MUX_BUFFER_QUEUED ##### -->
-<para>
-
-</para>
-
-@mb:
-
-<!-- ##### MACRO I_TYPE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO FADE_STARS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO PICTURE_DISPLAY_EXTENSION_ID ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO PI64 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MC_DMV ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO FRAME_PICTURE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/main.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mpg123_huffman_decoder ##### -->
-<para>
-
-</para>
-
-@Varargs:
-@Param2:
-
-<!-- ##### MACRO CONTINUE_BLOCK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MPEGVER1 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MPEGVER2 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstV4lSrc:format ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_smoothwave_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### FUNCTION ClearMem ##### -->
-<para>
-
-</para>
-
-@m1:
-
-<!-- ##### MACRO GROUP_START_CODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO STUFFING_BYTE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_riff_get_chunk_number ##### -->
-<para>
-
-</para>
-
-@riff:
-@number:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/gstriff.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION XHInterpolateMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION mpg123_head_check ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Returns:
-
-<!-- ##### MACRO PACKAGE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/downmix.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/dga.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO QUANT_ID ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/config.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstAviEncoder:video ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mpg123_compute_bpf ##### -->
-<para>
-
-</para>
-
-@fr:
-@Returns:
-
-<!-- ##### ARG GstV4lSrc:input ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/acconfig.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO FFT_SIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/common.sgml:Title ##### -->
-common
-
-
-<!-- ##### SECTION ./tmpl/common.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/uncouple.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION YUVLoadMem ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION bitstream_open ##### -->
-<para>
-
-</para>
-
-@file:
-@Returns:
-
-<!-- ##### FUNCTION MpegDecodeIPBDFrame ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### FUNCTION CBPEncodeAC ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@index:
-@matrix:
-
-<!-- ##### MACRO MPEG1MUX_BUFFER_DATA ##### -->
-<para>
-
-</para>
-
-@mb:
-
-<!-- ##### SECTION ./tmpl/rematrix.sgml:Title ##### -->
-rematrix
-
-
-<!-- ##### MACRO GST_PARSEWAV_CHUNK_DATA ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF SUB[2][3][SCALE_BLOCK][SBLIMIT] ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GST_PARSEWAV_DATA ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION Bpos ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@hp:
-@vp:
-@h:
-@v:
-@Returns:
-
-<!-- ##### FUNCTION imdct ##### -->
-<para>
-
-</para>
-
-@bsi:
-@audblk_t:
-@coeffs:
-@samples:
-
-<!-- ##### SECTION ./tmpl/crc.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION MpegEncodeIPBDFrame ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### MACRO PERMITTED_SPATIAL_TEMPORAL_WEIGHT_CLASS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DCT_ERROR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO IQUANT_SCALE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/proto.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO VSEC_LENGTH ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION vcdsrc_get_type ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION gst_xing_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### FUNCTION InitFS ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### FUNCTION rb_end_read ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO IN_SLICE_PARSE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO L_PTYPE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO IC_THREE_EIGHTHS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/RTjpeg.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### TYPEDEF mb_type_entry ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/buffer.sgml:Title ##### -->
-buffer
-
-
-<!-- ##### MACRO EHUFF ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/huffman.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/dga.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_videosink_dga_init ##### -->
-<para>
-
-</para>
-
-@sink:
-@Returns:
-
-<!-- ##### MACRO SEQUENCE_EXTENSION_ID ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO USER_DATA_START_CODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/l2tables.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstSynaesthesia:width ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION MakeMem ##### -->
-<para>
-
-</para>
-
-@width:
-@height:
-@Returns:
-
-<!-- ##### MACRO VIDEO_MJPEG ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO IT_NTSC ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO BoundValue ##### -->
-<para>
-
-</para>
-
-@var:
-@lo:
-@hi:
-@str:
-
-<!-- ##### FUNCTION gst_parseavi_winloader_handle ##### -->
-<para>
-
-</para>
-
-@parseavi:
-@buf:
-
-<!-- ##### FUNCTION cvt_to_wave_init ##### -->
-<para>
-
-</para>
-
-@Varargs:
-
-<!-- ##### SECTION ./tmpl/ring_buffer.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstV4lSrc:contrast ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO T_PPM ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GST_PARSEAVI_UNKNOWN ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/decoders.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstSmoothWave:width ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NOISY_MIN_MNR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DecodeMotionVectors ##### -->
-<para>
-
-</para>
-
-@gb:
-@value:
-
-<!-- ##### MACRO ERROR_PARAMETER ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION SavePartialMem ##### -->
-<para>
-
-</para>
-
-@filename:
-@pwidth:
-@pheight:
-@mem:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/main.sgml:Title ##### -->
-main
-
-
-<!-- ##### FUNCTION MakeSuperMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO KB_OK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION SetCCITT ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### ARG GstV4lSrc:tuned ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION LoadPartialMem ##### -->
-<para>
-
-</para>
-
-@filename:
-@pwidth:
-@pheight:
-@width:
-@height:
-@omem:
-@Returns:
-
-<!-- ##### FUNCTION ReadHeaderHeader ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@Returns:
-
-<!-- ##### MACRO MAXIMUM_SOURCES ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/gtkxvimage.sgml:Title ##### -->
-GtkXvImage
-
-
-<!-- ##### FUNCTION gst_vumeter_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### TYPEDEF UINT8 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO EXP_REUSE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mpeg1encoder_new_picture ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@data:
-@size:
-@state:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/jdw.sgml:Title ##### -->
-jdw
-
-
-<!-- ##### ARG GstVuMeter:volume_right ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/tables.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION readalign ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### FUNCTION parser ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstSmooth:filtersize ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO T_YUV ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO AUDIO_STR_0 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO AFTER_PACKET_LENGTH ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO PATH_SEPARATOR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/video.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION uncouple ##### -->
-<para>
-
-</para>
-
-@bsi:
-@audblk:
-@coeffs:
-
-<!-- ##### FUNCTION create_sector ##### -->
-<para>
-
-</para>
-
-@sector:
-@pack:
-@sys_header:
-@packet_size:
-@inputbuffer:
-@type:
-@buffer_scale:
-@buffer_size:
-@buffers:
-@PTS:
-@DTS:
-@timestamps:
-@which_streams:
-
-<!-- ##### FUNCTION XVInterpolateMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION WriteScale ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ERROR_HUFFMAN_ENCODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mpg123_synth_1to1_pent ##### -->
-<para>
-
-</para>
-
-@bandPtr:
-@channel:
-@out:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/mem.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO TONE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION InstallIob ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@index:
-
-<!-- ##### MACRO FADE_FLAME ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MB_QUANTUM ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF DCTCOEF ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION CECASHInterpolateMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION PrintFrame ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### SECTION ./tmpl/decode.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ENUM VCDSrcFlags ##### -->
-<para>
-
-</para>
-
-@VCDSRC_OPEN:
-
-<!-- ##### SECTION ./tmpl/port.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SPATSCAL_ID ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO T_TGA ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF sint_8 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/param.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT GdkXvImagePrivate ##### -->
-<para>
-
-</para>
-
-@image:
-@x_shm_info:
-@im_adaptor:
-@im_port:
-@im_format:
-
-<!-- ##### SECTION ./tmpl/ctables.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/util.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MPEG2PLAY_FORMAT ##### -->
-<para>
-
-</para>
-
-@mp:
-
-<!-- ##### FUNCTION CBPDecodeAC ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@index:
-@matrix:
-
-<!-- ##### FUNCTION mpeg1encoder_new_encoder ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION gst_smooth_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### TYPEDEF uint_16 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/prototypes.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO L_BVAR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GST_PARSEAVI_STRH_AUDS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION read_bit_alloc ##### -->
-<para>
-
-</para>
-
-@Varargs:
-@Param2:
-@Returns:
-
-<!-- ##### MACRO BUFFER_TYPE_VIDEO ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/huffman.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DVD_VIDEO_LB_LEN ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO RUN_SHIFT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO BLOCKWIDTH ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/uncouple.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ILBOUND ##### -->
-<para>
-
-</para>
-
-@ptr:
-@index:
-@value:
-
-<!-- ##### MACRO MARKER_PTS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION parse_syncinfo ##### -->
-<para>
-
-</para>
-
-@syncinfo:
-@gb:
-
-<!-- ##### FUNCTION memcheck ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Varargs:
-@Varargs:
-@Returns:
-
-<!-- ##### MACRO srtell ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION IZigzagMatrix ##### -->
-<para>
-
-</para>
-
-@imatrix:
-@omatrix:
-
-<!-- ##### FUNCTION SM0HInterpolateMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### ARG GstVolume:volume ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DC_ONE_EIGHTH ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION JP0VDecimateMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### SECTION ./tmpl/L3.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/vlc.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MAXIMUM_FGROUP ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mropen ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@filename:
-
-<!-- ##### VARIABLE mpg123_conv16to8 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO IT_CIF ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_jpegdec_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### TYPEDEF uint_32 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstSmoothWave:widget ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SIXTYFOUR_BIT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION extended_to_double ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Param2:
-
-<!-- ##### SECTION ./tmpl/acconfig.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO RESERVED_BYTE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SEQ_ID ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/dct.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/stamp.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/downmix.sgml:Title ##### -->
-downmix
-
-
-<!-- ##### SECTION ./tmpl/core.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO swclose ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mpeg2play_new_decoder ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO MPEG2_PACKHEAD ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GST_PARSEAVI_MAX_AUDIO_PADS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO P_PREDICTED ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO PACKET_START ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO L_QOFFS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstV4lSrc:mute ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MB_ESCAPE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO LITTLE_ENDIAN_ARCHITECTURE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstVuMeter:volume_left ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION exponent_unpack ##### -->
-<para>
-
-</para>
-
-@bsi:
-@audblk:
-@coeffs:
-
-<!-- ##### FUNCTION WriteFS ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### MACRO RING_BUF_SIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mwclose ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### MACRO SLICE_MIN_START ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstVideoSink:frame_time ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DecodeDCTCoeffNext ##### -->
-<para>
-
-</para>
-
-@gb:
-@runval:
-@levelval:
-
-<!-- ##### MACRO VIDEO_RGB15_BE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION RTjpeg_yuv422rgb ##### -->
-<para>
-
-</para>
-
-@buf:
-@rgb:
-
-<!-- ##### SECTION ./tmpl/size.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION CECASVInterpolateMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO ALL_LAYERS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstV4lSrc:width ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION RTjpeg_mcompress ##### -->
-<para>
-
-</para>
-
-@sp:
-@bp:
-@lmask:
-@cmask:
-@Returns:
-
-<!-- ##### MACRO BINARY ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DVD_UDF_VERSION ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/stamp.sgml:Title ##### -->
-stamp
-
-
-<!-- ##### MACRO DecodeMBTypeB ##### -->
-<para>
-
-</para>
-
-@gb:
-@quant:
-@motion_fwd:
-@motion_bwd:
-@pat:
-@intra:
-
-<!-- ##### SECTION ./tmpl/dct.sgml:Title ##### -->
-dct
-
-
-<!-- ##### FUNCTION stats_print_banner ##### -->
-<para>
-
-</para>
-
-@syncinfo:
-@bsi:
-
-<!-- ##### MACRO GTK_OVERLAY_IMAGE_DEPTH ##### -->
-<para>
-
-</para>
-
-@obj:
-
-<!-- ##### MACRO UNPACK_CPL ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DecodeMBTypeI ##### -->
-<para>
-
-</para>
-
-@gb:
-@quant:
-@motion_fwd:
-@motion_bwd:
-@pat:
-@intra:
-
-<!-- ##### MACRO GTK_OVERLAY_IMAGE_PIXEL_SIZE ##### -->
-<para>
-
-</para>
-
-@obj:
-
-<!-- ##### FUNCTION gst_median_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### FUNCTION SM0VDecimateMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### SECTION ./tmpl/output.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/buffer.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DecodeMBTypeP ##### -->
-<para>
-
-</para>
-
-@gb:
-@quant:
-@motion_fwd:
-@motion_bwd:
-@pat:
-@intra:
-
-<!-- ##### FUNCTION CreateFrameSizes ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### MACRO FRAME_TYPE_PFRAME ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO IFF_ID_COMM ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION parse_audblk ##### -->
-<para>
-
-</para>
-
-@bsi:
-@audblk:
-@gb:
-
-<!-- ##### MACRO PACK_HEADER_SIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/tables.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/huffman.sgml:Title ##### -->
-huffman
-
-
-<!-- ##### FUNCTION RTjpeg_init_compress ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/param.sgml:Title ##### -->
-param
-
-
-<!-- ##### MACRO GLOBAL ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO STEREO ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/system.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/l2tables.sgml:Title ##### -->
-l2tables
-
-
-<!-- ##### MACRO IOBUF ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION SetMem ##### -->
-<para>
-
-</para>
-
-@value:
-@m1:
-
-<!-- ##### MACRO SLICE_MAX_START_CODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION SonyHInterpolateMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### TYPEDEF uint_64 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/rematrix.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ERROR_BOUNDS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO L_MQUANT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TOP_FIELD ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION I_CRC_calc ##### -->
-<para>
-
-</para>
-
-@Param1:
-
-<!-- ##### FUNCTION SM0VInterpolateMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION MakeBlock ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION NumericQ ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Returns:
-
-<!-- ##### MACRO MPEG1MUX_BUFFER_FIRST_TIMECODE ##### -->
-<para>
-
-</para>
-
-@mb:
-
-<!-- ##### SECTION ./tmpl/grab.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF SAMPLEINT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/vlc.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_mpeg1encoder_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### SECTION ./tmpl/main.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GST_PARSEWAV_CHUNK_FMT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MC_16X8 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VIDEO_LUT2 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VIDEO_LUT4 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION BoundIntegerMatrix ##### -->
-<para>
-
-</para>
-
-@matrix:
-
-<!-- ##### SECTION ./tmpl/putbits.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF vFunc() ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TYPE_FORMAT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/stamp.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO FADE_WAVE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO BLOCKHEIGHT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION set_mac_file_attr ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/mpg123.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO LEVEL_MASK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ASM_X86_OLD ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO IMAGE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DISPLAY_LOCK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION ReadFS ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### SECTION ./tmpl/mem.sgml:Title ##### -->
-mem
-
-
-<!-- ##### FUNCTION WriteVEHeader ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### ARG GstSynaesthesia:height ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/grab.sgml:Title ##### -->
-grab
-
-
-<!-- ##### FUNCTION PrintTable ##### -->
-<para>
-
-</para>
-
-@table:
-
-<!-- ##### SECTION ./tmpl/encoder.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GRAB_ATTR_MODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION i_audio_decode ##### -->
-<para>
-
-</para>
-
-@bs:
-@pcm:
-@Returns:
-
-<!-- ##### FUNCTION alignbits ##### -->
-<para>
-
-</para>
-
-@pb:
-
-<!-- ##### MACRO PAST_LOCK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/parse.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT GstParseWavFormat ##### -->
-<para>
-
-</para>
-
-@wFormatTag:
-@wChannels:
-@dwSamplesPerSec:
-@dwAvgBytesPerSec:
-@wBlockAlign:
-@wBitsPerSample:
-
-<!-- ##### MACRO DecodeDCTDCSizeChrom ##### -->
-<para>
-
-</para>
-
-@gb:
-@macro_val:
-
-<!-- ##### MACRO FLOAT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION cvt_to_wave ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Param2:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/tableawd.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/mantissa.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/decoders.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION gtk_xvimage_new ##### -->
-<para>
-
-</para>
-
-@val:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/grab.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ERROR_PREMATURE_EOF ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION rb_begin_write ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO LEVEL_SHIFT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ERROR_MEMORY ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_parseau_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### SECTION ./tmpl/mem.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO WINBITS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF mb_addr_inc_entry ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION ParityMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO SKIP_TO_START_CODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MPG_LAYER_1 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GRAB_ATTR_HUE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MPG_LAYER_2 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_videosink_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### MACRO UDSC ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MPG_LAYER_3 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO gst_cobin_destroy ##### -->
-<para>
-
-</para>
-
-@cobin:
-
-<!-- ##### FUNCTION gst_videosink_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### MACRO COEFFSUM_SCALE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/param.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/ring_buffer.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION ReadBlock ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@store:
-
-<!-- ##### MACRO MACROBLOCK_QUANT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG VCDSrc:location ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mpg123_decode_header ##### -->
-<para>
-
-</para>
-
-@fr:
-@header:
-@Returns:
-
-<!-- ##### MACRO DFLT_EMP ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/video.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO T_Y_U_V ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF DSBL[SBLIMIT] ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NO_STARTCODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO L_BDBD ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DCT_COEFF_FIRST ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SC_DP ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_smoothwave_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### MACRO IC_ONE_EIGHTH ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION RTjpeg_yuvrgb8 ##### -->
-<para>
-
-</para>
-
-@buf:
-@rgb:
-
-<!-- ##### MACRO IUBOUND ##### -->
-<para>
-
-</para>
-
-@ptr:
-@index:
-@value:
-
-<!-- ##### ARG GstWinEnc:bitrate ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/RTjpeg.sgml:Title ##### -->
-RTjpeg
-
-
-<!-- ##### SECTION ./tmpl/htable.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION new_ext ##### -->
-<para>
-
-</para>
-
-@filename:
-@extname:
-@Returns:
-
-<!-- ##### MACRO VIDEO_RGB16_BE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_riff_fourcc_to_id ##### -->
-<para>
-
-</para>
-
-@fourcc:
-@Returns:
-
-<!-- ##### FUNCTION gst_jpegdec_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### FUNCTION SonyVInterpolateMem ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION gtk_overlay_image_resize ##### -->
-<para>
-
-</para>
-
-@widget:
-@width:
-@height:
-
-<!-- ##### MACRO END_OF_BLOCK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/globals.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### FUNCTION audio_decode8 ##### -->
-<para>
-
-</para>
-
-@bs:
-@pcmbuf:
-@Returns:
-
-<!-- ##### MACRO MARKER_NO_TIMESTAMPS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION ClearMatrix ##### -->
-<para>
-
-</para>
-
-@matrix:
-
-<!-- ##### FUNCTION WritePictureHeader ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### MACRO STATUS_VIDEO_END ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/mem.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_stereo_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### FUNCTION putbits_init ##### -->
-<para>
-
-</para>
-
-@pb:
-
-<!-- ##### FUNCTION mwseek ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@distance:
-
-<!-- ##### SECTION ./tmpl/prototypes.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GST_PARSEAVI_MOVI ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstWinEnc:avi_header ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/core.sgml:Title ##### -->
-core
-
-
-<!-- ##### FUNCTION double_to_extended ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Param2:
-
-<!-- ##### FUNCTION dct64 ##### -->
-<para>
-
-</para>
-
-@dt:
-@out0:
-@out1:
-@samples:
-
-<!-- ##### SECTION ./tmpl/vlc.sgml:Title ##### -->
-vlc
-
-
-<!-- ##### MACRO ERROR_NONE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mpg123_synth_1to1_mono ##### -->
-<para>
-
-</para>
-
-@fr:
-@bandPtr:
-@samples:
-@pnt:
-@Returns:
-
-<!-- ##### ARG GstStereo:active ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO LITTLE_ENDIAN ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/mpeg2dec.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/ac3.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MB_CLASS4 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SKIPPED_PICTURE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SEQ_END_CODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/exponent.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION Encode ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@val:
-@huff:
-@Returns:
-
-<!-- ##### FUNCTION convertRGBtoYUV ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@source:
-@dest:
-
-<!-- ##### FUNCTION gst_mpeg2enc_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### FUNCTION gst_cobin_iterate ##### -->
-<para>
-
-</para>
-
-@cobin:
-
-<!-- ##### MACRO PICTURE_CODING_EXTENSION_ID ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO NUM_MASK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/ac3.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gtk_overlay_image_new ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### SECTION ./tmpl/qtables.sgml:Title ##### -->
-qtables
-
-
-<!-- ##### MACRO RUN_MASK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO BIG_ENDIAN_ARCHITECTURE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION initme ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### MACRO HUFFMAN_ESCAPE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/dvd_udf.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DCTSATURATE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/dvd_udf.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/debug.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GRAB_ATTR_BRIGHT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO AIX ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION MpegDecodeSequence ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-
-<!-- ##### MACRO L_DVAR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/gdkxvimage.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/mpeg2dec.sgml:Title ##### -->
-mpeg2dec
-
-
-<!-- ##### FUNCTION gst_xing_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### SECTION ./tmpl/dct.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF ID[4] ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION RTjpeg_decompressYUV420 ##### -->
-<para>
-
-</para>
-
-@sp:
-@bp:
-
-<!-- ##### FUNCTION mpg123_synth_ntom_set_step ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Param2:
-
-<!-- ##### FUNCTION RTjpeg_decompressYUV422 ##### -->
-<para>
-
-</para>
-
-@sp:
-@bp:
-
-<!-- ##### FUNCTION MakeDHUFF ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO REGULAR_PARSE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/imdct.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/ctables.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF TimeStamp ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO IN_GOP_PARSE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT GstRiff ##### -->
-<para>
-
-</para>
-
-@form:
-@chunks:
-@state:
-@curoffset:
-@nextlikely:
-
-<!-- ##### FUNCTION mpg123_init_layer1 ##### -->
-<para>
-
-</para>
-
-@Param1:
-
-<!-- ##### MACRO MPG_MD_STEREO ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO FRAME ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mpg123_init_layer3 ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Varargs:
-
-<!-- ##### FUNCTION FreeMem ##### -->
-<para>
-
-</para>
-
-@mem:
-
-<!-- ##### FUNCTION RTjpeg_init_Q ##### -->
-<para>
-
-</para>
-
-@Q:
-
-<!-- ##### MACRO BUFFERSIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstVideoSink:height ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/util.sgml:Title ##### -->
-util
-
-
-<!-- ##### MACRO EXSC_LENGTH ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO UMASK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF dct_dc_size_entry ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO RATE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION update_CRC ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Param2:
-@Param3:
-
-<!-- ##### MACRO VSEC ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/getvlc.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### STRUCT Mpeg1Stream ##### -->
-<para>
-
-</para>
-
-@stream_id:
-@STD_buffer_bound_scale:
-@STD_buffer_size_bound:
-
-<!-- ##### MACRO MB_INTRA ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO HAN_SIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/rematrix.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### MACRO LAST_SCR_BYTE_IN_PACK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GLOBAL_GAIN_SCALE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VIDEO_RGB15_LE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF D2SBL[2][SBLIMIT] ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstVideoSink:width ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SC_SPAT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO L_VAROR ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/encoder.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/size.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_riff_new ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### SECTION ./tmpl/imdct.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/L3.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION aiff_seek_to_sound_data ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Returns:
-
-<!-- ##### MACRO SKIP_PICTURE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION cvt_to_wave_test ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION gst_mpeg1encoder_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### FUNCTION gst_mpeg2enc_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### MACRO NO_LAYER ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION ChenDct ##### -->
-<para>
-
-</para>
-
-@x:
-@y:
-
-<!-- ##### FUNCTION mpeg2play_new_buffer ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@inbuf:
-@inlen:
-@first:
-@Returns:
-
-<!-- ##### MACRO B_TYPE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION i_audio_decode_info ##### -->
-<para>
-
-</para>
-
-@info:
-
-<!-- ##### FUNCTION gst_parsewav_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### MACRO swopen ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SEQ_START_CODE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO IN_PICTURE_PARSE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/bitstream.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO GTK_OVERLAY_IMAGE_BYTE_ORDER ##### -->
-<para>
-
-</para>
-
-@obj:
-
-<!-- ##### MACRO SKIP_JUNK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF INT16 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MACROBLOCK_MOTION_BACKWARD ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DELTA_BIT_RESERVED ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/tableawd.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_parseavi_get_audio_srcpad ##### -->
-<para>
-
-</para>
-
-@parseavi:
-@pad_nr:
-@strf:
-@Returns:
-
-<!-- ##### MACRO FIRST_BLOCK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO LXMIN ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/jdw.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/htable.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/dga.sgml:Title ##### -->
-dga
-
-
-<!-- ##### MACRO STREAMS_AUDIO ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/encoder.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF WINCOEF ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/putbits.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO PANSCAN_ID ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MV_FRAME ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO BLOCKSIZE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ERRC ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO ESCAPE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION aiff_read_headers ##### -->
-<para>
-
-</para>
-
-@Param1:
-@Param2:
-@Returns:
-
-<!-- ##### ARG GstV4lSrc:hue ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gdk_xvimage_new ##### -->
-<para>
-
-</para>
-
-@type:
-@width:
-@height:
-@Returns:
-
-<!-- ##### MACRO SEQUENCE_LAYER ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO MBSC ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO L_BUFFERCONTENTS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO DFLT_PSY ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION audio_decode_info ##### -->
-<para>
-
-</para>
-
-@info:
-
-<!-- ##### ARG GstVuMeter:volume ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/gtkoverlayimage.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ARG GstWinEnc:quality ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO PICTURE_SPATIAL_SCALABLE_EXTENSION_ID ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO TALK ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO VIDEO_STREAMS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF INT32 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT Mpeg1MuxBuffer ##### -->
-<para>
-
-</para>
-
-@buffer:
-@length:
-@base:
-@scan_pos:
-@last_pos:
-@current_start:
-@buffer_type:
-@stream_id:
-@new_frame:
-@next_frame_time:
-
-<!-- ##### FUNCTION gst_jpeg_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### TYPEDEF D640[640] ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/bit_allocate.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gtk_xvimage_get ##### -->
-<para>
-
-</para>
-
-@image:
-@val:
-
-<!-- ##### MACRO DELTA_BIT_NONE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION SubCompensate ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@matrix:
-@XIob:
-
-<!-- ##### SECTION ./tmpl/qtables.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION rematrix ##### -->
-<para>
-
-</para>
-
-@audblk:
-@coeffs:
-
-<!-- ##### FUNCTION gst_aviencoder_make_video_header ##### -->
-<para>
-
-</para>
-
-@codec:
-@width:
-@height:
-@planes:
-@bit_cnt:
-@Returns:
-
-<!-- ##### FUNCTION mpg123_init_conv16to8_table ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION crc_validate ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO ZIG_ZAG ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO SLICE_START_CODE_MAX ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF iFunc() ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gst_synaesthesia_chain ##### -->
-<para>
-
-</para>
-
-@pad:
-@buf:
-
-<!-- ##### FUNCTION gst_mpg123_new ##### -->
-<para>
-
-</para>
-
-@name:
-@Returns:
-
-<!-- ##### ARG System_Encode:audio ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION CopyCFS2FS ##### -->
-<para>
-
-</para>
-
-@vid_stream:
-@fs:
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstSpectrum
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstV4lSrc
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstWin
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstWinDec
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstWinEnc
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstXa
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstXing
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstMedian
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-Mp1VideoParse
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-Mp2VideoParse
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-Mp3Parse
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-Mpeg1Parse
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-Mpeg2Parse
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-Mpeg2Subt
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-RTJpegDec
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-RTJpegEnc
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstSmooth
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstSmoothWave
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstSpindentity
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstStereo
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstSynaesthesia
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-System_Encode
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-VCDSrc
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-Videoscale
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstVideoSink
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstVolume
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-VorbisDec
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-VorbisEnc
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-GstVuMeter
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-