<?xml version="1.0" encoding="utf-8"?>
<!--
		vim:ts=4
-->
<xs:schema
	xmlns:xs="http://www.w3.org/2001/XMLSchema" 
	xmlns="http://clement.stenac.org/projects/videolan/vsp.xsd"
	targetNamespace="http://clement.stenac.org/projects/videolan/vsp.xsd">

<xs:element name="description">
		<xs:complexType>
			  <xs:simpleContent>
			<xs:extension base="xs:string"></xs:extension>
		</xs:simpleContent>
	</xs:complexType>
</xs:element>

<xs:element name="name">
	<xs:complexType>
		<xs:simpleContent>
			<xs:extension base="xs:string"></xs:extension>
		</xs:simpleContent>
	</xs:complexType>
</xs:element>


<!-- ################# Stream output modules #################### -->
<xs:element name="transcode">
	<xs:complexType>
		<xs:attribute name="vcodec" />
		<xs:attribute name="acodec" />
		<xs:attribute name="vb" />
		<xs:attribute name="ab" />
		<xs:attribute name="venc" />
		<xs:attribute name="aenc" />
	</xs:complexType>
</xs:element>
 
<xs:element name="standard">
	<xs:complexType>
		<xs:attribute name="mux" />
		<xs:attribute name="access" />
		<xs:attribute name="dst" />
	</xs:complexType>
</xs:element>

<xs:element name="display" />
		
<!-- ### Duplicate ### -->
<xs:element name="child" >
	<xs:complexType>
		<xs:sequence>
			<xs:any minOccurs="1" maxOccurs="unbounded" />
		</xs:sequence>
		<xs:attribute name="select" />
		<xs:attribute name="enabled" />
	</xs:complexType>
</xs:element>
		
<xs:element name="duplicate">
	<xs:complexType>
		<xs:sequence>
			<xs:element ref="child" minOccurs="1" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
</xs:element>

<xs:element name="choice">
	<xs:complexType>
		<xs:sequence>
			<xs:element ref="name" minOccurs="1" maxOccurs="1" />
			<xs:element ref="description" minOccurs="1" maxOccurs="unbounded" />
		</xs:sequence>
		<xs:attribute name="value" />
	</xs:complexType>
</xs:element>

<xs:element name="param">
	<xs:complexType>
		<xs:sequence>
			<xs:element ref="name" minOccurs="1" maxOccurs="1" />
			<xs:element ref="description" minOccurs="1" maxOccurs="1" />
			<xs:element ref="choice" minOccurs="0" maxOccurs="unbounded" />
		</xs:sequence>
		<xs:attribute name="id" use="required" />
		<xs:attribute name="type" use="required" />
		<xs:attribute name="choices" use="optional" />
		<xs:attribute name="default" />
		<xs:attribute name="min" />
		<xs:attribute name="max" />
	</xs:complexType>
</xs:element>
		

<xs:element name="parameters">
	<xs:complexType>
		<xs:sequence>
			<xs:element ref="param" maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType>
</xs:element>

<xs:element name="meta">
	<xs:complexType>
		<xs:attribute name="network" />
		<xs:attribute name="internet" />
		<xs:attribute name="vod" />
	</xs:complexType>
</xs:element>

<xs:element name="option">
	 <xs:complexType>
		<xs:simpleContent>
			<xs:extension base="xs:string">
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
</xs:element>

<xs:element name="options">
	<xs:complexType>
		<xs:sequence>
			<xs:element ref="option" />
		</xs:sequence>
	</xs:complexType>
</xs:element>

<xs:element name="chain">
	<xs:complexType>
		<xs:sequence>
			<xs:any minOccurs="1" maxOccurs="unbounded" />
		</xs:sequence>
		<xs:attribute name="select" />
	</xs:complexType>
</xs:element>


<xs:element name="profile">
	<xs:complexType>
		<xs:sequence>
			<xs:element ref="name" maxOccurs="1" />
			<xs:element ref="description" maxOccurs="unbounded" />
			<xs:element ref="meta" maxOccurs="1" />
			<xs:element ref="parameters" maxOccurs="1" />
			<xs:element ref="options" />
			<xs:element ref="chain" />
		</xs:sequence>
	</xs:complexType>
</xs:element>

<xs:element name="profile-list">
    <xs:complexType>
	    <xs:sequence>
		    <xs:element ref="profile" />
        </xs:sequence>
    </xs:complexType>
</xs:element>

</xs:schema>
