6.1 Office Communications Server 2007 Schema

This section follows the product behavior described in footnote <314>.

<?xml version="1.0" encoding="UTF-8" ?> 
<xs:schema xmlns:tns="ms-rtcp-metrics" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="ms-rtcp-metrics" elementFormDefault="qualified" attributeFormDefault="unqualified">
<!-- 
   
     RTCP METRICS STATEMENT
 
  --> 
  <xs:element name="VQReportEvent" type="tns:VQReportEventType" /> 
<!-- 
     RTCP REPORT TYPE
 
  --> 
<xs:complexType name="VQReportEventType">
<xs:choice>
  <xs:element name="VQSessionReport" type="tns:SessionReportType" maxOccurs="unbounded" /> 
  <xs:element name="VQSessionIntervalReport" type="tns:SessionReportType" maxOccurs="unbounded" /> 
  <xs:any namespace="##other" processContents="lax" maxOccurs="unbounded" /> 
  </xs:choice>
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
     VQ SESSION REPORT TYPE
 
  --> 
<xs:complexType name="SessionReportType">
<xs:sequence>
  <xs:element name="LocationProfile" type="xs:string" minOccurs="0" /> 
  <xs:element name="Pool" type="xs:string" minOccurs="0" /> 
  <xs:element name="Endpoint" type="tns:EndpointType" /> 
  <xs:element name="DialogInfo" type="tns:DialogInfoType" /> 
  <xs:element name="MediaLine" type="tns:MediaLineType" maxOccurs="unbounded" /> 
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  <xs:attribute name="SessionId" type="xs:string" use="required" /> 
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
<!-- 
   SessionId = DialogID  
  --> 
  </xs:complexType>
<!-- 
     DIALOG INFO TYPE
 
  --> 
<xs:complexType name="DialogInfoType">
<xs:sequence>
  <xs:element name="FromURI" type="xs:anyURI" /> 
  <xs:element name="ToURI" type="xs:anyURI" /> 
  <xs:element name="Caller" type="xs:boolean" /> 
  <xs:element name="LocalContactURI" type="xs:anyURI" /> 
  <xs:element name="RemoteContactURI" type="xs:anyURI" /> 
  <xs:element name="LocalUserAgent" type="xs:string" /> 
  <xs:element name="RemoteUserAgent" type="xs:string" /> 
<!-- 
   PAI = P-Asserted-Identity  
  --> 
  <xs:element name="LocalPAI" type="xs:anyURI" minOccurs="0" /> 
  <xs:element name="RemotePAI" type="xs:anyURI" minOccurs="0" /> 
  <xs:element name="ConfURI" type="xs:anyURI" minOccurs="0" /> 
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  <xs:attribute name="CallId" type="xs:string" use="required" /> 
  <xs:attribute name="FromTag" type="xs:string" /> 
  <xs:attribute name="ToTag" type="xs:string" /> 
  <xs:attribute name="Start" type="xs:dateTime" use="required" /> 
  <xs:attribute name="End" type="xs:dateTime" use="required" /> 
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
     ENDPOINT TYPE
 
  --> 
<xs:complexType name="EndpointType">
<xs:sequence>
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  <xs:attribute name="Name" type="xs:string" use="required" /> 
  <xs:attribute name="ProfileId" type="xs:string" /> 
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
<!-- 
 Name = Computer Name
  --> 
<!-- 
 ProfileId = Endpoint Report GUID  - Note: this attribute is optional
  --> 
  </xs:complexType>
<!-- 
     MEDIA LINE REPORT TYPE
 
  --> 
<xs:complexType name="MediaLineType">
<xs:sequence>
  <xs:element name="Description" type="tns:MediaLineDescriptionType" /> 
  <xs:element name="InboundStream" type="tns:StreamType" minOccurs="0" /> 
  <xs:element name="OutboundStream" type="tns:StreamType" minOccurs="0" /> 
  <xs:element name="LocalConversationalMOS" type="xs:float" minOccurs="0" /> 
  <xs:element name="RemoteConversationalMOS" type="xs:float" minOccurs="0" /> 
  <xs:element name="LocalConversationalMOSAlg" type="xs:string" minOccurs="0" /> 
  <xs:element name="RemoteConversationalMOSAlg" type="xs:string" minOccurs="0" /> 
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
    <!-- Label values : "main-audio", "main-video","panoramic-video", "data", -->
    <!-- Additional Label values in v3 : "main-video1", "main-video2", "main-video3","main-video4","main-video5", "main-video6",-->
  <xs:attribute name="Label" type="xs:string" use="required" /> 
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
     MEDIA LINE TYPE
 
  -->
<xs:complexType name="MediaLineDescriptionType">
<xs:sequence>
  <xs:element name="Connectivity" type="tns:ConnectivityType" minOccurs="0" /> 
<!-- 
 Security values : "None", "SRTP","V1"  
  --> 
  <xs:element name="Security" type="xs:string" minOccurs="0" /> 
  <xs:element name="Offerer" type="xs:boolean" minOccurs="0" /> 
  <xs:element name="Transport" type="tns:TransportType" minOccurs="0" /> 
  <xs:element name="LocalAddr" type="tns:AddrType" /> 
  <xs:element name="RemoteAddr" type="tns:AddrType" /> 
<!-- 
 Microphone or USB Phone or Camera device name   
  --> 
  <xs:element name="CaptureDev" type="tns:DeviceType" minOccurs="0" /> 
<!-- 
 Speakers or USB Phone device name    
  --> 
  <xs:element name="RenderDev" type="tns:DeviceType" minOccurs="0" /> 
  <xs:element name="ReflexiveLocalIPAddress" type="tns:AddrType"/>
  <xs:element name="MidCallReport" type="xs:boolean" default="false" />
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
     Device TYPE
 
  --> 
<xs:complexType name="DeviceType">
<xs:sequence>
  <xs:element name="Name" type="xs:string" minOccurs="0" /> 
  <xs:element name="Driver" type="xs:string" minOccurs="0" /> 
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
     STREAM DIRECTIONAL METRICS TYPE
 
  --> 
<xs:complexType name="StreamType">
<xs:sequence>
  <xs:element name="Network" type="tns:NetworkMetricsType" minOccurs="0" /> 
  <xs:element name="Payload" type="tns:PayloadMetricsType" /> 
  <xs:element name="QualityEstimates" type="tns:QualityEstimatesType" minOccurs="0" /> 
    <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
  </xs:sequence>
  <xs:attribute name="Id" type="xs:unsignedInt" use="required" /> 
  <xs:attribute name="Start" type="xs:dateTime" /> 
  <xs:attribute name="End" type="xs:dateTime" /> 
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
<!-- 
   Id = SSRC 
  --> 
  </xs:complexType>
<!-- 
     NETWORK METRICS
 
  --> 
<xs:complexType name="NetworkMetricsType">
<xs:sequence>
<!-- 
 DiffServ CodePoint  
  --> 
  <xs:element name="DSCP" type="xs:byte" minOccurs="0" /> 
<!-- 
 VLAN is described via 12 bits 
  --> 
  <xs:element name="VLAN" type="xs:int" minOccurs="0" /> 
  <xs:element name="Jitter" type="tns:JitterType" minOccurs="0" /> 
  <xs:element name="PacketLoss" type="tns:PacketLossType" minOccurs="0" /> 
  <xs:element name="BurstGapLoss" type="tns:BurstGapLossType" minOccurs="0" /> 
  <xs:element name="Delay" type="tns:DelayType" minOccurs="0" /> 
  <xs:element name="Utilization" type="tns:NetworkUtilizationType" minOccurs="0" /> 
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
      ICE  TYPE
    
  --> 
<xs:complexType name="ConnectivityType">
<xs:sequence>
  <xs:element name="Ice" type="tns:IceStatusType" minOccurs="0" /> 
  <xs:element name="IceWarningFlags" type="xs:unsignedInt" minOccurs="0" /> 
  <xs:element name="RelayAddress" type="tns:AddrType" minOccurs="0" maxOccurs="unbounded" /> 
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
     ICE CONECTIVITY TYPE
 
  -->
<xs:simpleType name="IceStatusType">
<xs:restriction base="xs:string">
  <xs:enumeration value="FAILED" /> 
  <xs:enumeration value="DIRECT" /> 
  <xs:enumeration value="RELAY" /> 
  <xs:enumeration value="HTTP-PROXY" /> 
  </xs:restriction>
  </xs:simpleType>
<!-- 
     NETWORK UTILIZATION TYPE
 
  --> 
<xs:complexType name="NetworkUtilizationType">
<xs:sequence>
  <xs:element name="Packets" type="xs:int" minOccurs="0" /> 
  <xs:element name="BandwidthEst" type="xs:int" minOccurs="0" /> 
  <xs:element name="BandwidthAlloc" type="xs:int" minOccurs="0" /> 
  <xs:element name="BandwidthEstMin" type="xs:int" minOccurs="0"/>
  <xs:element name="BandwidthEstMax" type="xs:int" minOccurs="0"/>
  <xs:element name="BandwidthEstStdDev" type="xs:int" minOccurs="0"/>
  <xs:element name="BandwidthEstAvge" type="xs:int" minOccurs="0"/>
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
     PAYLOAD METRICS TYPE
 
  --> 
<xs:complexType name="PayloadMetricsType">
<xs:choice>
  <xs:element name="Audio" type="tns:AudioPayloadMetricsType" /> 
  <xs:element name="Video" type="tns:VideoPayloadMetricsType" /> 
  <xs:any namespace="##other" processContents="lax" maxOccurs="unbounded" /> 
  </xs:choice>
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
     AUDIO METRICS TYPE
 
  --> 
<xs:complexType name="AudioPayloadMetricsType">
<xs:sequence>
  <xs:element name="PayloadType" type="xs:int" minOccurs="0" /> 
  <xs:element name="PayloadDescription" type="xs:string" minOccurs="0" /> 
  <xs:element name="SampleRate" type="xs:int" minOccurs="0" /> 
  <xs:element name="FrameDuration" type="xs:int" minOccurs="0" /> 
  <xs:element name="FrameOctets" type="xs:int" minOccurs="0" /> 
  <xs:element name="FramesPerPacket" type="xs:int" minOccurs="0" /> 
  <xs:element name="PacketsPerSecond" type="xs:int" minOccurs="0" /> 
  <xs:element name="FMTP" type="xs:string" minOccurs="0" /> 
  <xs:element name="Signal" type="tns:SignalType" minOccurs="0" /> 
  <xs:element name="JitterBuffer" type="tns:JitterBufferType" minOccurs="0" /> 
  <xs:element name="SilenceSupress" type="tns:ratioConcealSuppressionStateType" minOccurs="0" /> 
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  </xs:complexType>
<!-- 
     VIDEO METRICS TYPE
 
  --> 
<xs:complexType name="VideoPayloadMetricsType">
<xs:sequence>
  <xs:element name="PayloadType" type="xs:int" minOccurs="0" /> 
  <xs:element name="PayloadDescription" type="xs:string" minOccurs="0" /> 
  <xs:element name="Resolution" type="xs:string" minOccurs="0" /> 
  <xs:element name="VideoBitRateAvg" type="xs:int" minOccurs="0" /> 
  <xs:element name="VideoBitRateMax" type="xs:int" minOccurs="0" /> 
  <xs:element name="VideoFrameRateAvg" type="xs:float" minOccurs="0" /> 
  <xs:element name="VideoPacketLossRate" type="xs:float" minOccurs="0" /> 
  <xs:element name="VideoFrameLossRate" type="xs:float" minOccurs="0" /> 
  <xs:element name="VideoFrameEncodingTime" type="xs:float" minOccurs="0" /> 
  <xs:element name="VideoFrameDecodingTime" type="xs:float" minOccurs="0" /> 
  <xs:element name="VideoFEC" type="xs:boolean" minOccurs="0" /> 
  <xs:element name="FrozenVideoFreq" type="xs:float" minOccurs="0" /> 
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  </xs:complexType>
<!-- 
     PACKET LOSS CONCEALMENT TYPE
 
  --> 
<xs:simpleType name="PacketLossConcealmentType">
<xs:restriction base="xs:string">
  <xs:enumeration value="UNSPECIFIED" /> 
  <xs:enumeration value="DISABLED" /> 
  <xs:enumeration value="ENHANCED" /> 
  <xs:enumeration value="STANDARD" /> 
  </xs:restriction>
  </xs:simpleType>
<!-- 
     SILENCE SUPPRESSION STATE TYPE
 
  --> 
<xs:simpleType name="SilenceSuppressionStateType">
<xs:restriction base="xs:string">
  <xs:enumeration value="ON" /> 
  <xs:enumeration value="OFF" /> 
  </xs:restriction>
  </xs:simpleType>
<!-- 
     ADDR TYPE
 
  --> 
<xs:complexType name="AddrType">
<xs:sequence>
  <xs:element name="IPAddr" type="xs:string" /> 
  <xs:element name="Port" type="xs:unsignedShort" minOccurs="0" /> 
  <xs:element name="Inside" type="xs:boolean" minOccurs="0" /> 
  <xs:element name="SubnetMask" type="xs:string" minOccurs="0" /> 
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
     JITTER BUFFER TYPE
 
  --> 
<xs:complexType name="JitterBufferType">
<xs:sequence>
  <xs:element name="Type" type="tns:JitterBufferAdaptiveType" minOccurs="0" /> 
  <xs:element name="Rate" type="xs:int" minOccurs="0" /> 
  <xs:element name="Nominal" type="xs:int" minOccurs="0" /> 
  <xs:element name="Max" type="xs:int" minOccurs="0" /> 
  <xs:element name="AbsMax" type="xs:int" minOccurs="0" /> 
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
      JITTER BUFFER ADAPTIVE TYPE
 
  --> 
<xs:simpleType name="JitterBufferAdaptiveType">
<xs:restriction base="xs:string">
  <xs:enumeration value="UNKNOWN" /> 
  <xs:enumeration value="RESERVED" /> 
  <xs:enumeration value="NON-ADAPTIVE" /> 
  <xs:enumeration value="ADAPTIVE" /> 
  </xs:restriction>
  </xs:simpleType>
<!-- 
     PACKET LOSS TYPE
 
  --> 
<xs:complexType name="PacketLossType">
<xs:sequence>
  <xs:element name="LossRate" type="xs:float" minOccurs="0" /> 
  <xs:element name="LossRateMax" type="xs:float" minOccurs="0" /> 
  <xs:element name="DiscardRate" type="xs:float" minOccurs="0" /> 
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
     BURST GAP LOSS TYPE
 
  --> 
<xs:complexType name="BurstGapLossType">
<xs:sequence>
  <xs:element name="BurstDensity" type="xs:float" minOccurs="0" /> 
  <xs:element name="BurstDuration" type="xs:int" minOccurs="0" /> 
  <xs:element name="GapDensity" type="xs:float" minOccurs="0" /> 
  <xs:element name="GapDuration" type="xs:int" minOccurs="0" /> 
  <xs:element name="MinGapThreshold" type="xs:int" minOccurs="0" /> 
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
     DELAY TYPE
 
  --> 
<xs:complexType name="DelayType">
<xs:sequence>
  <xs:element name="RoundTrip" type="xs:int" minOccurs="0" /> 
  <xs:element name="RoundTripMax" type="xs:int" minOccurs="0" /> 
  <xs:element name="EndSystem" type="xs:int" minOccurs="0" /> 
  <xs:element name="OneWay" type="xs:int" minOccurs="0" />
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
    </xs:sequence>
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
     JITTER TYPE
 
  --> 
<xs:complexType name="JitterType">
<xs:sequence>
  <xs:element name="InterArrival" type="xs:int" minOccurs="0" /> 
  <xs:element name="InterArrivalMax" type="xs:int" minOccurs="0" /> 
  <xs:element name="MeanAbs" type="xs:int" minOccurs="0" /> 
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
     SIGNAL TYPE
 
  --> 
<xs:complexType name="SignalType">
<xs:sequence>
  <xs:element name="SignalLevel" type="xs:int" minOccurs="0" /> 
  <xs:element name="NoiseLevel" type="xs:int" minOccurs="0" /> 
  <xs:element name="EchoReturn" type="xs:int" minOccurs="0" /> 
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
     QUALITY ESTIMATES TYPE
 
  -->
<xs:complexType name="QualityEstimatesType">
<xs:choice>
  <xs:element name="Audio" type="tns:AudioQualityEstimatesType" /> 
  <xs:element name="Video" type="tns:VideoQualityEstimatesType" /> 
  <xs:any namespace="##other" processContents="lax" maxOccurs="unbounded" /> 
  </xs:choice>
  </xs:complexType>
<!-- 
     AUDIO QUALITY ESTIMATES TYPE
 
 
  --> 
<xs:complexType name="AudioQualityEstimatesType">
<xs:sequence>
  <xs:element name="RecvListenMOS" type="xs:float" minOccurs="0" /> 
  <xs:element name="RecvListenMOSMin" type="xs:float" minOccurs="0" /> 
  <xs:element name="RecvListenMOSAlg" type="xs:string" minOccurs="0" /> 
  <xs:element name="SendListenMOS" type="xs:float" minOccurs="0" /> 
  <xs:element name="SendListenMOSMin" type="xs:float" minOccurs="0" /> 
  <xs:element name="SendListenMOSAlg" type="xs:string" minOccurs="0" /> 
  <xs:element name="NetworkMOS" type="tns:NetworkAudioMOSType" minOccurs="0" /> 
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
     NETWORK AUDIO MOS FACTOR TYPE
 
  --> 
<xs:complexType name="NetworkAudioMOSType">
<xs:sequence>
  <xs:element name="OverallAvg" type="xs:float" minOccurs="0" /> 
  <xs:element name="OverallMin" type="xs:float" minOccurs="0" /> 
  <xs:element name="DegradationAvg" type="xs:float" minOccurs="0" /> 
  <xs:element name="DegradationMax" type="xs:float" minOccurs="0" /> 
  <xs:element name="DegradationJitterAvg" type="xs:float" minOccurs="0" /> 
  <xs:element name="DegradationPacketLossAvg" type="xs:float" minOccurs="0" /> 
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
     VIDEO QUALITY ESTIMATES TYPE
 
  --> 
<xs:complexType name="VideoQualityEstimatesType">
<xs:sequence>
  <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xs:sequence>
  <xs:anyAttribute namespace="##other" processContents="lax" /> 
  </xs:complexType>
<!-- 
     TRANSPORT TYPE
 
  --> 
<xs:simpleType name="TransportType">
<xs:restriction base="xs:string">
  <xs:enumeration value="UDP" /> 
  <xs:enumeration value="TCP" /> 
  </xs:restriction>
  </xs:simpleType>
  </xs:schema>