<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node name="/Call_Content_Interface_Video_Control"
  xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
  <tp:copyright>Copyright © 2011 Collabora Ltd.</tp:copyright>
  <tp:license xmlns="http://www.w3.org/1999/xhtml">
    <p>This library is free software; you can redistribute it and/or
      modify it under the terms of the GNU Lesser General Public
      License as published by the Free Software Foundation; either
      version 2.1 of the License, or (at your option) any later version.</p>

    <p>This library 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
      Lesser General Public License for more details.</p>

    <p>You should have received a copy of the GNU Lesser General Public
      License along with this library; if not, write to the Free Software
      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
      02110-1301, USA.</p>
  </tp:license>

  <interface name="org.freedesktop.Telepathy.Call1.Content.Interface.VideoControl">
    <tp:added version="0.25.2">(as stable API)</tp:added>
    <tp:requires interface="org.freedesktop.Telepathy.Call1.Content.Interface.Media"/>

    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
      <p>An interface that allows the connection manager to control the video
          stream.</p>
      <p>This interface is generally not needed. In cases where the connection
          manager handles the network communication and the media is transferred
          from the client to the connection manager via shared memory, it can
          sometimes be beneficial for the connection manager to be able to
          control certain aspects of the video stream.</p>
    </tp:docstring>

    <signal name="KeyFrameRequested" tp:name-for-bindings="Key_Frame_Requested">
      <tp:docstring>
        Request that the video encoder produce a new key frame as soon as
        possible.
      </tp:docstring>
    </signal>

    <tp:struct name="Video_Resolution"
      array-name="Video_Resolution_Struct">
      <tp:member type="u" name="Width">
        <tp:docstring>
          With of the video stream.
        </tp:docstring>
      </tp:member>
      <tp:member type="u" name="Height">
        <tp:docstring>
          Height of the video stream.
        </tp:docstring>
      </tp:member>
    </tp:struct>

    <property name="VideoResolution" type="(uu)" tp:type="Video_Resolution"
      access="read" tp:name-for-bindings="Video_Resolution">
      <tp:docstring>
        The resolution at which the streaming engine should be sending.

        <p>Change notification is via the
          <tp:member-ref>VideoResolutionChanged</tp:member-ref> signal.</p>
      </tp:docstring>
    </property>

    <signal name="VideoResolutionChanged"
      tp:name-for-bindings="Video_Resolution_Changed">
      <tp:docstring>
        The desired video resolution has changed.
      </tp:docstring>
      <arg type="(uu)" tp:type="Video_Resolution" name="NewResolution" />
    </signal>

    <property name="Bitrate" type="u" access="read"
      tp:name-for-bindings="Bitrate">
      <tp:docstring>
        The bitrate the streaming engine should be sending at.

        <p>Change notification is via the
          <tp:member-ref>BitrateChanged</tp:member-ref> signal.</p>
      </tp:docstring>
    </property>

    <signal name="BitrateChanged"
      tp:name-for-bindings="Bitrate_Changed">
      <tp:docstring>
        The desired bitrate has changed
      </tp:docstring>
      <arg type="u" name="NewBitrate" />
    </signal>

    <property name="Framerate" type="u" access="read"
      tp:name-for-bindings="Framerate">
      <tp:docstring>
        The framerate the streaming engine should be sending at.

        <p>Change notification is via the
          <tp:member-ref>FramerateChanged</tp:member-ref> signal.</p>
      </tp:docstring>
    </property>

    <signal name="FramerateChanged"
      tp:name-for-bindings="Framerate_Changed">
      <tp:docstring>
        The desired framerate has changed
      </tp:docstring>
      <arg type="u" name="NewFramerate" />
    </signal>

    <property name="MTU" type="u" access="read"
      tp:name-for-bindings="MTU">
      <tp:docstring>
        The Maximum Transmission Unit

        <p>Change notification is via the
          <tp:member-ref>MTUChanged</tp:member-ref> signal.</p>
      </tp:docstring>
    </property>

    <signal name="MTUChanged" tp:name-for-bindings="MTU_Changed">
      <tp:docstring>
        The Maximum Transmission Unit has changed
      </tp:docstring>
      <arg type="u" name="NewMTU" />
    </signal>

    <property name="ManualKeyFrames" type="b" access="read"
      tp:name-for-bindings="Manual_Key_Frames">
      <tp:docstring>
       Only send key frames when manually requested
      </tp:docstring>
    </property>
   </interface>
</node>
