<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY % version-entities SYSTEM "version.entities">
%version-entities;
]>

<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
  <bookinfo>
    <title>GstValidate Reference Manual</title>
    <releaseinfo>
      for GstValidate &GST_API_VERSION;
    </releaseinfo>
  </bookinfo>

  <chapter id="overview">
    <title>Overview and usage</title>
    <sect1>
    <para>
      GstValidate is a tool that allows GStreamer developers to check
      that the GstElements they write behave the way they are supposed to.
      It was first started to provide plug-ins developers with a tool to
      check that they use the framework the proper way.
    </para>

    <para>
      GstValidate implements a monitoring logic that allows the system to check
      that the elements of a GstPipeline respect some rules GStreamer components
      have to follow to make them properly interact together.
      For example, a GstValidatePadMonitor will make sure that if we receive a GstSegment
      from upstream, an equivalent segment is sent downstream before any buffer gets out.
    </para>
    <para>
      Then GstValidate implements a reporting system that allows users to
      get detailed informations about what was not properly handled by the elements.
      The generated reports are ordered by level of importance from "issue" to "critical".
    </para>
    <para>
      Some tools have been implemented to help developers validate and test
      their GstElement, you can have a look at the <link linkend="command-line-tools">command line tools section</link>
      to find more information.
    </para>
    <para>
      On top of that, the notion of a <link linkend="scenarios">validation
      scenario</link> has been implemented so that developers can easily execute a set
      of actions on pipelines to test real world interactive cases and reproduce existing
      issues in a convenient way.
    </para>
    </sect1>

    <xi:include href="gst-validate.xml"/>
    <xi:include href="gst-validate-transcoding.xml"/>
    <xi:include href="gst-validate-media-check.xml"/>
    <xi:include href="gst-validate-launcher.xml"/>

    <xi:include href="scenarios.xml"/>
    <xi:include href="envvariables.xml"/>
  </chapter>

  <chapter>
    <title>API Documentation</title>
    <xi:include href="xml/validate.xml"/>
    <xi:include href="xml/gst-validate-runner.xml"/>
    <xi:include href="xml/gst-validate-scenario.xml"/>
    <xi:include href="xml/gst-validate-reporter.xml"/>
    <xi:include href="xml/gst-validate-monitor-factory.xml"/>

  </chapter>
  <chapter id="object-tree">
    <title>Object Hierarchy</title>
     <xi:include href="xml/tree_index.sgml"/>
  </chapter>
  <index id="api-index-full">
    <title>API Index</title>
    <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
  </index>
  <index id="deprecated-api-index" role="deprecated">
    <title>Index of deprecated API</title>
    <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
  </index>

  <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
</book>
