<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="docbook.xsl" type="text/xsl" ?>
<book version="5.0" xmlns="http://docbook.org/ns/docbook"
      xmlns:xlink="http://www.w3.org/1999/xlink"
      xmlns:ns5="http://www.w3.org/1999/xhtml"
      xmlns:ns4="http://www.w3.org/1998/Math/MathML"
      xmlns:ns3="http://www.w3.org/2000/svg"
      xmlns:ns="http://docbook.org/ns/docbook">
  <info>
    <title>Display Service Specification</title>

    <titleabbrev>Display</titleabbrev>

    <releaseinfo>2.3</releaseinfo>

    <author>
      <orgname>ONVIF™</orgname>

      <uri>www.onvif.org</uri>
    </author>

    <pubdate>May, 2013</pubdate>

    <mediaobject>
      <imageobject>
        <imagedata contentwidth="60mm" fileref="media/logo.png"/>
      </imageobject>
    </mediaobject>

    <copyright>
      <year>2008-2020</year>

      <holder>ONVIF™ All rights reserved.</holder>
    </copyright>

    <legalnotice>
      <para>Recipients of this document may copy, distribute, publish, or
      display this document so long as this copyright notice, license and
      disclaimer are retained with all copies of the document. No license is
      granted to modify this document.</para>

      <para>THIS DOCUMENT IS PROVIDED "AS IS," AND THE CORPORATION AND ITS
      MEMBERS AND THEIR AFFILIATES, MAKE NO REPRESENTATIONS OR WARRANTIES,
      EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF
      MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR
      TITLE; THAT THE CONTENTS OF THIS DOCUMENT ARE SUITABLE FOR ANY PURPOSE;
      OR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY
      PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.</para>

      <para>IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR
      AFFILIATES BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL,
      PUNITIVE OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR RELATING TO ANY USE
      OR DISTRIBUTION OF THIS DOCUMENT, WHETHER OR NOT (1) THE CORPORATION,
      MEMBERS OR THEIR AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH
      DAMAGES, OR (2) SUCH DAMAGES WERE REASONABLY FORESEEABLE, AND ARISING
      OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS DOCUMENT.  THE
      FOREGOING DISCLAIMER AND LIMITATION ON LIABILITY DO NOT APPLY TO,
      INVALIDATE, OR LIMIT REPRESENTATIONS AND WARRANTIES MADE BY THE MEMBERS
      AND THEIR RESPECTIVE AFFILIATES TO THE CORPORATION AND OTHER MEMBERS IN
      CERTAIN WRITTEN POLICIES OF THE CORPORATION.</para>
    </legalnotice>

    <revhistory>
      <revision>
        <revnumber>2.1</revnumber>

        <date>Jul-2011</date>

        <author>
          <personname>Hans Busch</personname>
        </author>

        <revremark>Split from Core 2.0 Change Requests 187, 190,
        191</revremark>
      </revision>

      <revision>
        <revnumber>2.1.1</revnumber>

        <date>Jan-2012</date>

        <author>
          <personname>Hans Busch</personname>
        </author>

        <revremark>Change Request 535</revremark>
      </revision>

      <revision>
        <revnumber>2.2.1</revnumber>

        <date>Dec-2012</date>

        <author>
          <personname>Hans Busch</personname>
        </author>

        <revremark>Change Request 708</revremark>
      </revision>

      <revision>
        <revnumber>2.3</revnumber>

        <date>May-2013</date>

        <author>
          <personname>Michio Hirai</personname>
        </author>

        <revremark>Change Request 972</revremark>
      </revision>

      <revision>
        <revnumber/>

        <date/>

        <revremark>Change Request 1843</revremark>
      </revision>
    </revhistory>
  </info>

  <chapter>
    <title>Contents</title>

    <bridgehead renderas="sect1">Scope</bridgehead>

    <para>This document defines the web service interface for configuration of
    the display of a Video rendering device with optional Audio support.
    Additionally the associated events are defined.</para>

    <para>Web service usage is outside of the scope of this document. Please
    refer to the ONVIF core specification.</para>
  </chapter>

  <chapter>
    <title>Normative references</title>

    <para>ONVIF Core Specification</para>

    <para role="reference">&lt;<link
    xlink:href="http://www.onvif.org/specs/core/ONVIF-Core-Specification.pdf"/>&gt;</para>

    <para>ONVIF Receiver Service Specification</para>

    <para role="reference">&lt;<link
    xlink:href="http://www.onvif.org/specs/srv/rcv/ONVIF-Receiver-Service-Spec.pdf"/>&gt;</para>

    <para>ONVIF DeviceIO Service Specification</para>

    <para role="reference">&lt;<link
    xlink:href="http://www.onvif.org/specs/srv/io/ONVIF-DeviceIo-Service-Spec.pdf"/>&gt;</para>
  </chapter>

  <chapter>
    <title>Terms and Definitions</title>

    <section>
      <title>Definitions</title>

      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="24*"/>

          <colspec colname="c2" colwidth="76*"/>

          <tbody valign="top">
            <row>
              <entry align="left"><para> <emphasis
              role="bold">Layout</emphasis> </para></entry>

              <entry align="left"><para>Defines the arrangement of display
              areas (panes) on a monitor</para></entry>
            </row>

            <row>
              <entry align="left"><para> <emphasis role="bold">Pane</emphasis>
              </para></entry>

              <entry align="left"><para>Defines an area on a physical
              display.</para></entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
    </section>

    <section>
      <title>Abbreviations</title>

      <informaltable>
        <tgroup cols="2">
          <colspec colname="c1" colwidth="24*"/>

          <colspec colname="c2" colwidth="76*"/>

          <tbody valign="top">
            <row>
              <entry valign="middle"><para>RTSP</para></entry>

              <entry valign="middle"><para>Real Time Streaming
              Protocol</para></entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
    </section>
  </chapter>

  <chapter>
    <title>Overview</title>

    <para>The display service provides functions to enable a client to control
    and configure display devices. The service introduces panes, each of which
    occupies an area of the physical display. The configuration of the pane
    maps audio inputs and outputs to a video output. The configuration also
    references a Receiver Object which receives the data to be displayed.
    Functions to retrieve and configure the configuration of a pane are
    provided.</para>

    <figure>
      <title>Example layout with six panes and coordinate system</title>
      <mediaobject>
        <imageobject>
          <imagedata fileref="media/Display/panelayout.svg" contentwidth="120mm" />
        </imageobject>
      </mediaobject>
    </figure>

    <para>A layout defines how these panes are visible on the display (e.g
    single view or quad view). The service introduces commands to retrieve the
    current layout of a display and change the layout.</para>

    <para>The service also introduces commands to request the encoding and
    decoding capabilities of a video output as well as the layout
    options.</para>

    <para>WSDL for the display service is specified in <link
    xlink:href="http://www.onvif.org/ver10/display.wsdl">http://www.onvif.org/ver10/display.wsdl</link>.</para>

    <table>
      <title>Referenced namespaces (with prefix)</title>

      <tgroup cols="2">
        <colspec colname="c1" colwidth="13*"/>

        <colspec colname="c2" colwidth="87*"/>

        <thead>
          <row>
            <entry><para>Prefix</para></entry>

            <entry><para>Namespace URI</para></entry>
          </row>
        </thead>

        <tbody valign="top">
          <row>
            <entry><para>env</para></entry>

            <entry><para>http://www.w3.org/2003/05/soap-envelope</para></entry>
          </row>

          <row>
            <entry><para>ter</para></entry>

            <entry><para>http://www.onvif.org/ver10/error</para></entry>
          </row>

          <row>
            <entry><para>xs </para></entry>

            <entry><para>http://www.w3.org/2001/XMLSchema </para></entry>
          </row>

          <row>
            <entry><para>tt</para></entry>

            <entry><para>http://www.onvif.org/ver10/schema</para></entry>
          </row>

          <row>
            <entry><para>tls</para></entry>

            <entry><para>http://www.onvif.org/ver10/display/wsdl</para></entry>
          </row>
        </tbody>
      </tgroup>
    </table>
  </chapter>

  <chapter>
    <title>Display Service</title>

    <para>A display device has a fixed number of video outputs, each of which
    may be attached to a monitor. A client can request the video outputs of
    the device using the DeviceIO service. Each of these outputs is configured
    with a layout (e.g. single view or split screen). The layout defines a
    number of video panes, each of which occupies an area of the physical
    display.</para>

    <para>A network video display may also have fixed number of audio inputs
    and audio outputs. Each of these outputs may be associated with a pane.
    Associating an audio input or output with a pane maps the audio and video
    streams from a transmitter device automatically to the correct outputs.
    The pane also contains a pointer to a receiver where the necessary
    information to connect the display device to a transmitter is
    stored.</para>

    <para>The Display Service offers functions to configure the Panes and
    describe and change the layout of the display device. The possible layouts
    and coding capabilities of a video output can be requested.</para>

    <para>A display device shall support the Display Service as defined in
    [DisplayService.wsdl].</para>

    <section>
      <title>Panes</title>

      <para>A Pane is a display area on the monitor that is attached to a
      video output. A pane has a PaneConfiguration that describes which
      entities are associated with the pane. The PaneConfiguration
      includes:</para>

      <para><emphasis role="bold">Pane Token: </emphasis>A unique identifier
      in the display device.</para>

      <para><emphasis role="bold">Pane Name</emphasis>: Configuration
      name.</para>

      <para><emphasis role="bold">AudioOutputToken</emphasis>: A pointer to
      the audio output that is associated with the pane. A client can retrieve
      the available audio outputs of a device using the GetAudioOutputs
      command of the DeviceIO service.</para>

      <para><emphasis role="bold">AudioSourceToken</emphasis>: A pointer to
      the audio source that is associated with this pane. The audio connection
      from a display device to a client is established using the backchannel
      mechanism. A client can retrieve the available audio sources of a device
      using the GetAudioSources command of the DeviceIO service.</para>

      <para><emphasis role="bold">AudioEncoderConfiguration</emphasis>: The
      configuration of the audio encoder including codec, bitrate and sample
      rate.</para>

      <para><emphasis role="bold">ReceiverToken</emphasis>: A pointer to a
      receiver as defined in the ONVIF Receiver Service Specification that has
      the necessary information to receive Data from a Transmitter. This
      Receiver can be connected and the network video display displays the
      received data on the specified outputs. A client can retrieve the
      available Receivers using the GetReceivers command of the Receiver
      Service.</para>

      <para>A client has to configure the pane according to the connection to
      be established by setting the AudioOutput and/or AudioSourceToken. If a
      Token is not set, the corresponding session will not be
      established.</para>

      <para>Changing the PaneConfiguration or the parameters of a referenced
      receiver shall not affect the RTSP connection. If a client intends to
      apply the new parameters it shall restart the RTSP connection.</para>

      <para>The pane layout (see <xref linkend="_Ref245539587"/>) of the video
      output defines if and where (position, size) a Pane is currently
      visible. The receiver should only establish an RTSP connection to
      receive data if the pane is visible. Layout changes shall not affect
      running streams.</para>

      <section>
        <title>GetPaneConfigurations</title>

        <para>This command lists all currently defined Panes of a device for a specified video
          output (regardless if this pane is visible at a moment). A display device shall support
          the retrieval of its configured panes through this command.</para>

        <variablelist role="op">
          <varlistentry>
            <term>request</term>

            <listitem>
              <para role="param">VideoOutput [tt:ReferenceToken]</para>

              <para role="text">The VideoOutput element specifies the Video
              Output whose PaneConfigurations are requested.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>response</term>

            <listitem>
              <para role="param">PaneConfiguration - unbounded
              [tt:PaneConfiguration]</para>

              <para role="text">Contains a list of defined Panes of the
              specified VideoOutput. Each VideoOutput has at least one
              PaneConfiguration.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term role="param">faults</term>

            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal -
              ter:NoVideoOutput</para>

              <para role="text">The requested Video Output does not
              exist</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>access class</term>

            <listitem>
              <para role="access">READ_MEDIA</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>

      <section>
        <title>GetPaneConfiguration</title>

        <para>If the pane token is already known this command can be used to
        get the pane configuration. A display device shall support the
        retrieval of a specific pane configuration through this
        command.</para>

        <variablelist role="op">
          <varlistentry>
            <term>request</term>

            <listitem>
              <para role="param">VideoOutput [tt:ReferenceToken]</para>

              <para role="text">This message contains the token of the pane
              whose configuration is requested. It also contains a VideoOutput
              token that specifies the Video Output that contains the
              requested pane.</para>

              <para role="param">Pane [tt:ReferenceToken]</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>response</term>

            <listitem>
              <para role="param">PaneConfiguration
              [tt:PaneConfiguration]</para>

              <para role="text">Contains the requested
              PaneConfiguration</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term role="param">faults</term>

            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal -
              ter:NoPane</para>

              <para role="text">The requested pane does not exist</para>

              <para role="param">env:Sender - ter:InvalidArgVal -
              ter:NoVideoOutput</para>

              <para role="text">The requested Video Output does not
              exist</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>access class</term>

            <listitem>
              <para role="access">READ_MEDIA</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>

      <section>
        <title>SetPaneConfigurations</title>

        <para>This command changes the Configuration of all existing panes in
        one step. The message contains all PaneConfigurations (modified and
        not modified ones) of the video output. A display device shall support
        the modification of its panes configuration through this
        command.</para>

        <variablelist role="op">
          <varlistentry>
            <term>request</term>

            <listitem>
              <para role="param">VideoOutput [tt:ReferenceToken]</para>

              <para role="text">This message contains the configuration of all
              panes of the specified VideoOutput. The PaneConfiguration
              element contains the modified configuration.</para>

              <para role="param">PaneConfiguration - unbounded
              [tt:PaneConfiguration]</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>response</term>

            <listitem>
              <para role="text">This is an empty message.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term role="param">faults</term>

            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal -
              ter:invalidConfig</para>

              <para role="text">The configuration is not possible to
              set</para>

              <para role="param">env:Sender - ter:InvalidArgVal -
              ter:NoVideoOutput</para>

              <para role="text">The requested Video Output does not
              exist</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>access class</term>

            <listitem>
              <para role="access">ACTUATE</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>

      <section>
        <title>SetPaneConfiguration</title>

        <para>This command changes the Configuration of a single pane. A
        display device shall support the modification of a single pane
        configuration through this command.</para>

        <variablelist role="op">
          <varlistentry>
            <term>request</term>

            <listitem>
              <para role="param">VideoOutput [tt:ReferenceToken]</para>

              <para role="text">This message contains the token of the video
              output and the new PaneConfiguration.</para>

              <para role="param">PaneConfiguration
              [tt:PaneConfiguration]</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>response</term>

            <listitem>
              <para role="text">This is an empty message.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term role="param">faults</term>

            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal -
              ter:NoPane</para>

              <para role="text">The requested pane does not exist</para>

              <para role="param">env:Sender - ter:InvalidArgVal -
              ter:NoVideoOutput</para>

              <para role="text">The requested Video Output does not
              exist</para>

              <para role="param">env:Sender - ter:InvalidArgVal -
              ter:InvalidConfig</para>

              <para role="text">The configuration is not possible to
              set</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>access class</term>

            <listitem>
              <para role="access">ACTUATE</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>

      <section>
        <title>CreatePaneConfiguration</title>

        <para>This command creates a pane configuration. A display device that
        supports dynamic creation of panes shall support the creation of a
        pane configuration through this command.</para>

        <para>A service implementation is free to choose any suitable token
        for the PaneConfiguration and may ignore the content of the token
        field.</para>

        <variablelist role="op">
          <varlistentry>
            <term>request</term>

            <listitem>
              <para role="param">VideoOutput [tt:ReferenceToken]</para>

              <para>This message contains the token of the video output and
              the new PaneConfiguration.</para>

              <para role="param">PaneConfiguration
              [tt:PaneConfiguration]</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>response</term>

            <listitem>
              <para role="param">PaneToken [tt:ReferenceToken]</para>

              <para role="text">This message contains the token of the the new
              PaneConfiguration.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term role="param">faults</term>

            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal -
              ter:MaxNumberOfPane</para>

              <para role="text">The maximum number of panes is reached</para>

              <para role="param">env:Sender - ter:InvalidArgVal -
              ter:NoVideoOutput</para>

              <para role="text">The requested Video Output does not
              exist</para>

              <para role="param">env:Sender - ter:InvalidArgVal -
              ter:InvalidConfig</para>

              <para role="text">The configuration is not possible to
              set</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>access class</term>

            <listitem>
              <para role="access">ACTUATE</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>

      <section>
        <title>DeletePaneConfiguration</title>

        <para>This command deletes a pane configuration. A display device that
        supports dynamic deletion of panes shall support the deletion of a
        pane configuration through this command.</para>

        <variablelist role="op">
          <varlistentry>
            <term>request</term>

            <listitem>
              <para role="param">VideoOutput [tt:ReferenceToken]</para>

              <para role="text">This message contains the token of the video
              output and the PaneConfiguration.</para>

              <para role="param">PaneToken [tt:ReferenceToken]</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>response</term>

            <listitem>
              <para role="text">This is an empty message.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term role="param">faults</term>

            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal -
              ter:FixedPane</para>

              <para role="text">It is not possible to delete this pane
              configuration</para>

              <para role="param">env:Sender - ter:InvalidArgVal -
              ter:NoVideoOutput</para>

              <para role="text">The requested Video Output does not
              exist</para>

              <para role="param">env:Sender - ter:InvalidArgVal -
              ter:NoPane</para>

              <para role="text">The requested pane configuration does not
              exist.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>access class</term>

            <listitem>
              <para role="access">ACTUATE</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
    </section>

    <section xml:id="_Ref245539587">
      <title>Layout</title>

      <para>The Layout assigns a pane configuration to a certain area of the
      display. The layout settings directly affect a specific video output.
      The layout consists of a list of PaneConfigurations and their associated
      display areas. If the device supports overlapping panes then the order
      the panes are displayed on the monitor is defined by the order of the
      PaneConfigurations in the list. The first Pane in the list is the one
      that is displayed in the foreground.</para>

      <para>A device may either provide a fixed number of supported layouts or
      it is possible to configure the layout free.</para>

      <section>
        <title>GetLayout</title>

        <para>This command returns the current layout of a video output. A
        display device shall support the retrieval of its layout through this
        command.</para>

        <variablelist role="op">
          <varlistentry>
            <term>request</term>

            <listitem>
              <para role="param">VideoOutput [tt:ReferenceToken]</para>

              <para role="text">Contains the VideoOutputToken of the output
              the display is connected to.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>response</term>

            <listitem>
              <para role="param">Layout [tt:Layout]</para>

              <para role="text">Contains the current layout of the
              VideoOutput.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term role="param">faults</term>

            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal -
              ter:NoVideoOutput</para>

              <para role="text">The requested Video Output indicated with
              VideoOutput does not exist.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>access class</term>

            <listitem>
              <para role="access">READ_MEDIA</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>

      <section>
        <title>SetLayout</title>

        <para>The SetLayout operation can be used to change the layout of a
        display (e.g. change from single view to split screen view). A display
        device shall support the change of layout through this command.</para>

        <para>A device implementation shall be tolerant against rounding
        errors when matching a layout against its fixed set of layouts by
        accepting differences of at least one percent.</para>

        <variablelist role="op">
          <varlistentry>
            <term>request</term>

            <listitem>
              <para role="param">VideoOutput [tt:ReferenceToken]</para>

              <para role="text">Contains the VideoOutputToken of the output
              the display is connected to.</para>

              <para role="param">Layout [tt:Layout]</para>

              <para role="text">Layout configuration to be applied.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>response</term>

            <listitem>
              <para>This message is an empty message.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term role="param">faults</term>

            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal -
              ter:NoVideoOutput</para>

              <para role="text">The requested Video Output indicated with
              VideoOutput does not exist.</para>

              <para role="param">env:Sender - ter:InvalidArgVal -
              ter:InvalidLayout</para>

              <para role="text">It is not possible to set the layout.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>access class</term>

            <listitem>
              <para role="access">ACTUATE</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
    </section>

    <section>
      <title>Display Options</title>

      <para>The Display Options contain the supported layouts (LayoutOptions)
      and the decoding and encoding capabilities (CodingCapabilities) of the
      device. The GetDisplayOptions command returns both, Layout and Coding
      Capabilities, of a VideoOutput.</para>

      <para><emphasis role="bold">LayoutOptions</emphasis></para>

      <para>The LayoutOptions describe the fixed and predefined layouts of a
      device. If the device does not offer fixed layouts and allows setting
      the layout free this element is empty.</para>

      <para><emphasis role="bold">Coding Capabilities</emphasis></para>

      <para>The network video display is able to decode audio and video
      streams using suitable decoding algorithms. The network video display
      supports any audio and video decoders, bitrates and resolution according
      to the manufacturer‘s choice.</para>

      <para>In order to ensure interoperability between the different devices,
      this specification mandates the following decoder profiles:</para>

      <para>The NVD shall support JPEG QVGA.</para>

      <para>The NVD shall support G.711μ Law (if it supports audio)</para>

      <para>These are the same codecs that are mandatory for Profile S
      clients.</para>

      <para>There are no parameters to configure a decoder; a decoder shall
      decode all content (according to its capabilities) it receives. In case
      of decoding errors the decoder should try to request a synchronization
      point and try to continue decoding. It shall generate an event as
      defined in section <xref linkend="_Ref287274188"/>.</para>

      <para>The CodingCapabilities Element gives an indication about the
      decoding and encoding capabilities of the device.</para>

      <section>
        <title>GetDisplayOptions</title>

        <para>This command lists layout and coding capabilities of a video
        output. A display device shall support the retrieval of its
        DisplayOptions through this command.</para>

        <variablelist role="op">
          <varlistentry>
            <term>request</term>

            <listitem>
              <para role="param">VideoOutput [tt:ReferenceToken]</para>

              <para>This message contains the token of the video output for
              which the information is requested.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>response</term>

            <listitem>
              <para role="param">LayoutOptions optional
              [tt:LayoutOptions]</para>

              <para>Message containing the available layouts as well as
              codings for the VideoOutput.</para>

              <para role="param">CodingCapabilities
              [tt:CodingCapabilities]</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term role="param">faults</term>

            <listitem>
              <para role="param">env:Sender - ter:InvalidArgVal -
              ter:NoVideoOutput</para>

              <para role="text">The requested VideoOutputToken does not
              exist</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>access class</term>

            <listitem>
              <para role="access">READ_MEDIA</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
    </section>

    <section>
      <title>Events</title>

      <para>The display service shall dispatch events through the event
      service.</para>

      <section xml:id="_Ref287274188">
        <title>Decoding error event</title>

        <para>The device shall be capable of generating the following event
        whenever it receives a bitstream that it is not able to decode.</para>

        <para>There are several reasons why a decoder is not able to decode
        the bitstream. The following error codes are defined and shall be used
        by the device to inform the client about decoder errors:</para>

        <orderedlist>
          <listitem>
            <para>“unsupported codec or unsupported codec profile” – The
            device is not able to decode the bitstream, because the codec or
            the profile is not supported by the device. The client should the
            try to reconfigure the transmitter according to the
            CodingCapabilities of the device.</para>
          </listitem>

          <listitem>
            <para>“packet error” – there are missing or unexpected packets in
            the bitstream.</para>
          </listitem>
        </orderedlist>

        <para>Other vendor specific codes are also allowed.</para>

        <para>Topic: tns1:VideoDecoder/DecodingError</para>

        <programlisting>&lt;tt:MessageDescription IsProperty="false"&gt; 
  &lt;tt:Source&gt; 
    &lt;tt:SimpleItemDescription Name="VideoOutputToken" Type="tt:ReferenceToken"/&gt; 
  &lt;/tt:Source&gt; 
  &lt;tt:Data&gt; 
    &lt;tt:SimpleItemDescription Name="PaneReference" Type="tt:ReferenceToken"/&gt;
    &lt;tt:SimpleItemDescription Name=”Error” Type=”xs:string” minOccurs=”0”/&gt; &lt;/tt:Data&gt; 
&lt;/tt:MessageDescription&gt;</programlisting>
      </section>

      <section>
        <title>Layout changed event</title>

        <para>This event shall be generated whenever a layout is changed.
        Typical reason is a call to SetLayout? resulting in an layout
        change.</para>

        <para>Topic: tns1:VideoOutput/Layout/LayoutChanged</para>

        <programlisting>&lt;tt:MessageDescription IsProperty="false"&gt; 
  &lt;tt:Source&gt; 
    &lt;tt:SimpleItemDescription Name="VideoOutputToken" Type="tt:ReferenceToken"/&gt; 
  &lt;/tt:Source&gt; 
&lt;/tt:MessageDescription&gt;</programlisting>
      </section>
    </section>

    <section>
      <title>Capabilities</title>

      <para>The capabilities reflect optional functions and functionality of a
      service. The information is static and does not change during device
      operation. The following capabilities are available:</para>

      <variablelist>
        <varlistentry>
          <term>FixedLayout</term>
          <listitem>
            <para>Indication that the SetLayout command supports only
            predefined layouts.</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <variablelist role="op">
        <varlistentry>
          <term>request</term>
          <listitem>
            <para role="text">This is an empty message.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>response</term>
          <listitem>
            <para role="param">Capabilities [tls:Capabilities]</para>
            <para>The capability response message contains the requested
            service capabilities using a hierarchical XML capability
            structure.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term role="param">faults</term>
          <listitem>
            <para role="text">No command specific faults!</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>access class</term>
          <listitem>
            <para role="access">PRE_AUTH</para>
          </listitem>
        </varlistentry>
      </variablelist>
    </section>
  </chapter>

  <appendix role="revhistory">
    <title>Revision History</title>

    <para/>
  </appendix>
</book>
