<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.openhome.org/mediawiki/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.openhome.org/mediawiki/index.php?feed=atom&amp;target=Johnh&amp;title=Special%3AContributions%2FJohnh</id>
		<title>OpenHome - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.openhome.org/mediawiki/index.php?feed=atom&amp;target=Johnh&amp;title=Special%3AContributions%2FJohnh"/>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/wiki/Special:Contributions/Johnh"/>
		<updated>2026-04-16T07:08:14Z</updated>
		<subtitle>From OpenHome</subtitle>
		<generator>MediaWiki 1.16.2</generator>

	<entry>
		<id>http://wiki.openhome.org/wiki/Av:Developer:VolumeService</id>
		<title>Av:Developer:VolumeService</title>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/wiki/Av:Developer:VolumeService"/>
				<updated>2013-08-09T15:24:32Z</updated>
		
		<summary type="html">&lt;p&gt;Johnh: added documentation for state variables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Architecture Overview =&lt;br /&gt;
The Volume Service provides a means of controlling various settings which affect the product's volume (signal amplitude) measured at the output channels. A product may have one or more output channels. Balance or Fade settings may result in different volumes at each output. In the Mute state, all output channels are reduced to zero volume. &lt;br /&gt;
&lt;br /&gt;
==Volume==&lt;br /&gt;
Volume is an adjustable setting that controls the loudness of the audio at the output channels of the product. Volume can be set to an absolute value or incremented/decremented in single steps. The maximum Volume setting is defined by the current value of '''VolumeLimit'''. The minimum Volume setting is zero. If an attempt is made to set the Volume above VolumeLimit, the Volume will be set to the '''VolumLimit'''. If an attempt is made to set the Volume above '''VolumeMax''', an error will  be reported.&lt;br /&gt;
&lt;br /&gt;
== Volume Limit ==&lt;br /&gt;
VolumeLimit specifies the upper limit of the Volume. Any attempt to set Volume above the VolumeLimit will reset Volume to the value of VolumeLimit. If VolumeLimit is changed, Volume is checked and automatically reduced if necessary. The maximum VolumeLimit setting is defined by the '''VolumeMax''' Characteristic.&lt;br /&gt;
&lt;br /&gt;
==Balance==&lt;br /&gt;
Balance is an adjustable setting that specifies the '''bias''' in volume between the '''left and right''' output channels of the product. Balance can be set to an absolute value or incremented/decremented in single steps. The maximum Balance setting is defined by the '''BalanceMax''' Characteristic. The minimum Balance setting is defined by ('''-BalanceMax''').&lt;br /&gt;
&lt;br /&gt;
A setting of zero results in neutral balance (i.e. no bias applied) between left and right output channels.  Negative values amplify left and attenuate right output channels.  Conversely, positive values attenuate left and amplify right output channels.  Increasing absolute values result in progressively larger amplification/attenuation being applied to output channels in this asymmetric manner.  At or near the maximum settings, the attenuated channels may ended up being effectively reduced to volume zero.&lt;br /&gt;
&lt;br /&gt;
==Fade==&lt;br /&gt;
Fade is an adjustable setting that specifies the '''bias''' in volume between the '''front and rear''' output channels of the products. Fade can be set to an absolute value or incremented/decremented in single steps. The maximum Fade setting is defined by the '''FadeMax''' Characteristic. The minimum Fade setting is defined by ('''-FadeMax''') .&lt;br /&gt;
&lt;br /&gt;
==Mute==&lt;br /&gt;
Mute is an adjustable state that determines if the output channels of the product are muted or not. When muted, all output channels of the product are silent.&lt;br /&gt;
&lt;br /&gt;
==Characteristics==&lt;br /&gt;
Each product has six read-only values that define value ranges and their granularity -- as well as notable values within these ranges -- for volume, balance, and fade.&lt;br /&gt;
&lt;br /&gt;
====VolumeMax====&lt;br /&gt;
VolumeMax defines the absolute maximum Volume setting.&lt;br /&gt;
&lt;br /&gt;
====VolumeUnity====&lt;br /&gt;
VolumeUnity defines the value of Volume that will result in unity system gain (i.e. ''output amplitude'' = ''input amplitude'').&lt;br /&gt;
&lt;br /&gt;
====VolumeSteps====&lt;br /&gt;
VolumeSteps defines the number of step increments required to increase the Volume from zero to VolumeMax.&lt;br /&gt;
&lt;br /&gt;
====VolumeMilliDbPerStep====&lt;br /&gt;
VolumeMilliDbPerStep defines the size of each volume step in '''binary milli decibels''' (mibi dB). [''1024mibi dB = 1dB'']&lt;br /&gt;
&lt;br /&gt;
====BalanceMax====&lt;br /&gt;
BalanceMax defines the maximum Balance setting. The minimum Balance setting is (-BalanceMax).&lt;br /&gt;
&lt;br /&gt;
====FadeMax====&lt;br /&gt;
FadeMax defines the maximum Fade setting. The minimum Fade setting is (-FadeMax).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Actions=&lt;br /&gt;
&lt;br /&gt;
=== Volume ===&lt;br /&gt;
The Volume action reports the current Volume setting.&lt;br /&gt;
&lt;br /&gt;
=== SetVolume===&lt;br /&gt;
The SetVolume action provides a means of setting the Volume to an absolute value.&lt;br /&gt;
&lt;br /&gt;
=== Volume Inc===&lt;br /&gt;
The VolumeInc action provides a means of increasing the Volume by 1.&lt;br /&gt;
=== Volume Dec ===&lt;br /&gt;
The VolumeDec action provides a means of decreasing the Volume by 1.&lt;br /&gt;
=== VolumeLimit ===&lt;br /&gt;
The VolumeLimit action reports the current VolumeLimit setting.&lt;br /&gt;
=== Balance ===&lt;br /&gt;
The Balance action reports the current Balance setting.&lt;br /&gt;
=== SetBalance ===&lt;br /&gt;
The SetBalance action provides a means of setting the Balance to a specific value.&lt;br /&gt;
&lt;br /&gt;
=== BalanceInc===&lt;br /&gt;
The BalanceInc action provides a means of increasing the Balance by 1.&lt;br /&gt;
=== BalanceDec ===&lt;br /&gt;
The BalanceDec action provides a means of decreasing the Balance by 1.&lt;br /&gt;
=== Fade ===&lt;br /&gt;
The Fade action reports the current Fade setting of the product.&lt;br /&gt;
=== SetFade ===&lt;br /&gt;
The SetFade action provides a means of setting the Fade to a specific value.&lt;br /&gt;
=== FadeInc===&lt;br /&gt;
The FadeInc action provides a means of increasing the Fade by 1.&lt;br /&gt;
&lt;br /&gt;
=== FadeDec ===&lt;br /&gt;
The FadeDec action provides a means of decreasing the Fade by 1.&lt;br /&gt;
=== Mute ===&lt;br /&gt;
The Mute action reports the current Mute state of the product.&lt;br /&gt;
=== SetMute ===&lt;br /&gt;
The SetMute action provides a means of setting the Mute state.&lt;br /&gt;
&lt;br /&gt;
=== Characteristics ===&lt;br /&gt;
The Characteristics action returns all six characteristic values of the product.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= State Variables =&lt;br /&gt;
&lt;br /&gt;
== Volume ==&lt;br /&gt;
the current user volume setting, i.e. an integer value in the range [0..VolumeLimit]&lt;br /&gt;
&lt;br /&gt;
== Mute ==&lt;br /&gt;
the boolean setting indicating whether all output channels are currently forced to zero volume&lt;br /&gt;
&lt;br /&gt;
== Balance ==&lt;br /&gt;
the current setting of bias between left and right output channels, i.e. an integer value in the range [-BalanceMax..+BalanceMax]&lt;br /&gt;
&lt;br /&gt;
== Fade ==&lt;br /&gt;
the current setting of bias between front and back output channels, i.e. an integer value in the range [-FadeMax..+FadeMax]&lt;br /&gt;
&lt;br /&gt;
== VolumeLimit ==&lt;br /&gt;
the user-imposed (soft) maximum volume setting, i.e. an integer in the range [0..VolumeMax]; read-only&lt;br /&gt;
&lt;br /&gt;
== VolumeMax ==&lt;br /&gt;
the system-imposed (hard) maximum volume setting; read-only&lt;br /&gt;
&lt;br /&gt;
== VolumeUnity ==&lt;br /&gt;
the system-specific volume setting that results in the input signal amplitude equalling the output signal amplitude (0dB gain), i.e. an integer in the range [0..VolumeMax]; read-only&lt;br /&gt;
&lt;br /&gt;
== VolumeSteps ==&lt;br /&gt;
the system-specific number of user-visible volume steps that would increase the volume from zero to VolumeMax; read-only&lt;br /&gt;
&lt;br /&gt;
== VolumeMilliDbPerStep ==&lt;br /&gt;
the system-specific gain increase with each volume step in binary milli decibel (mibi dB); read-only&lt;br /&gt;
&lt;br /&gt;
== BalanceMax ==&lt;br /&gt;
the system-specific balance value that leads to maximum bias towards the right between output channels;  read-only&lt;br /&gt;
&lt;br /&gt;
== FadeMax ==&lt;br /&gt;
the system-specific fade value that leads to maximum bias towards the rear between output channels;  read-only&lt;br /&gt;
&lt;br /&gt;
= Technical Details =&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Domain  : av.openhome.org&lt;br /&gt;
    Name    : Volume&lt;br /&gt;
    Version : 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Volume Service Description (XML) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scpd xmlns=&amp;quot;urn:schemas-upnp-org:service-1-0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;specVersion&amp;gt;&lt;br /&gt;
      &amp;lt;major&amp;gt;1&amp;lt;/major&amp;gt;&lt;br /&gt;
      &amp;lt;minor&amp;gt;0&amp;lt;/minor&amp;gt;&lt;br /&gt;
   &amp;lt;/specVersion&amp;gt;&lt;br /&gt;
   &amp;lt;actionList&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Characteristics&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeMax&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeUnity&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeUnity&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeSteps&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeSteps&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeMilliDbPerStep&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeMilliDbPerStep&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BalanceMax&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BalanceMax&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;FadeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;FadeMax&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetVolume&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Volume&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeInc&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeDec&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Volume&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Volume&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetBalance&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Balance&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;BalanceInc&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;BalanceDec&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Balance&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Balance&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetFade&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Fade&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;FadeInc&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;FadeDec&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Fade&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Fade&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetMute&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Mute&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Mute&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Mute&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeLimit&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeLimit&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
   &amp;lt;/actionList&amp;gt;&lt;br /&gt;
   &amp;lt;serviceStateTable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Volume&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Mute&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;boolean&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Balance&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;i4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Fade&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;i4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeLimit&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeUnity&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeSteps&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeMilliDbPerStep&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;BalanceMax&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;FadeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
   &amp;lt;/serviceStateTable&amp;gt;&lt;br /&gt;
&amp;lt;/scpd&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Johnh</name></author>	</entry>

	<entry>
		<id>http://wiki.openhome.org/wiki/Av:Developer:VolumeService</id>
		<title>Av:Developer:VolumeService</title>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/wiki/Av:Developer:VolumeService"/>
				<updated>2013-08-09T14:51:05Z</updated>
		
		<summary type="html">&lt;p&gt;Johnh: moved expanded discussion of balance setting to Architecture section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Architecture Overview =&lt;br /&gt;
The Volume Service provides a means of controlling various settings which affect the product's volume (signal amplitude) measured at the output channels. A product may have one or more output channels. Balance or Fade settings may result in different volumes at each output. In the Mute state, all output channels are reduced to zero volume. &lt;br /&gt;
&lt;br /&gt;
==Volume==&lt;br /&gt;
Volume is an adjustable setting that controls the loudness of the audio at the output channels of the product. Volume can be set to an absolute value or incremented/decremented in single steps. The maximum Volume setting is defined by the current value of '''VolumeLimit'''. The minimum Volume setting is zero. If an attempt is made to set the Volume above VolumeLimit, the Volume will be set to the '''VolumLimit'''. If an attempt is made to set the Volume above '''VolumeMax''', an error will  be reported.&lt;br /&gt;
&lt;br /&gt;
== Volume Limit ==&lt;br /&gt;
VolumeLimit specifies the upper limit of the Volume. Any attempt to set Volume above the VolumeLimit will reset Volume to the value of VolumeLimit. If VolumeLimit is changed, Volume is checked and automatically reduced if necessary. The maximum VolumeLimit setting is defined by the '''VolumeMax''' Characteristic.&lt;br /&gt;
&lt;br /&gt;
==Balance==&lt;br /&gt;
Balance is an adjustable setting that specifies the '''bias''' in volume between the '''left and right''' output channels of the product. Balance can be set to an absolute value or incremented/decremented in single steps. The maximum Balance setting is defined by the '''BalanceMax''' Characteristic. The minimum Balance setting is defined by ('''-BalanceMax''').&lt;br /&gt;
&lt;br /&gt;
A setting of zero results in neutral balance (i.e. no bias applied) between left and right output channels.  Negative values amplify left and attenuate right output channels.  Conversely, positive values attenuate left and amplify right output channels.  Increasing absolute values result in progressively larger amplification/attenuation being applied to output channels in this asymmetric manner.  At or near the maximum settings, the attenuated channels may ended up being effectively reduced to volume zero.&lt;br /&gt;
&lt;br /&gt;
==Fade==&lt;br /&gt;
Fade is an adjustable setting that specifies the '''bias''' in volume between the '''front and rear''' output channels of the products. Fade can be set to an absolute value or incremented/decremented in single steps. The maximum Fade setting is defined by the '''FadeMax''' Characteristic. The minimum Fade setting is defined by ('''-FadeMax''') .&lt;br /&gt;
&lt;br /&gt;
==Mute==&lt;br /&gt;
Mute is an adjustable state that determines if the output channels of the product are muted or not. When muted, all output channels of the product are silent.&lt;br /&gt;
&lt;br /&gt;
==Characteristics==&lt;br /&gt;
Each product has six read-only values that define value ranges and their granularity -- as well as notable values within these ranges -- for volume, balance, and fade.&lt;br /&gt;
&lt;br /&gt;
====VolumeMax====&lt;br /&gt;
VolumeMax defines the absolute maximum Volume setting.&lt;br /&gt;
&lt;br /&gt;
====VolumeUnity====&lt;br /&gt;
VolumeUnity defines the value of Volume that will result in unity system gain (i.e. ''output amplitude'' = ''input amplitude'').&lt;br /&gt;
&lt;br /&gt;
====VolumeSteps====&lt;br /&gt;
VolumeSteps defines the number of step increments required to increase the Volume from zero to VolumeMax.&lt;br /&gt;
&lt;br /&gt;
====VolumeMilliDbPerStep====&lt;br /&gt;
VolumeMilliDbPerStep defines the size of each volume step in '''binary milli decibels''' (mibi dB). [''1024mibi dB = 1dB'']&lt;br /&gt;
&lt;br /&gt;
====BalanceMax====&lt;br /&gt;
BalanceMax defines the maximum Balance setting. The minimum Balance setting is (-BalanceMax).&lt;br /&gt;
&lt;br /&gt;
====FadeMax====&lt;br /&gt;
FadeMax defines the maximum Fade setting. The minimum Fade setting is (-FadeMax).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Actions=&lt;br /&gt;
&lt;br /&gt;
=== Volume ===&lt;br /&gt;
The Volume action reports the current Volume setting.&lt;br /&gt;
&lt;br /&gt;
=== SetVolume===&lt;br /&gt;
The SetVolume action provides a means of setting the Volume to an absolute value.&lt;br /&gt;
&lt;br /&gt;
=== Volume Inc===&lt;br /&gt;
The VolumeInc action provides a means of increasing the Volume by 1.&lt;br /&gt;
=== Volume Dec ===&lt;br /&gt;
The VolumeDec action provides a means of decreasing the Volume by 1.&lt;br /&gt;
=== VolumeLimit ===&lt;br /&gt;
The VolumeLimit action reports the current VolumeLimit setting.&lt;br /&gt;
=== Balance ===&lt;br /&gt;
The Balance action reports the current Balance setting.&lt;br /&gt;
=== SetBalance ===&lt;br /&gt;
The SetBalance action provides a means of setting the Balance to a specific value.&lt;br /&gt;
&lt;br /&gt;
=== BalanceInc===&lt;br /&gt;
The BalanceInc action provides a means of increasing the Balance by 1.&lt;br /&gt;
=== BalanceDec ===&lt;br /&gt;
The BalanceDec action provides a means of decreasing the Balance by 1.&lt;br /&gt;
=== Fade ===&lt;br /&gt;
The Fade action reports the current Fade setting of the product.&lt;br /&gt;
=== SetFade ===&lt;br /&gt;
The SetFade action provides a means of setting the Fade to a specific value.&lt;br /&gt;
=== FadeInc===&lt;br /&gt;
The FadeInc action provides a means of increasing the Fade by 1.&lt;br /&gt;
&lt;br /&gt;
=== FadeDec ===&lt;br /&gt;
The FadeDec action provides a means of decreasing the Fade by 1.&lt;br /&gt;
=== Mute ===&lt;br /&gt;
The Mute action reports the current Mute state of the product.&lt;br /&gt;
=== SetMute ===&lt;br /&gt;
The SetMute action provides a means of setting the Mute state.&lt;br /&gt;
&lt;br /&gt;
=== Characteristics ===&lt;br /&gt;
The Characteristics action returns all six characteristic values of the product.&lt;br /&gt;
&lt;br /&gt;
= Technical Details =&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Domain  : av.openhome.org&lt;br /&gt;
    Name    : Volume&lt;br /&gt;
    Version : 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Volume Service Description (XML) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scpd xmlns=&amp;quot;urn:schemas-upnp-org:service-1-0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;specVersion&amp;gt;&lt;br /&gt;
      &amp;lt;major&amp;gt;1&amp;lt;/major&amp;gt;&lt;br /&gt;
      &amp;lt;minor&amp;gt;0&amp;lt;/minor&amp;gt;&lt;br /&gt;
   &amp;lt;/specVersion&amp;gt;&lt;br /&gt;
   &amp;lt;actionList&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Characteristics&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeMax&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeUnity&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeUnity&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeSteps&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeSteps&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeMilliDbPerStep&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeMilliDbPerStep&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BalanceMax&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BalanceMax&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;FadeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;FadeMax&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetVolume&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Volume&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeInc&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeDec&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Volume&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Volume&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetBalance&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Balance&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;BalanceInc&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;BalanceDec&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Balance&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Balance&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetFade&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Fade&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;FadeInc&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;FadeDec&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Fade&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Fade&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetMute&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Mute&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Mute&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Mute&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeLimit&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeLimit&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
   &amp;lt;/actionList&amp;gt;&lt;br /&gt;
   &amp;lt;serviceStateTable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Volume&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Mute&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;boolean&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Balance&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;i4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Fade&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;i4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeLimit&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeUnity&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeSteps&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeMilliDbPerStep&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;BalanceMax&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;FadeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
   &amp;lt;/serviceStateTable&amp;gt;&lt;br /&gt;
&amp;lt;/scpd&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Johnh</name></author>	</entry>

	<entry>
		<id>http://wiki.openhome.org/wiki/Av:Developer:VolumeService</id>
		<title>Av:Developer:VolumeService</title>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/wiki/Av:Developer:VolumeService"/>
				<updated>2013-08-09T14:24:04Z</updated>
		
		<summary type="html">&lt;p&gt;Johnh: /* Actions */  elevated SetFade action to same level as all others&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Architecture Overview =&lt;br /&gt;
The Volume Service provides a means of controlling various settings which affect the product's volume (signal amplitude) measured at the output channels. A product may have one or more output channels. Balance or Fade settings may result in different volumes at each output. In the Mute state, all output channels are reduced to zero volume. &lt;br /&gt;
&lt;br /&gt;
==Volume==&lt;br /&gt;
Volume is an adjustable setting that controls the loudness of the audio at the output channels of the product. Volume can be set to an absolute value or incremented/decremented in single steps. The maximum Volume setting is defined by the current value of '''VolumeLimit'''. The minimum Volume setting is zero. If an attempt is made to set the Volume above VolumeLimit, the Volume will be set to the '''VolumLimit'''. If an attempt is made to set the Volume above '''VolumeMax''', an error will  be reported.&lt;br /&gt;
&lt;br /&gt;
== Volume Limit ==&lt;br /&gt;
VolumeLimit specifies the upper limit of the Volume. Any attempt to set Volume above the VolumeLimit will reset Volume to the value of VolumeLimit. If VolumeLimit is changed, Volume is checked and automatically reduced if necessary. The maximum VolumeLimit setting is defined by the '''VolumeMax''' Characteristic.&lt;br /&gt;
&lt;br /&gt;
==Balance==&lt;br /&gt;
Balance is an adjustable setting that specifies the '''bias''' in volume between the '''left and right''' output channels of the product. Balance can be set to an absolute value or incremented/decremented in single steps. The maximum Balance setting is defined by the '''BalanceMax''' Characteristic. The minimum Balance setting is defined by ('''-BalanceMax''') .&lt;br /&gt;
&lt;br /&gt;
==Fade==&lt;br /&gt;
Fade is an adjustable setting that specifies the '''bias''' in volume between the '''front and rear''' output channels of the products. Fade can be set to an absolute value or incremented/decremented in single steps. The maximum Fade setting is defined by the '''FadeMax''' Characteristic. The minimum Fade setting is defined by ('''-FadeMax''') .&lt;br /&gt;
&lt;br /&gt;
==Mute==&lt;br /&gt;
Mute is an adjustable state that determines if the output channels of the product are muted or not. When muted, all output channels of the product are silent.&lt;br /&gt;
&lt;br /&gt;
==Characteristics==&lt;br /&gt;
Each product has six read-only values that define value ranges and their granularity -- as well as notable values within these ranges -- for volume, balance, and fade.&lt;br /&gt;
&lt;br /&gt;
====VolumeMax====&lt;br /&gt;
VolumeMax defines the absolute maximum Volume setting.&lt;br /&gt;
&lt;br /&gt;
====VolumeUnity====&lt;br /&gt;
VolumeUnity defines the value of Volume that will result in unity system gain (i.e. ''output amplitude'' = ''input amplitude'').&lt;br /&gt;
&lt;br /&gt;
====VolumeSteps====&lt;br /&gt;
VolumeSteps defines the number of step increments required to increase the Volume from zero to VolumeMax.&lt;br /&gt;
&lt;br /&gt;
====VolumeMilliDbPerStep====&lt;br /&gt;
VolumeMilliDbPerStep defines the size of each volume step in '''binary milli decibels''' (mibi dB). [''1024mibi dB = 1dB'']&lt;br /&gt;
&lt;br /&gt;
====BalanceMax====&lt;br /&gt;
BalanceMax defines the maximum Balance setting. The minimum Balance setting is (-BalanceMax).  A setting of zero results in neutral balance (i.e. no artificial bias) between left and right output channels.&lt;br /&gt;
&lt;br /&gt;
====FadeMax====&lt;br /&gt;
FadeMax defines the maximum Fade setting. The minimum Fade setting is (-FadeMax).  A setting of zero results in neutral fade (i.e. no artificial bias) between front and back output channels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Actions=&lt;br /&gt;
&lt;br /&gt;
=== Volume ===&lt;br /&gt;
The Volume action reports the current Volume setting.&lt;br /&gt;
&lt;br /&gt;
=== SetVolume===&lt;br /&gt;
The SetVolume action provides a means of setting the Volume to an absolute value.&lt;br /&gt;
&lt;br /&gt;
=== Volume Inc===&lt;br /&gt;
The VolumeInc action provides a means of increasing the Volume by 1.&lt;br /&gt;
=== Volume Dec ===&lt;br /&gt;
The VolumeDec action provides a means of decreasing the Volume by 1.&lt;br /&gt;
=== VolumeLimit ===&lt;br /&gt;
The VolumeLimit action reports the current VolumeLimit setting.&lt;br /&gt;
=== Balance ===&lt;br /&gt;
The Balance action reports the current Balance setting.&lt;br /&gt;
=== SetBalance ===&lt;br /&gt;
The SetBalance action provides a means of setting the Balance to a specific value.&lt;br /&gt;
&lt;br /&gt;
=== BalanceInc===&lt;br /&gt;
The BalanceInc action provides a means of increasing the Balance by 1.&lt;br /&gt;
=== BalanceDec ===&lt;br /&gt;
The BalanceDec action provides a means of decreasing the Balance by 1.&lt;br /&gt;
=== Fade ===&lt;br /&gt;
The Fade action reports the current Fade setting of the product.&lt;br /&gt;
=== SetFade ===&lt;br /&gt;
The SetFade action provides a means of setting the Fade to a specific value.&lt;br /&gt;
=== FadeInc===&lt;br /&gt;
The FadeInc action provides a means of increasing the Fade by 1.&lt;br /&gt;
&lt;br /&gt;
=== FadeDec ===&lt;br /&gt;
The FadeDec action provides a means of decreasing the Fade by 1.&lt;br /&gt;
=== Mute ===&lt;br /&gt;
The Mute action reports the current Mute state of the product.&lt;br /&gt;
=== SetMute ===&lt;br /&gt;
The SetMute action provides a means of setting the Mute state.&lt;br /&gt;
&lt;br /&gt;
=== Characteristics ===&lt;br /&gt;
The Characteristics action returns all six characteristic values of the product.&lt;br /&gt;
&lt;br /&gt;
= Technical Details =&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Domain  : av.openhome.org&lt;br /&gt;
    Name    : Volume&lt;br /&gt;
    Version : 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Volume Service Description (XML) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scpd xmlns=&amp;quot;urn:schemas-upnp-org:service-1-0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;specVersion&amp;gt;&lt;br /&gt;
      &amp;lt;major&amp;gt;1&amp;lt;/major&amp;gt;&lt;br /&gt;
      &amp;lt;minor&amp;gt;0&amp;lt;/minor&amp;gt;&lt;br /&gt;
   &amp;lt;/specVersion&amp;gt;&lt;br /&gt;
   &amp;lt;actionList&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Characteristics&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeMax&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeUnity&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeUnity&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeSteps&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeSteps&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeMilliDbPerStep&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeMilliDbPerStep&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BalanceMax&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BalanceMax&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;FadeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;FadeMax&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetVolume&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Volume&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeInc&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeDec&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Volume&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Volume&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetBalance&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Balance&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;BalanceInc&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;BalanceDec&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Balance&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Balance&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetFade&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Fade&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;FadeInc&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;FadeDec&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Fade&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Fade&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetMute&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Mute&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Mute&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Mute&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeLimit&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeLimit&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
   &amp;lt;/actionList&amp;gt;&lt;br /&gt;
   &amp;lt;serviceStateTable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Volume&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Mute&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;boolean&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Balance&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;i4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Fade&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;i4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeLimit&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeUnity&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeSteps&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeMilliDbPerStep&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;BalanceMax&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;FadeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
   &amp;lt;/serviceStateTable&amp;gt;&lt;br /&gt;
&amp;lt;/scpd&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Johnh</name></author>	</entry>

	<entry>
		<id>http://wiki.openhome.org/wiki/Av:Developer:VolumeService</id>
		<title>Av:Developer:VolumeService</title>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/wiki/Av:Developer:VolumeService"/>
				<updated>2013-08-09T14:23:17Z</updated>
		
		<summary type="html">&lt;p&gt;Johnh: /* Characteristics */  de-emphasised number of values returned by Characteristics action&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Architecture Overview =&lt;br /&gt;
The Volume Service provides a means of controlling various settings which affect the product's volume (signal amplitude) measured at the output channels. A product may have one or more output channels. Balance or Fade settings may result in different volumes at each output. In the Mute state, all output channels are reduced to zero volume. &lt;br /&gt;
&lt;br /&gt;
==Volume==&lt;br /&gt;
Volume is an adjustable setting that controls the loudness of the audio at the output channels of the product. Volume can be set to an absolute value or incremented/decremented in single steps. The maximum Volume setting is defined by the current value of '''VolumeLimit'''. The minimum Volume setting is zero. If an attempt is made to set the Volume above VolumeLimit, the Volume will be set to the '''VolumLimit'''. If an attempt is made to set the Volume above '''VolumeMax''', an error will  be reported.&lt;br /&gt;
&lt;br /&gt;
== Volume Limit ==&lt;br /&gt;
VolumeLimit specifies the upper limit of the Volume. Any attempt to set Volume above the VolumeLimit will reset Volume to the value of VolumeLimit. If VolumeLimit is changed, Volume is checked and automatically reduced if necessary. The maximum VolumeLimit setting is defined by the '''VolumeMax''' Characteristic.&lt;br /&gt;
&lt;br /&gt;
==Balance==&lt;br /&gt;
Balance is an adjustable setting that specifies the '''bias''' in volume between the '''left and right''' output channels of the product. Balance can be set to an absolute value or incremented/decremented in single steps. The maximum Balance setting is defined by the '''BalanceMax''' Characteristic. The minimum Balance setting is defined by ('''-BalanceMax''') .&lt;br /&gt;
&lt;br /&gt;
==Fade==&lt;br /&gt;
Fade is an adjustable setting that specifies the '''bias''' in volume between the '''front and rear''' output channels of the products. Fade can be set to an absolute value or incremented/decremented in single steps. The maximum Fade setting is defined by the '''FadeMax''' Characteristic. The minimum Fade setting is defined by ('''-FadeMax''') .&lt;br /&gt;
&lt;br /&gt;
==Mute==&lt;br /&gt;
Mute is an adjustable state that determines if the output channels of the product are muted or not. When muted, all output channels of the product are silent.&lt;br /&gt;
&lt;br /&gt;
==Characteristics==&lt;br /&gt;
Each product has six read-only values that define value ranges and their granularity -- as well as notable values within these ranges -- for volume, balance, and fade.&lt;br /&gt;
&lt;br /&gt;
====VolumeMax====&lt;br /&gt;
VolumeMax defines the absolute maximum Volume setting.&lt;br /&gt;
&lt;br /&gt;
====VolumeUnity====&lt;br /&gt;
VolumeUnity defines the value of Volume that will result in unity system gain (i.e. ''output amplitude'' = ''input amplitude'').&lt;br /&gt;
&lt;br /&gt;
====VolumeSteps====&lt;br /&gt;
VolumeSteps defines the number of step increments required to increase the Volume from zero to VolumeMax.&lt;br /&gt;
&lt;br /&gt;
====VolumeMilliDbPerStep====&lt;br /&gt;
VolumeMilliDbPerStep defines the size of each volume step in '''binary milli decibels''' (mibi dB). [''1024mibi dB = 1dB'']&lt;br /&gt;
&lt;br /&gt;
====BalanceMax====&lt;br /&gt;
BalanceMax defines the maximum Balance setting. The minimum Balance setting is (-BalanceMax).  A setting of zero results in neutral balance (i.e. no artificial bias) between left and right output channels.&lt;br /&gt;
&lt;br /&gt;
====FadeMax====&lt;br /&gt;
FadeMax defines the maximum Fade setting. The minimum Fade setting is (-FadeMax).  A setting of zero results in neutral fade (i.e. no artificial bias) between front and back output channels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Actions=&lt;br /&gt;
&lt;br /&gt;
=== Volume ===&lt;br /&gt;
The Volume action reports the current Volume setting.&lt;br /&gt;
&lt;br /&gt;
=== SetVolume===&lt;br /&gt;
The SetVolume action provides a means of setting the Volume to an absolute value.&lt;br /&gt;
&lt;br /&gt;
=== Volume Inc===&lt;br /&gt;
The VolumeInc action provides a means of increasing the Volume by 1.&lt;br /&gt;
=== Volume Dec ===&lt;br /&gt;
The VolumeDec action provides a means of decreasing the Volume by 1.&lt;br /&gt;
=== VolumeLimit ===&lt;br /&gt;
The VolumeLimit action reports the current VolumeLimit setting.&lt;br /&gt;
=== Balance ===&lt;br /&gt;
The Balance action reports the current Balance setting.&lt;br /&gt;
=== SetBalance ===&lt;br /&gt;
The SetBalance action provides a means of setting the Balance to a specific value.&lt;br /&gt;
&lt;br /&gt;
=== BalanceInc===&lt;br /&gt;
The BalanceInc action provides a means of increasing the Balance by 1.&lt;br /&gt;
=== BalanceDec ===&lt;br /&gt;
The BalanceDec action provides a means of decreasing the Balance by 1.&lt;br /&gt;
=== Fade ===&lt;br /&gt;
The Fade action reports the current Fade setting of the product.&lt;br /&gt;
==== SetFade ====&lt;br /&gt;
The SetFade action provides a means of setting the Fade to a specific value.&lt;br /&gt;
=== FadeInc===&lt;br /&gt;
The FadeInc action provides a means of increasing the Fade by 1.&lt;br /&gt;
&lt;br /&gt;
=== FadeDec ===&lt;br /&gt;
The FadeDec action provides a means of decreasing the Fade by 1.&lt;br /&gt;
=== Mute ===&lt;br /&gt;
The Mute action reports the current Mute state of the product.&lt;br /&gt;
=== SetMute ===&lt;br /&gt;
The SetMute action provides a means of setting the Mute state.&lt;br /&gt;
&lt;br /&gt;
=== Characteristics ===&lt;br /&gt;
The Characteristics action returns all six characteristic values of the product.&lt;br /&gt;
&lt;br /&gt;
= Technical Details =&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Domain  : av.openhome.org&lt;br /&gt;
    Name    : Volume&lt;br /&gt;
    Version : 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Volume Service Description (XML) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scpd xmlns=&amp;quot;urn:schemas-upnp-org:service-1-0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;specVersion&amp;gt;&lt;br /&gt;
      &amp;lt;major&amp;gt;1&amp;lt;/major&amp;gt;&lt;br /&gt;
      &amp;lt;minor&amp;gt;0&amp;lt;/minor&amp;gt;&lt;br /&gt;
   &amp;lt;/specVersion&amp;gt;&lt;br /&gt;
   &amp;lt;actionList&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Characteristics&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeMax&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeUnity&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeUnity&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeSteps&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeSteps&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeMilliDbPerStep&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeMilliDbPerStep&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BalanceMax&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BalanceMax&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;FadeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;FadeMax&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetVolume&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Volume&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeInc&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeDec&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Volume&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Volume&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetBalance&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Balance&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;BalanceInc&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;BalanceDec&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Balance&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Balance&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetFade&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Fade&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;FadeInc&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;FadeDec&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Fade&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Fade&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetMute&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Mute&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Mute&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Mute&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeLimit&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeLimit&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
   &amp;lt;/actionList&amp;gt;&lt;br /&gt;
   &amp;lt;serviceStateTable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Volume&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Mute&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;boolean&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Balance&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;i4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Fade&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;i4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeLimit&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeUnity&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeSteps&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeMilliDbPerStep&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;BalanceMax&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;FadeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
   &amp;lt;/serviceStateTable&amp;gt;&lt;br /&gt;
&amp;lt;/scpd&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Johnh</name></author>	</entry>

	<entry>
		<id>http://wiki.openhome.org/wiki/Av:Developer:VolumeService</id>
		<title>Av:Developer:VolumeService</title>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/wiki/Av:Developer:VolumeService"/>
				<updated>2013-08-09T14:20:38Z</updated>
		
		<summary type="html">&lt;p&gt;Johnh: expanded def'n of Characteristics;  added neutral balance and fade;  fixed minor spelling, layout glitches&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Architecture Overview =&lt;br /&gt;
The Volume Service provides a means of controlling various settings which affect the product's volume (signal amplitude) measured at the output channels. A product may have one or more output channels. Balance or Fade settings may result in different volumes at each output. In the Mute state, all output channels are reduced to zero volume. &lt;br /&gt;
&lt;br /&gt;
==Volume==&lt;br /&gt;
Volume is an adjustable setting that controls the loudness of the audio at the output channels of the product. Volume can be set to an absolute value or incremented/decremented in single steps. The maximum Volume setting is defined by the current value of '''VolumeLimit'''. The minimum Volume setting is zero. If an attempt is made to set the Volume above VolumeLimit, the Volume will be set to the '''VolumLimit'''. If an attempt is made to set the Volume above '''VolumeMax''', an error will  be reported.&lt;br /&gt;
&lt;br /&gt;
== Volume Limit ==&lt;br /&gt;
VolumeLimit specifies the upper limit of the Volume. Any attempt to set Volume above the VolumeLimit will reset Volume to the value of VolumeLimit. If VolumeLimit is changed, Volume is checked and automatically reduced if necessary. The maximum VolumeLimit setting is defined by the '''VolumeMax''' Characteristic.&lt;br /&gt;
&lt;br /&gt;
==Balance==&lt;br /&gt;
Balance is an adjustable setting that specifies the '''bias''' in volume between the '''left and right''' output channels of the product. Balance can be set to an absolute value or incremented/decremented in single steps. The maximum Balance setting is defined by the '''BalanceMax''' Characteristic. The minimum Balance setting is defined by ('''-BalanceMax''') .&lt;br /&gt;
&lt;br /&gt;
==Fade==&lt;br /&gt;
Fade is an adjustable setting that specifies the '''bias''' in volume between the '''front and rear''' output channels of the products. Fade can be set to an absolute value or incremented/decremented in single steps. The maximum Fade setting is defined by the '''FadeMax''' Characteristic. The minimum Fade setting is defined by ('''-FadeMax''') .&lt;br /&gt;
&lt;br /&gt;
==Mute==&lt;br /&gt;
Mute is an adjustable state that determines if the output channels of the product are muted or not. When muted, all output channels of the product are silent.&lt;br /&gt;
&lt;br /&gt;
==Characteristics==&lt;br /&gt;
Each product has six read-only values that define value ranges and their granularity -- as well as notable values within these ranges -- for volume, balance, and fade.&lt;br /&gt;
&lt;br /&gt;
====VolumeMax====&lt;br /&gt;
VolumeMax defines the absolute maximum Volume setting.&lt;br /&gt;
&lt;br /&gt;
====VolumeUnity====&lt;br /&gt;
VolumeUnity defines the value of Volume that will result in unity system gain (i.e. ''output amplitude'' = ''input amplitude'').&lt;br /&gt;
&lt;br /&gt;
====VolumeSteps====&lt;br /&gt;
VolumeSteps defines the number of step increments required to increase the Volume from zero to VolumeMax.&lt;br /&gt;
&lt;br /&gt;
====VolumeMilliDbPerStep====&lt;br /&gt;
VolumeMilliDbPerStep defines the size of each volume step in '''binary milli decibels''' (mibi dB). [''1024mibi dB = 1dB'']&lt;br /&gt;
&lt;br /&gt;
====BalanceMax====&lt;br /&gt;
BalanceMax defines the maximum Balance setting. The minimum Balance setting is (-BalanceMax).  A setting of zero results in neutral balance (i.e. no artificial bias) between left and right output channels.&lt;br /&gt;
&lt;br /&gt;
====FadeMax====&lt;br /&gt;
FadeMax defines the maximum Fade setting. The minimum Fade setting is (-FadeMax).  A setting of zero results in neutral fade (i.e. no artificial bias) between front and back output channels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Actions=&lt;br /&gt;
&lt;br /&gt;
=== Volume ===&lt;br /&gt;
The Volume action reports the current Volume setting.&lt;br /&gt;
&lt;br /&gt;
=== SetVolume===&lt;br /&gt;
The SetVolume action provides a means of setting the Volume to an absolute value.&lt;br /&gt;
&lt;br /&gt;
=== Volume Inc===&lt;br /&gt;
The VolumeInc action provides a means of increasing the Volume by 1.&lt;br /&gt;
=== Volume Dec ===&lt;br /&gt;
The VolumeDec action provides a means of decreasing the Volume by 1.&lt;br /&gt;
=== VolumeLimit ===&lt;br /&gt;
The VolumeLimit action reports the current VolumeLimit setting.&lt;br /&gt;
=== Balance ===&lt;br /&gt;
The Balance action reports the current Balance setting.&lt;br /&gt;
=== SetBalance ===&lt;br /&gt;
The SetBalance action provides a means of setting the Balance to a specific value.&lt;br /&gt;
&lt;br /&gt;
=== BalanceInc===&lt;br /&gt;
The BalanceInc action provides a means of increasing the Balance by 1.&lt;br /&gt;
=== BalanceDec ===&lt;br /&gt;
The BalanceDec action provides a means of decreasing the Balance by 1.&lt;br /&gt;
=== Fade ===&lt;br /&gt;
The Fade action reports the current Fade setting of the product.&lt;br /&gt;
==== SetFade ====&lt;br /&gt;
The SetFade action provides a means of setting the Fade to a specific value.&lt;br /&gt;
=== FadeInc===&lt;br /&gt;
The FadeInc action provides a means of increasing the Fade by 1.&lt;br /&gt;
&lt;br /&gt;
=== FadeDec ===&lt;br /&gt;
The FadeDec action provides a means of decreasing the Fade by 1.&lt;br /&gt;
=== Mute ===&lt;br /&gt;
The Mute action reports the current Mute state of the product.&lt;br /&gt;
=== SetMute ===&lt;br /&gt;
The SetMute action provides a means of setting the Mute state.&lt;br /&gt;
&lt;br /&gt;
=== Characteristics ===&lt;br /&gt;
The Characteristics action returns all '''six''' characteristic values of the product.&lt;br /&gt;
&lt;br /&gt;
= Technical Details =&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Domain  : av.openhome.org&lt;br /&gt;
    Name    : Volume&lt;br /&gt;
    Version : 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Volume Service Description (XML) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scpd xmlns=&amp;quot;urn:schemas-upnp-org:service-1-0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;specVersion&amp;gt;&lt;br /&gt;
      &amp;lt;major&amp;gt;1&amp;lt;/major&amp;gt;&lt;br /&gt;
      &amp;lt;minor&amp;gt;0&amp;lt;/minor&amp;gt;&lt;br /&gt;
   &amp;lt;/specVersion&amp;gt;&lt;br /&gt;
   &amp;lt;actionList&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Characteristics&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeMax&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeUnity&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeUnity&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeSteps&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeSteps&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;VolumeMilliDbPerStep&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeMilliDbPerStep&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BalanceMax&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BalanceMax&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;FadeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;FadeMax&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetVolume&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Volume&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeInc&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeDec&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Volume&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Volume&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetBalance&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Balance&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;BalanceInc&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;BalanceDec&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Balance&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Balance&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetFade&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Fade&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;FadeInc&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;FadeDec&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Fade&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Fade&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;SetMute&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;in&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Mute&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Mute&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Mute&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
      &amp;lt;action&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeLimit&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;VolumeLimit&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
         &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
   &amp;lt;/actionList&amp;gt;&lt;br /&gt;
   &amp;lt;serviceStateTable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Volume&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Mute&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;boolean&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Balance&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;i4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;Fade&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;i4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeLimit&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeUnity&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeSteps&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;VolumeMilliDbPerStep&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;BalanceMax&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
      &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;name&amp;gt;FadeMax&amp;lt;/name&amp;gt;&lt;br /&gt;
         &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
      &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
   &amp;lt;/serviceStateTable&amp;gt;&lt;br /&gt;
&amp;lt;/scpd&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Johnh</name></author>	</entry>

	<entry>
		<id>http://wiki.openhome.org/wiki/Av:Developer:InfoService</id>
		<title>Av:Developer:InfoService</title>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/wiki/Av:Developer:InfoService"/>
				<updated>2013-08-07T13:34:37Z</updated>
		
		<summary type="html">&lt;p&gt;Johnh: /* State Variables */  added description of remaining state variables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
The Info service provides information concerning the currently playing media. The information provided is based on the concept of a track, which has a URI and metadata in DIDL-Lite format. Some time after the track changes further information becomes available such as the bit-rate, sample-rate, bit-depth, etc. Optionally a track may contain dynamic textual information (known as metatext) that is updated as the track is played. Metatext is typically used to convey broadcast information from Internet radio stations.&lt;br /&gt;
&lt;br /&gt;
= Actions =&lt;br /&gt;
==Counters==&lt;br /&gt;
Counters are used to version Track, Details, and Metatext information in the face of dynamic changes.&lt;br /&gt;
&lt;br /&gt;
The Counters action can be used by clients that are unable to partake in UPnP eventing in order to track changes in the information provided by the Info Service.&lt;br /&gt;
&lt;br /&gt;
When a track changes, the Track Count is incremented, the URI and Metadata are set, the Details Count is set to zero, the Details are defaulted to blank and zero values, the Metatext Count is set to zero, and the Metatext is set to blank.&lt;br /&gt;
&lt;br /&gt;
Subsequent updates to the Details and Metatext are accompanied by increments in their respective Counters.&lt;br /&gt;
&lt;br /&gt;
==Track==&lt;br /&gt;
Reports current track information concerning the current media:&lt;br /&gt;
*URI&lt;br /&gt;
*Metadata&lt;br /&gt;
&lt;br /&gt;
==Details==&lt;br /&gt;
Reports details concerning the current media:&lt;br /&gt;
*Duration&lt;br /&gt;
*Bit Rate&lt;br /&gt;
*Bit Depth&lt;br /&gt;
*Sample Rate&lt;br /&gt;
*Lossless&lt;br /&gt;
*Codec Name&lt;br /&gt;
&lt;br /&gt;
==Metatext==&lt;br /&gt;
Reports dynamic textual information concerning the current media.&lt;br /&gt;
&lt;br /&gt;
This currently amounts to broadcast information from Internet radio stations, but the same mechanism could be used for other purposes in the future.&lt;br /&gt;
&lt;br /&gt;
= State Variables =&lt;br /&gt;
== TrackCount ==&lt;br /&gt;
the strictly monotonically increasing integer number of tracks played (incl. current one)&lt;br /&gt;
&lt;br /&gt;
== DetailsCount ==&lt;br /&gt;
the strictly monotonically increasing integer number versioning changes in track encoding parameters (duration, bitrate, bitdepth, samplerate, lossy compression, codec);  reset to zero on each track change&lt;br /&gt;
&lt;br /&gt;
== MetatextCount ==&lt;br /&gt;
the strictly monotonicallyl increasing integer number versioning changes in any text associated with the currently playing track;  reset to zero on each track change&lt;br /&gt;
&lt;br /&gt;
== Uri ==&lt;br /&gt;
the Universal Resource Indicator, indicating the currently playing track;  initially empty string&lt;br /&gt;
&lt;br /&gt;
== Metadata ==&lt;br /&gt;
the DIDL-Lite encoded string of information about the currently playing track (e.g. artist, album, year, etc.);  initially empty string&lt;br /&gt;
&lt;br /&gt;
== Duration ==&lt;br /&gt;
the length of the currently playing track in seconds&lt;br /&gt;
&lt;br /&gt;
== BitRate ==&lt;br /&gt;
the dataflow rate in bits per second of the currently playing track in its encoded representation(XXX)&lt;br /&gt;
XXX MP3: CBR vs. VBR&lt;br /&gt;
&lt;br /&gt;
== BitDepth ==&lt;br /&gt;
the sample (data) resolution in bits per channel sample of the currently playing track&lt;br /&gt;
&lt;br /&gt;
== SampleRate ==&lt;br /&gt;
the time resolution of samples per second in kHz of the currently playing track&lt;br /&gt;
&lt;br /&gt;
== Lossless ==&lt;br /&gt;
the indication of whether the currently playing track can be decoded (decompressed) to a bit-accurate representation of the original audio data (lossless) or merely to a good approximation (lossy encoding)&lt;br /&gt;
&lt;br /&gt;
== CodecName ==&lt;br /&gt;
the shorthand name for the audio encoding and container format used to represent the currently playing track (e.g. AAC);  initially empty string&lt;br /&gt;
&lt;br /&gt;
== Metatext ==&lt;br /&gt;
the additional textual information (if any) associated with the currently playing track&lt;br /&gt;
&lt;br /&gt;
= Technical Details =&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Domain  : av.openhome.org&lt;br /&gt;
    Name    : Info&lt;br /&gt;
    Version : 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Info Service Description (XML) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scpd xmlns=&amp;quot;urn:schemas-upnp-org:service-1-0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;specVersion&amp;gt;&lt;br /&gt;
        &amp;lt;major&amp;gt;1&amp;lt;/major&amp;gt;&lt;br /&gt;
        &amp;lt;minor&amp;gt;0&amp;lt;/minor&amp;gt;&lt;br /&gt;
    &amp;lt;/specVersion&amp;gt;&lt;br /&gt;
    &amp;lt;actionList&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Counters&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;TrackCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;TrackCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;DetailsCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;DetailsCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;MetatextCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;MetatextCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Track&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Uri&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Uri&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Metadata&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Metadata&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Details&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Duration&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Duration&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BitRate&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BitRate&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BitDepth&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BitDepth&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;SampleRate&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;SampleRate&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Lossless&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Lossless&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;CodecName&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;CodecName&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Metatext&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Metatext&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;/actionList&amp;gt;&lt;br /&gt;
    &amp;lt;serviceStateTable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;TrackCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;DetailsCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;MetatextCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Uri&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Metadata&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Duration&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;BitRate&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;BitDepth&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;SampleRate&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Lossless&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;boolean&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;CodecName&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Metatext&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
   &amp;lt;/serviceStateTable&amp;gt;&lt;br /&gt;
&amp;lt;/scpd&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Johnh</name></author>	</entry>

	<entry>
		<id>http://wiki.openhome.org/wiki/Av:Developer:InfoService</id>
		<title>Av:Developer:InfoService</title>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/wiki/Av:Developer:InfoService"/>
				<updated>2013-08-06T13:48:46Z</updated>
		
		<summary type="html">&lt;p&gt;Johnh: /* TrackCount */ described TrackCount&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
The Info service provides information concerning the currently playing media. The information provided is based on the concept of a track, which has a URI and metadata in DIDL-Lite format. Some time after the track changes further information becomes available such as the bit-rate, sample-rate, bit-depth, etc. Optionally a track may contain dynamic textual information (known as metatext) that is updated as the track is played. Metatext is typically used to convey broadcast information from Internet radio stations.&lt;br /&gt;
&lt;br /&gt;
= Actions =&lt;br /&gt;
==Counters==&lt;br /&gt;
Counters are used to version Track, Details, and Metatext information in the face of dynamic changes.&lt;br /&gt;
&lt;br /&gt;
The Counters action can be used by clients that are unable to partake in UPnP eventing in order to track changes in the information provided by the Info Service.&lt;br /&gt;
&lt;br /&gt;
When a track changes, the Track Count is incremented, the URI and Metadata are set, the Details Count is set to zero, the Details are defaulted to blank and zero values, the Metatext Count is set to zero, and the Metatext is set to blank.&lt;br /&gt;
&lt;br /&gt;
Subsequent updates to the Details and Metatext are accompanied by increments in their respective Counters.&lt;br /&gt;
&lt;br /&gt;
==Track==&lt;br /&gt;
Reports current track information concerning the current media:&lt;br /&gt;
*URI&lt;br /&gt;
*Metadata&lt;br /&gt;
&lt;br /&gt;
==Details==&lt;br /&gt;
Reports details concerning the current media:&lt;br /&gt;
*Duration&lt;br /&gt;
*Bit Rate&lt;br /&gt;
*Bit Depth&lt;br /&gt;
*Sample Rate&lt;br /&gt;
*Lossless&lt;br /&gt;
*Codec Name&lt;br /&gt;
&lt;br /&gt;
==Metatext==&lt;br /&gt;
Reports dynamic textual information concerning the current media.&lt;br /&gt;
&lt;br /&gt;
This currently amounts to broadcast information from Internet radio stations, but the same mechanism could be used for other purposes in the future.&lt;br /&gt;
&lt;br /&gt;
= State Variables =&lt;br /&gt;
== TrackCount ==&lt;br /&gt;
the strictly monotonically increasing integer number of track played (incl. current one)&lt;br /&gt;
&lt;br /&gt;
== DetailsCount ==&lt;br /&gt;
== MetatextCount ==&lt;br /&gt;
== Uri ==&lt;br /&gt;
== Metadata ==&lt;br /&gt;
== Duration ==&lt;br /&gt;
== BitRate ==&lt;br /&gt;
== BitDepth ==&lt;br /&gt;
== SampleRate ==&lt;br /&gt;
== Lossless ==&lt;br /&gt;
== CodecName ==&lt;br /&gt;
== Metatext ==&lt;br /&gt;
&lt;br /&gt;
= Technical Details =&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Domain  : av.openhome.org&lt;br /&gt;
    Name    : Info&lt;br /&gt;
    Version : 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Info Service Description (XML) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scpd xmlns=&amp;quot;urn:schemas-upnp-org:service-1-0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;specVersion&amp;gt;&lt;br /&gt;
        &amp;lt;major&amp;gt;1&amp;lt;/major&amp;gt;&lt;br /&gt;
        &amp;lt;minor&amp;gt;0&amp;lt;/minor&amp;gt;&lt;br /&gt;
    &amp;lt;/specVersion&amp;gt;&lt;br /&gt;
    &amp;lt;actionList&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Counters&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;TrackCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;TrackCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;DetailsCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;DetailsCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;MetatextCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;MetatextCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Track&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Uri&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Uri&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Metadata&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Metadata&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Details&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Duration&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Duration&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BitRate&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BitRate&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BitDepth&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BitDepth&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;SampleRate&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;SampleRate&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Lossless&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Lossless&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;CodecName&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;CodecName&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Metatext&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Metatext&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;/actionList&amp;gt;&lt;br /&gt;
    &amp;lt;serviceStateTable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;TrackCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;DetailsCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;MetatextCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Uri&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Metadata&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Duration&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;BitRate&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;BitDepth&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;SampleRate&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Lossless&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;boolean&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;CodecName&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Metatext&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
   &amp;lt;/serviceStateTable&amp;gt;&lt;br /&gt;
&amp;lt;/scpd&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Johnh</name></author>	</entry>

	<entry>
		<id>http://wiki.openhome.org/wiki/Av:Developer:InfoService</id>
		<title>Av:Developer:InfoService</title>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/wiki/Av:Developer:InfoService"/>
				<updated>2013-08-06T13:37:36Z</updated>
		
		<summary type="html">&lt;p&gt;Johnh: added section on State Variables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
The Info service provides information concerning the currently playing media. The information provided is based on the concept of a track, which has a URI and metadata in DIDL-Lite format. Some time after the track changes further information becomes available such as the bit-rate, sample-rate, bit-depth, etc. Optionally a track may contain dynamic textual information (known as metatext) that is updated as the track is played. Metatext is typically used to convey broadcast information from Internet radio stations.&lt;br /&gt;
&lt;br /&gt;
= Actions =&lt;br /&gt;
==Counters==&lt;br /&gt;
Counters are used to version Track, Details, and Metatext information in the face of dynamic changes.&lt;br /&gt;
&lt;br /&gt;
The Counters action can be used by clients that are unable to partake in UPnP eventing in order to track changes in the information provided by the Info Service.&lt;br /&gt;
&lt;br /&gt;
When a track changes, the Track Count is incremented, the URI and Metadata are set, the Details Count is set to zero, the Details are defaulted to blank and zero values, the Metatext Count is set to zero, and the Metatext is set to blank.&lt;br /&gt;
&lt;br /&gt;
Subsequent updates to the Details and Metatext are accompanied by increments in their respective Counters.&lt;br /&gt;
&lt;br /&gt;
==Track==&lt;br /&gt;
Reports current track information concerning the current media:&lt;br /&gt;
*URI&lt;br /&gt;
*Metadata&lt;br /&gt;
&lt;br /&gt;
==Details==&lt;br /&gt;
Reports details concerning the current media:&lt;br /&gt;
*Duration&lt;br /&gt;
*Bit Rate&lt;br /&gt;
*Bit Depth&lt;br /&gt;
*Sample Rate&lt;br /&gt;
*Lossless&lt;br /&gt;
*Codec Name&lt;br /&gt;
&lt;br /&gt;
==Metatext==&lt;br /&gt;
Reports dynamic textual information concerning the current media.&lt;br /&gt;
&lt;br /&gt;
This currently amounts to broadcast information from Internet radio stations, but the same mechanism could be used for other purposes in the future.&lt;br /&gt;
&lt;br /&gt;
= State Variables =&lt;br /&gt;
== TrackCount ==&lt;br /&gt;
== DetailsCount ==&lt;br /&gt;
== MetatextCount ==&lt;br /&gt;
== Uri ==&lt;br /&gt;
== Metadata ==&lt;br /&gt;
== Duration ==&lt;br /&gt;
== BitRate ==&lt;br /&gt;
== BitDepth ==&lt;br /&gt;
== SampleRate ==&lt;br /&gt;
== Lossless ==&lt;br /&gt;
== CodecName ==&lt;br /&gt;
== Metatext ==&lt;br /&gt;
&lt;br /&gt;
= Technical Details =&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Domain  : av.openhome.org&lt;br /&gt;
    Name    : Info&lt;br /&gt;
    Version : 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Info Service Description (XML) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scpd xmlns=&amp;quot;urn:schemas-upnp-org:service-1-0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;specVersion&amp;gt;&lt;br /&gt;
        &amp;lt;major&amp;gt;1&amp;lt;/major&amp;gt;&lt;br /&gt;
        &amp;lt;minor&amp;gt;0&amp;lt;/minor&amp;gt;&lt;br /&gt;
    &amp;lt;/specVersion&amp;gt;&lt;br /&gt;
    &amp;lt;actionList&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Counters&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;TrackCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;TrackCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;DetailsCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;DetailsCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;MetatextCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;MetatextCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Track&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Uri&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Uri&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Metadata&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Metadata&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Details&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Duration&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Duration&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BitRate&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BitRate&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BitDepth&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BitDepth&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;SampleRate&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;SampleRate&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Lossless&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Lossless&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;CodecName&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;CodecName&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Metatext&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Metatext&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;/actionList&amp;gt;&lt;br /&gt;
    &amp;lt;serviceStateTable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;TrackCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;DetailsCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;MetatextCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Uri&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Metadata&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Duration&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;BitRate&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;BitDepth&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;SampleRate&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Lossless&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;boolean&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;CodecName&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Metatext&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
   &amp;lt;/serviceStateTable&amp;gt;&lt;br /&gt;
&amp;lt;/scpd&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Johnh</name></author>	</entry>

	<entry>
		<id>http://wiki.openhome.org/wiki/Av:Developer:InfoService</id>
		<title>Av:Developer:InfoService</title>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/wiki/Av:Developer:InfoService"/>
				<updated>2013-08-06T13:23:10Z</updated>
		
		<summary type="html">&lt;p&gt;Johnh: /* Metatext */ fixed capitalisation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
The Info service provides information concerning the currently playing media. The information provided is based on the concept of a track, which has a URI and metadata in DIDL-Lite format. Some time after the track changes further information becomes available such as the bit-rate, sample-rate, bit-depth, etc. Optionally a track may contain dynamic textual information (known as metatext) that is updated as the track is played. Metatext is typically used to convey broadcast information from Internet radio stations.&lt;br /&gt;
&lt;br /&gt;
= Actions =&lt;br /&gt;
==Counters==&lt;br /&gt;
Counters are used to version Track, Details, and Metatext information in the face of dynamic changes.&lt;br /&gt;
&lt;br /&gt;
The Counters action can be used by clients that are unable to partake in UPnP eventing in order to track changes in the information provided by the Info Service.&lt;br /&gt;
&lt;br /&gt;
When a track changes, the Track Count is incremented, the URI and Metadata are set, the Details Count is set to zero, the Details are defaulted to blank and zero values, the Metatext Count is set to zero, and the Metatext is set to blank.&lt;br /&gt;
&lt;br /&gt;
Subsequent updates to the Details and Metatext are accompanied by increments in their respective Counters.&lt;br /&gt;
&lt;br /&gt;
==Track==&lt;br /&gt;
Reports current track information concerning the current media:&lt;br /&gt;
*URI&lt;br /&gt;
*Metadata&lt;br /&gt;
&lt;br /&gt;
==Details==&lt;br /&gt;
Reports details concerning the current media:&lt;br /&gt;
*Duration&lt;br /&gt;
*Bit Rate&lt;br /&gt;
*Bit Depth&lt;br /&gt;
*Sample Rate&lt;br /&gt;
*Lossless&lt;br /&gt;
*Codec Name&lt;br /&gt;
&lt;br /&gt;
==Metatext==&lt;br /&gt;
Reports dynamic textual information concerning the current media.&lt;br /&gt;
&lt;br /&gt;
This currently amounts to broadcast information from Internet radio stations, but the same mechanism could be used for other purposes in the future.&lt;br /&gt;
&lt;br /&gt;
= Technical Details =&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Domain  : av.openhome.org&lt;br /&gt;
    Name    : Info&lt;br /&gt;
    Version : 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Info Service Description (XML) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scpd xmlns=&amp;quot;urn:schemas-upnp-org:service-1-0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;specVersion&amp;gt;&lt;br /&gt;
        &amp;lt;major&amp;gt;1&amp;lt;/major&amp;gt;&lt;br /&gt;
        &amp;lt;minor&amp;gt;0&amp;lt;/minor&amp;gt;&lt;br /&gt;
    &amp;lt;/specVersion&amp;gt;&lt;br /&gt;
    &amp;lt;actionList&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Counters&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;TrackCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;TrackCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;DetailsCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;DetailsCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;MetatextCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;MetatextCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Track&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Uri&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Uri&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Metadata&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Metadata&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Details&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Duration&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Duration&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BitRate&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BitRate&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BitDepth&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BitDepth&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;SampleRate&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;SampleRate&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Lossless&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Lossless&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;CodecName&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;CodecName&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Metatext&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Metatext&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;/actionList&amp;gt;&lt;br /&gt;
    &amp;lt;serviceStateTable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;TrackCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;DetailsCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;MetatextCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Uri&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Metadata&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Duration&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;BitRate&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;BitDepth&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;SampleRate&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Lossless&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;boolean&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;CodecName&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Metatext&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
   &amp;lt;/serviceStateTable&amp;gt;&lt;br /&gt;
&amp;lt;/scpd&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Johnh</name></author>	</entry>

	<entry>
		<id>http://wiki.openhome.org/wiki/Av:Developer:InfoService</id>
		<title>Av:Developer:InfoService</title>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/wiki/Av:Developer:InfoService"/>
				<updated>2013-08-06T13:22:05Z</updated>
		
		<summary type="html">&lt;p&gt;Johnh: /* Track */ fixed capitalisation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
The Info service provides information concerning the currently playing media. The information provided is based on the concept of a track, which has a URI and metadata in DIDL-Lite format. Some time after the track changes further information becomes available such as the bit-rate, sample-rate, bit-depth, etc. Optionally a track may contain dynamic textual information (known as metatext) that is updated as the track is played. Metatext is typically used to convey broadcast information from Internet radio stations.&lt;br /&gt;
&lt;br /&gt;
= Actions =&lt;br /&gt;
==Counters==&lt;br /&gt;
Counters are used to version Track, Details, and Metatext information in the face of dynamic changes.&lt;br /&gt;
&lt;br /&gt;
The Counters action can be used by clients that are unable to partake in UPnP eventing in order to track changes in the information provided by the Info Service.&lt;br /&gt;
&lt;br /&gt;
When a track changes, the Track Count is incremented, the URI and Metadata are set, the Details Count is set to zero, the Details are defaulted to blank and zero values, the Metatext Count is set to zero, and the Metatext is set to blank.&lt;br /&gt;
&lt;br /&gt;
Subsequent updates to the Details and Metatext are accompanied by increments in their respective Counters.&lt;br /&gt;
&lt;br /&gt;
==Track==&lt;br /&gt;
Reports current track information concerning the current media:&lt;br /&gt;
*URI&lt;br /&gt;
*Metadata&lt;br /&gt;
&lt;br /&gt;
==Details==&lt;br /&gt;
Reports details concerning the current media:&lt;br /&gt;
*Duration&lt;br /&gt;
*Bit Rate&lt;br /&gt;
*Bit Depth&lt;br /&gt;
*Sample Rate&lt;br /&gt;
*Lossless&lt;br /&gt;
*Codec Name&lt;br /&gt;
&lt;br /&gt;
==Metatext==&lt;br /&gt;
Reports dynamic textual information concerning the current media.&lt;br /&gt;
&lt;br /&gt;
This currently amounts to broadcast information from internet radio stations, but the same mechanism could be used for other purposes in the future.&lt;br /&gt;
&lt;br /&gt;
= Technical Details =&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Domain  : av.openhome.org&lt;br /&gt;
    Name    : Info&lt;br /&gt;
    Version : 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Info Service Description (XML) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scpd xmlns=&amp;quot;urn:schemas-upnp-org:service-1-0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;specVersion&amp;gt;&lt;br /&gt;
        &amp;lt;major&amp;gt;1&amp;lt;/major&amp;gt;&lt;br /&gt;
        &amp;lt;minor&amp;gt;0&amp;lt;/minor&amp;gt;&lt;br /&gt;
    &amp;lt;/specVersion&amp;gt;&lt;br /&gt;
    &amp;lt;actionList&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Counters&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;TrackCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;TrackCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;DetailsCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;DetailsCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;MetatextCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;MetatextCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Track&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Uri&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Uri&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Metadata&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Metadata&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Details&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Duration&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Duration&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BitRate&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BitRate&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BitDepth&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BitDepth&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;SampleRate&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;SampleRate&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Lossless&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Lossless&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;CodecName&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;CodecName&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Metatext&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Metatext&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;/actionList&amp;gt;&lt;br /&gt;
    &amp;lt;serviceStateTable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;TrackCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;DetailsCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;MetatextCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Uri&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Metadata&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Duration&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;BitRate&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;BitDepth&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;SampleRate&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Lossless&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;boolean&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;CodecName&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Metatext&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
   &amp;lt;/serviceStateTable&amp;gt;&lt;br /&gt;
&amp;lt;/scpd&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Johnh</name></author>	</entry>

	<entry>
		<id>http://wiki.openhome.org/wiki/Av:Developer:InfoService</id>
		<title>Av:Developer:InfoService</title>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/wiki/Av:Developer:InfoService"/>
				<updated>2013-08-06T13:20:40Z</updated>
		
		<summary type="html">&lt;p&gt;Johnh: /* Counters */ minor reordering and rewording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
The Info service provides information concerning the currently playing media. The information provided is based on the concept of a track, which has a URI and metadata in DIDL-Lite format. Some time after the track changes further information becomes available such as the bit-rate, sample-rate, bit-depth, etc. Optionally a track may contain dynamic textual information (known as metatext) that is updated as the track is played. Metatext is typically used to convey broadcast information from Internet radio stations.&lt;br /&gt;
&lt;br /&gt;
= Actions =&lt;br /&gt;
==Counters==&lt;br /&gt;
Counters are used to version Track, Details, and Metatext information in the face of dynamic changes.&lt;br /&gt;
&lt;br /&gt;
The Counters action can be used by clients that are unable to partake in UPnP eventing in order to track changes in the information provided by the Info Service.&lt;br /&gt;
&lt;br /&gt;
When a track changes, the Track Count is incremented, the URI and Metadata are set, the Details Count is set to zero, the Details are defaulted to blank and zero values, the Metatext Count is set to zero, and the Metatext is set to blank.&lt;br /&gt;
&lt;br /&gt;
Subsequent updates to the Details and Metatext are accompanied by increments in their respective Counters.&lt;br /&gt;
&lt;br /&gt;
==Track==&lt;br /&gt;
Reports current track information concerning the current media:&lt;br /&gt;
*Uri&lt;br /&gt;
*Metadata&lt;br /&gt;
&lt;br /&gt;
==Details==&lt;br /&gt;
Reports details concerning the current media:&lt;br /&gt;
*Duration&lt;br /&gt;
*Bit Rate&lt;br /&gt;
*Bit Depth&lt;br /&gt;
*Sample Rate&lt;br /&gt;
*Lossless&lt;br /&gt;
*Codec Name&lt;br /&gt;
&lt;br /&gt;
==Metatext==&lt;br /&gt;
Reports dynamic textual information concerning the current media.&lt;br /&gt;
&lt;br /&gt;
This currently amounts to broadcast information from internet radio stations, but the same mechanism could be used for other purposes in the future.&lt;br /&gt;
&lt;br /&gt;
= Technical Details =&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Domain  : av.openhome.org&lt;br /&gt;
    Name    : Info&lt;br /&gt;
    Version : 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Info Service Description (XML) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scpd xmlns=&amp;quot;urn:schemas-upnp-org:service-1-0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;specVersion&amp;gt;&lt;br /&gt;
        &amp;lt;major&amp;gt;1&amp;lt;/major&amp;gt;&lt;br /&gt;
        &amp;lt;minor&amp;gt;0&amp;lt;/minor&amp;gt;&lt;br /&gt;
    &amp;lt;/specVersion&amp;gt;&lt;br /&gt;
    &amp;lt;actionList&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Counters&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;TrackCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;TrackCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;DetailsCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;DetailsCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;MetatextCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;MetatextCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Track&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Uri&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Uri&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Metadata&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Metadata&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Details&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Duration&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Duration&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BitRate&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BitRate&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BitDepth&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BitDepth&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;SampleRate&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;SampleRate&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Lossless&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Lossless&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;CodecName&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;CodecName&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Metatext&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Metatext&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;/actionList&amp;gt;&lt;br /&gt;
    &amp;lt;serviceStateTable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;TrackCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;DetailsCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;MetatextCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Uri&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Metadata&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Duration&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;BitRate&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;BitDepth&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;SampleRate&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Lossless&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;boolean&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;CodecName&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Metatext&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
   &amp;lt;/serviceStateTable&amp;gt;&lt;br /&gt;
&amp;lt;/scpd&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Johnh</name></author>	</entry>

	<entry>
		<id>http://wiki.openhome.org/wiki/Av:Developer:InfoService</id>
		<title>Av:Developer:InfoService</title>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/wiki/Av:Developer:InfoService"/>
				<updated>2013-08-06T13:13:56Z</updated>
		
		<summary type="html">&lt;p&gt;Johnh: /* Overview */ minor edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
The Info service provides information concerning the currently playing media. The information provided is based on the concept of a track, which has a URI and metadata in DIDL-Lite format. Some time after the track changes further information becomes available such as the bit-rate, sample-rate, bit-depth, etc. Optionally a track may contain dynamic textual information (known as metatext) that is updated as the track is played. Metatext is typically used to convey broadcast information from Internet radio stations.&lt;br /&gt;
&lt;br /&gt;
= Actions =&lt;br /&gt;
==Counters==&lt;br /&gt;
Counters are used to manage the changing of the Track, Details, and Metatext information.&lt;br /&gt;
&lt;br /&gt;
When a track changes, the Track Count is incremented, the Uri and Metadata are set, the Details Count is set to zero, the Details are defaulted to blank and zero values, the Metatext Count is set to zero, and the Metatext is set to blank.&lt;br /&gt;
&lt;br /&gt;
Subsequent updates to the Details and Metatext are accompanied by increments in their respective Counters.&lt;br /&gt;
&lt;br /&gt;
The Counters action can be used by clients that are unable to partake in UPnP eventing in order to establish changes in the information provided by the Info Service.&lt;br /&gt;
&lt;br /&gt;
==Track==&lt;br /&gt;
Reports current track information concerning the current media:&lt;br /&gt;
*Uri&lt;br /&gt;
*Metadata&lt;br /&gt;
&lt;br /&gt;
==Details==&lt;br /&gt;
Reports details concerning the current media:&lt;br /&gt;
*Duration&lt;br /&gt;
*Bit Rate&lt;br /&gt;
*Bit Depth&lt;br /&gt;
*Sample Rate&lt;br /&gt;
*Lossless&lt;br /&gt;
*Codec Name&lt;br /&gt;
&lt;br /&gt;
==Metatext==&lt;br /&gt;
Reports dynamic textual information concerning the current media.&lt;br /&gt;
&lt;br /&gt;
This currently amounts to broadcast information from internet radio stations, but the same mechanism could be used for other purposes in the future.&lt;br /&gt;
&lt;br /&gt;
= Technical Details =&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Domain  : av.openhome.org&lt;br /&gt;
    Name    : Info&lt;br /&gt;
    Version : 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Info Service Description (XML) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scpd xmlns=&amp;quot;urn:schemas-upnp-org:service-1-0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;specVersion&amp;gt;&lt;br /&gt;
        &amp;lt;major&amp;gt;1&amp;lt;/major&amp;gt;&lt;br /&gt;
        &amp;lt;minor&amp;gt;0&amp;lt;/minor&amp;gt;&lt;br /&gt;
    &amp;lt;/specVersion&amp;gt;&lt;br /&gt;
    &amp;lt;actionList&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Counters&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;TrackCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;TrackCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;DetailsCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;DetailsCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;MetatextCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;MetatextCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Track&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Uri&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Uri&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Metadata&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Metadata&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Details&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Duration&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Duration&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BitRate&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BitRate&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;BitDepth&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;BitDepth&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;SampleRate&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;SampleRate&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Lossless&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Lossless&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;CodecName&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;CodecName&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Metatext&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Value&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Metatext&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;/actionList&amp;gt;&lt;br /&gt;
    &amp;lt;serviceStateTable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;TrackCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;DetailsCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;MetatextCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Uri&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Metadata&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Duration&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;BitRate&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;BitDepth&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;SampleRate&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Lossless&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;boolean&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;CodecName&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;Metatext&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;dataType&amp;gt;string&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
   &amp;lt;/serviceStateTable&amp;gt;&lt;br /&gt;
&amp;lt;/scpd&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Johnh</name></author>	</entry>

	<entry>
		<id>http://wiki.openhome.org/wiki/Av:Developer:TimeService</id>
		<title>Av:Developer:TimeService</title>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/wiki/Av:Developer:TimeService"/>
				<updated>2013-07-19T12:41:02Z</updated>
		
		<summary type="html">&lt;p&gt;Johnh: added section on State Variables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Architectural Overview =&lt;br /&gt;
The Time service reports the duration of the currently playing track and the number of seconds played so far.  It also maintains a count of the total number of tracks played.&lt;br /&gt;
&lt;br /&gt;
This service is intentionally separated from the Info service. When a track is being played, this service delivers an event every second, which can overwhelm some primitive control points. The Time service is kept separate from the Info service so that control points can decide to subscribe to it independently.&lt;br /&gt;
&lt;br /&gt;
= State Variables =&lt;br /&gt;
== Track Count ==&lt;br /&gt;
The number of tracks that have been played, including any currently playing one.  (read-only)&lt;br /&gt;
&lt;br /&gt;
== Duration ==&lt;br /&gt;
The total length of the current track in seconds.  Zero for live streams.  (read-only)&lt;br /&gt;
&lt;br /&gt;
== Seconds ==&lt;br /&gt;
The total length of time in seconds for which the current track has been playing.  (read-only)&lt;br /&gt;
&lt;br /&gt;
= Actions =&lt;br /&gt;
==Time==&lt;br /&gt;
This reports TrackCount, which increments each time a new track is played; Duration, which is the duration of the current track in seconds; and Seconds, which is the number of seconds so far played.&lt;br /&gt;
&lt;br /&gt;
TrackCount corresponds with TrackCount reported in the Info Service, but bears no relation to a Track Id or Preset Id reported from the [[Developer:Davaar:PlaylistService|Playlist Service]] or [[Developer:Davaar:RadioService|Radio Service]].&lt;br /&gt;
&lt;br /&gt;
= Technical Details =&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Domain  : av.openhome.org&lt;br /&gt;
    Name    : Time&lt;br /&gt;
    Version : 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Time Service Description (XML) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scpd xmlns=&amp;quot;urn:schemas-upnp-org:service-1-0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;specVersion&amp;gt;&lt;br /&gt;
        &amp;lt;major&amp;gt;1&amp;lt;/major&amp;gt;&lt;br /&gt;
        &amp;lt;minor&amp;gt;0&amp;lt;/minor&amp;gt;&lt;br /&gt;
    &amp;lt;/specVersion&amp;gt;&lt;br /&gt;
    &amp;lt;actionList&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Time&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;TrackCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;TrackCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Duration&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Duration&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Seconds&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Seconds&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;/actionList&amp;gt;&lt;br /&gt;
    &amp;lt;serviceStateTable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;TrackCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Duration&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Seconds&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
    &amp;lt;/serviceStateTable&amp;gt;&lt;br /&gt;
&amp;lt;/scpd&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Johnh</name></author>	</entry>

	<entry>
		<id>http://wiki.openhome.org/wiki/Av:Developer:TimeService</id>
		<title>Av:Developer:TimeService</title>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/wiki/Av:Developer:TimeService"/>
				<updated>2013-07-19T12:34:48Z</updated>
		
		<summary type="html">&lt;p&gt;Johnh: /* Architectural Overview */  added mention of TrackCount&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Architectural Overview =&lt;br /&gt;
The Time service reports the duration of the currently playing track and the number of seconds played so far.  It also maintains a count of the total number of tracks played.&lt;br /&gt;
&lt;br /&gt;
This service is intentionally separated from the Info service. When a track is being played, this service delivers an event every second, which can overwhelm some primitive control points. The Time service is kept separate from the Info service so that control points can decide to subscribe to it independently.&lt;br /&gt;
&lt;br /&gt;
= Actions =&lt;br /&gt;
==Time==&lt;br /&gt;
This reports TrackCount, which increments each time a new track is played; Duration, which is the duration of the current track in seconds; and Seconds, which is the number of seconds so far played.&lt;br /&gt;
&lt;br /&gt;
TrackCount corresponds with TrackCount reported in the Info Service, but bears no relation to a Track Id or Preset Id reported from the [[Developer:Davaar:PlaylistService|Playlist Service]] or [[Developer:Davaar:RadioService|Radio Service]].&lt;br /&gt;
&lt;br /&gt;
= Technical Details =&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    Domain  : av.openhome.org&lt;br /&gt;
    Name    : Time&lt;br /&gt;
    Version : 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Time Service Description (XML) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scpd xmlns=&amp;quot;urn:schemas-upnp-org:service-1-0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;specVersion&amp;gt;&lt;br /&gt;
        &amp;lt;major&amp;gt;1&amp;lt;/major&amp;gt;&lt;br /&gt;
        &amp;lt;minor&amp;gt;0&amp;lt;/minor&amp;gt;&lt;br /&gt;
    &amp;lt;/specVersion&amp;gt;&lt;br /&gt;
    &amp;lt;actionList&amp;gt;&lt;br /&gt;
        &amp;lt;action&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Time&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;argumentList&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;TrackCount&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;TrackCount&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Duration&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Duration&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
                &amp;lt;argument&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Seconds&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;direction&amp;gt;out&amp;lt;/direction&amp;gt;&lt;br /&gt;
                    &amp;lt;relatedStateVariable&amp;gt;Seconds&amp;lt;/relatedStateVariable&amp;gt;&lt;br /&gt;
                &amp;lt;/argument&amp;gt;&lt;br /&gt;
            &amp;lt;/argumentList&amp;gt;&lt;br /&gt;
        &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;/actionList&amp;gt;&lt;br /&gt;
    &amp;lt;serviceStateTable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;TrackCount&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Duration&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
        &amp;lt;stateVariable sendEvents=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Seconds&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;dataType&amp;gt;ui4&amp;lt;/dataType&amp;gt;&lt;br /&gt;
        &amp;lt;/stateVariable&amp;gt;&lt;br /&gt;
    &amp;lt;/serviceStateTable&amp;gt;&lt;br /&gt;
&amp;lt;/scpd&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Johnh</name></author>	</entry>

	</feed>