6.4 Microsoft Lync Server 2013 Schema

This section follows the product behavior described in footnote<310>.The schema has been split into four related schema definition files:

  • ms-rtcp-metrics.xsd

  • ms-rtcp-metrics.medialine.xsd

  • ms-rtcp-metrics.v2.xsd

  • ms-rtcp-metrics.v3.xsd

The schema for ms-rtcp-metrics.xsd is as follows:

 <?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:tns="ms-rtcp-metrics" xmlns:v2="ms-rtcp-metrics.v2" xmlns:v3="ms-rtcp-metrics.v3" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="ms-rtcp-metrics" elementFormDefault="qualified" version="1.2" attributeFormDefault="unqualified">  
   <xs:import namespace="ms-rtcp-metrics.v2"></xs:import>
   <xs:import namespace="ms-rtcp-metrics.v3"></xs:import>
   <xs:include schemaLocation="ms-rtcp-metrics.medialine.xsd"></xs:include>
   <!--       
       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:attribute name="Version" type="xs:string" use="optional"/>
     <xs:attribute ref="v2:SchemaVersion" use="optional"/>
     <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:element ref="v2:OpaqueClientPlatformData" minOccurs="0" />
       <xs:element ref="v2:OpaqueServerPlatformData" minOccurs="0" />
       <xs:element ref="v2:OpaqueConferenceData" minOccurs="0" />
       <xs:sequence minOccurs="0">
         <xs:element ref="v2:Separator" />
         <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
       </xs:sequence>
     </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="DialogCategory" type="tns:DialogCategoryType" minOccurs="0"/>
       <xs:element name="CorrelationID" type="xs:string" minOccurs="0"/>
       <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:element ref="v2:CallPriority" minOccurs="0"/>
       <xs:element ref="v2:MediationServerBypassFlag" minOccurs="0"/>
       <xs:element ref="v2:TrunkingPeer" minOccurs="0"/>
       <xs:element ref="v2:MediaBypassWarningFlag" minOccurs="0"/>
       <xs:sequence minOccurs="0">
         <xs:element ref="v2:Separator" />
         <xs:element ref="v2:RegisteredInside" minOccurs="0"/>
         <xs:sequence minOccurs="0">
           <xs:element ref="v2:Separator" />
           <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
         </xs:sequence>
       </xs:sequence>
     </xs:sequence>
     <xs:attribute name="CallId" type="xs:string" use="required"/>
     <xs:attribute name="FromTag" type="xs:string" use="required"/>
     <xs:attribute name="ToTag" type="xs:string" use="required"/>
     <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>
  
 <!--
       DIALOG CATEGORY
   -->
   <xs:simpleType name ="DialogCategoryType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="OCS"/>
      <xs:enumeration value="TRUNK"/>
    </xs:restriction>
   </xs:simpleType>
 </xs:schema>

The schema for ms-rtcp-metrics.medialine.xsd is as follows:

  <?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:tns="ms-rtcp-metrics" xmlns:v2="ms-rtcp-metrics.v2" xmlns:v3="ms-rtcp-metrics.v3" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="ms-rtcp-metrics" elementFormDefault="qualified" version="2.0" attributeFormDefault="unqualified">
   <xs:import namespace="ms-rtcp-metrics.v2"></xs:import>
   <xs:import namespace="ms-rtcp-metrics.v3"></xs:import>
   <!--
       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:element ref="v2:AppliedBandwidthLimit" minOccurs="0" />
       <xs:element ref="v2:AppliedBandwidthSource" minOccurs="0" />
       <xs:element ref="v2:LocalClientEvent" minOccurs="0"/>
       <xs:element ref="v2:RemoteClientEvent" minOccurs="0"/>
       <xs:element ref="v2:OpaqueCoreEndpointData" minOccurs="0" />
       <xs:element ref="v2:OpaqueChannelData" minOccurs="0" />
       <xs:sequence minOccurs="0">
         <xs:element ref="v2:Separator" />
         <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
       </xs:sequence>
     </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="NetworkConnectivityInfo" type ="tns:NetworkConnectivityInfoType" 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 ref="v3:ReflexiveLocalIPAddress" minOccurs="0"/>
       <xs:element ref="v3:MidCallReport" minOccurs="0"/>
       <xs:sequence minOccurs="0">
         <xs:element ref="v3:Separator" />
         <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
       </xs:sequence>
     </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"/>
       <!-- Support reporting multiple payloads per stream-->
       <xs:element ref="v3:AdditionalPayload" minOccurs="0" maxOccurs="unbounded"/>
       <xs:sequence minOccurs="0">
         <xs:element ref="v3:Separator3"></xs:element>
         <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
       </xs:sequence>
     </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>
  
   <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:element ref="v2:RatioConcealedSamplesAvg" minOccurs="0"/>
       <xs:element ref="v2:RatioStretchedSamplesAvg" minOccurs="0"/>
       <xs:element ref="v2:RatioCompressedSamplesAvg" minOccurs="0"/>
       <xs:sequence minOccurs="0">
         <xs:element ref="v2:Separator" />
         <xs:element ref="v3:ConcealRatioMax" minOccurs="0"/>
         <xs:element ref="v3:ConcealRatioSd" minOccurs="0"/>
         <xs:element ref="v3:HealerPacketDropRatio" minOccurs="0"/>                
         <xs:element ref="v3:HealerFECPacketUsedRatio" minOccurs="0"/>
         <xs:element ref="v3:MaxCompressedSamples" minOccurs="0"/>
         <xs:element name="LossCongestionPercent" type="xs:float" minOccurs="0"/>
         <xs:element name="DelayCongestionPercent" type="xs:float" minOccurs="0"/>
         <xs:element name="ContentionDetectedPercent" type="xs:float" minOccurs="0"/>
         <xs:sequence minOccurs="0">
         <xs:element ref="v3:Separator3" />
         <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
         </xs:sequence>
       </xs:sequence>
     </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:attribute ref="v2:RtpLatched" use="optional"/>
     <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: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:element name="ApplicationSharing" type="v3:ApplicationSharingPayloadMetricsType" />
       <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="RatioHealedSamplesAvg" type="xs:float" 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:SilenceSuppressionStateType" minOccurs="0"/>
       <xs:element ref="v2:AudioFECUsed" minOccurs="0"/>
       <!--OpaqueAudioData will be removed once everyone move to OpaqueChannelData-->
       <xs:element ref="v2:OpaqueAudioData" minOccurs="0" />
       <xs:sequence minOccurs="0">
         <xs:element ref="v2:Separator" />
         <xs:element ref="v3:DecodeStereoPercent" minOccurs="0"/>
         <xs:element ref="v3:AecRenderStereoPercent" minOccurs="0"/>
         <xs:element ref="v3:AudioPostFECPLR" minOccurs="0"/>
         <xs:element ref="v3:EncodeStereoPercent" minOccurs="0"/>
         <xs:element ref="v3:AecCaptureStereoPercent" minOccurs="0"/>
         <xs:sequence minOccurs="0">
           <xs:element ref="v3:Separator3" />
           <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
           </xs:sequence>
         </xs:sequence>
     </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"/>
       <!--This is obsolete in w14-->
       <xs:element name="VideoFrameEncodingTime" type="xs:float" minOccurs="0"/>
       <!--This is obsolete in w14-->
       <xs:element name="VideoFrameDecodingTime" type="xs:float" minOccurs="0"/>
       <xs:element name="VideoFEC" type="xs:boolean" minOccurs="0"/>
       <!--This is obsolete in w14-->
       <xs:element name="FrozenVideoFreq" type="xs:float" minOccurs="0"/>
       <!--This is obsolete in w14-->
       <xs:element name="FrozenPeriodPercentAvg" type="xs:float" minOccurs="0"/>
       <!--This is obsolete in w14-->
       <xs:element name="ConsecutivePacketLossAvg" type="xs:float" minOccurs="0"/>
       <!--This is obsolete in w14-->
       <xs:element name="RateMatchLevel" type="xs:float" minOccurs="0"/>
       <xs:element ref="v2:VideoAllocateBWAvg" minOccurs="0"/>
       <xs:element ref="v2:VideoLocalFrameLossPercentageAvg" minOccurs="0"/>
       <!--OpaqueVideoData will be removed once everyone move to OpaqueChannelData-->
       <xs:element ref="v2:OpaqueVideoData" minOccurs="0" />
       <xs:sequence minOccurs="0">
         <xs:element ref="v2:Separator" />
         <!-- The following two metrics should really be labelled v3 -->
         <xs:element ref="v2:VideoResolutionDistribution" minOccurs="0" />
         <xs:element ref="v2:VideoRateMatchingLevelDistribution" minOccurs="0" />
         <xs:sequence minOccurs="0">
           <!-- New v3 Video Receive Metrics go here -->
           <xs:element ref="v2:Separator" />
           <xs:element ref="v3:SendCodecTypes" minOccurs="0"/>
           <xs:element ref="v3:SendFrameRateAverage" minOccurs="0"/>
           <xs:element ref="v3:SendBitRateMaximum" minOccurs="0"/>
           <xs:element ref="v3:SendBitRateAverage" minOccurs="0"/>
           <xs:element ref="v3:SendVideoStreamsMax" minOccurs="0"/>
           <xs:element ref="v3:SendResolutionWidth" minOccurs="0"/>
           <xs:element ref="v3:SendResolutionHeight" minOccurs="0"/>
         
           <xs:element ref="v3:RecvCodecTypes" minOccurs="0"/>
           <xs:element ref="v3:RecvResolutionWidth" minOccurs="0"/>
           <xs:element ref="v3:RecvResolutionHeight" minOccurs="0"/>
           <xs:element ref="v3:RecvFrameRateAverage" minOccurs="0"/>
           <xs:element ref="v3:RecvBitRateMaximum" minOccurs="0"/>
           <xs:element ref="v3:RecvBitRateAverage" minOccurs="0"/>
           <xs:element ref="v3:RecvVideoStreamsMax" minOccurs="0"/>
           <xs:element ref="v3:RecvVideoStreamsMin" minOccurs="0"/>
           <xs:element ref="v3:RecvVideoStreamsMode" minOccurs="0"/>
           <xs:element ref="v3:VideoPostFECPLR" minOccurs="0"/>
           <xs:element ref="v3:DynamicCapabilityPercent" minOccurs="0"/>
           <xs:element ref="v3:ResolutionMin" minOccurs="0"/>
           <xs:element ref="v3:LowBitRateCallPercent" minOccurs="0"/>
           <xs:element ref="v3:LowFrameRateCallPercent" minOccurs="0"/>
           <xs:element ref="v3:LowResolutionCallPercent" minOccurs="0"/>
  
           <!-- Added to support multiple video payloads in single stream-->
           <xs:element ref="v3:DurationSeconds" minOccurs="0"/>
           <xs:element ref="v3:IsAggregatedData" minOccurs="0"/>
           <xs:element ref="v3:UseForCallClassification" minOccurs="0"/>
  
           <xs:sequence minOccurs="0">
             <xs:element ref="v3:Separator3" />
             <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
           </xs:sequence>
         </xs:sequence>
       </xs:sequence>
     </xs:sequence>
   </xs:complexType>
   <!--
       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:element ref="v2:MACAddr" minOccurs="0"></xs:element>
       <xs:sequence minOccurs="0">
         <xs:element ref="v2:Separator"></xs:element>
         <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
       </xs:sequence>
     </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:element ref="v3:RelativeOneWay" minOccurs="0"/>
       <xs:sequence minOccurs="0">
         <xs:element ref="v3:Separator3" />
         <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
       </xs:sequence>      
     </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:element name="RxAvgGain" type="xs:int" minOccurs="0"/> -->
       <!--This is obsolete in w14-->
       <xs:element name="SpeakerFeedbackMicIn" type="xs:int" minOccurs="0"/>
       <!--This is obsolete in w14-->
       <xs:element name="SpeechLevelMicIn" type="xs:int" minOccurs="0"/>
       <!--This is obsolete in w14-->
       <xs:element name="SpeechLevelPostProcess" type="xs:int" minOccurs="0"/>
       <!--This is obsolete in w14-->
       <xs:element name="SignalLevelLoudSpeaker" type="xs:int" minOccurs="0"/>
       <!--This is obsolete in w14-->
       <xs:element name="BackGroundNoiseMicIn" type="xs:int" minOccurs="0"/>
       <!--This is obsolete in w14-->
       <xs:element name="BackGroundNoiseSent" type="xs:int" minOccurs="0"/>
       <!--This is obsolete in w14-->
       <xs:element name="LocalSpeechToEcho" type="xs:int" minOccurs="0"/>
       <xs:element name="SpeakerGlitchRate" type="xs:int" minOccurs="0"/>
       <xs:element name="MicGlitchRate" type="xs:int" minOccurs="0"/>
       <!--This is obsolete in w14-->
       <xs:element name="SpeakerClipRate" type="xs:int" minOccurs="0"/>
       <!--This is obsolete in w14-->
       <xs:element name="MicClipRate" type="xs:int" minOccurs="0"/>
       <xs:element name="RxAGCSignalLevel" type="xs:int" minOccurs="0"/>
       <xs:element name="RxAGCNoiseLevel" type="xs:int" minOccurs="0"/>
       <xs:element ref="v2:InitialSignalLevelRMS" minOccurs="0"></xs:element>
       <xs:element ref="v2:AudioTimestampDriftRateMic" minOccurs="0"></xs:element>
       <xs:element ref="v2:AudioTimestampDriftRateSpk" minOccurs="0"></xs:element>
       <xs:element ref="v2:AudioTimestampErrorMicMs" minOccurs="0"></xs:element>
       <xs:element ref="v2:AudioTimestampErrorSpkMs" minOccurs="0"></xs:element>
       <xs:element ref="v2:VsEntryCauses" minOccurs="0"></xs:element>
       <xs:element ref="v2:EchoEventCauses" minOccurs="0"></xs:element>
       <xs:element ref="v2:EchoPercentMicIn" minOccurs="0"></xs:element>
       <xs:element ref="v2:EchoPercentSend" minOccurs="0"></xs:element>
       <xs:element ref="v2:RxAvgAGCGain" minOccurs="0"></xs:element>
       <xs:sequence minOccurs="0">
         <xs:element ref="v2:Separator"/>
          <xs:element ref="v3:RecvSignalLevelCh1" minOccurs="0"/>
          <xs:element ref="v3:RecvSignalLevelCh2" minOccurs="0"/>
          <xs:element ref="v3:RecvNoiseLevelCh1" minOccurs="0"/>
          <xs:element ref="v3:RecvNoiseLevelCh2" minOccurs="0"/>
          <xs:element ref="v3:SendSignalLevelCh1" minOccurs="0"/>
          <xs:element ref="v3:SendSignalLevelCh2" minOccurs="0"/>
          <xs:element ref="v3:SendNoiseLevelCh1" minOccurs="0"/>
          <xs:element ref="v3:SendNoiseLevelCh2" minOccurs="0"/>        
         <xs:sequence minOccurs="0">
           <xs:element ref="v3:Separator3"/>
             <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
           </xs:sequence>
       </xs:sequence>
     </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:element ref="v2:NetworkMOSAlg" minOccurs="0"/>
       <xs:sequence minOccurs="0">
         <xs:element ref="v2:Separator" />
         <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
       </xs:sequence>
     </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>
  
   <!--
   NETWORK CONNECTIVITY TYPE
   -->
   <xs:complexType name="NetworkConnectivityInfoType">
     <xs:sequence>
       <xs:element name="NetworkConnection" type="tns:NetworkConnectionType" minOccurs="0"/>
       <xs:element name="VPN" type="xs:boolean" minOccurs="0"/>
       <xs:element name="LinkSpeed" type="xs:float" minOccurs="0"/>
       <xs:element ref="v2:BSSID" minOccurs="0"></xs:element>
       <xs:sequence minOccurs="0">
         <xs:element ref="v2:Separator"></xs:element>
         <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
       </xs:sequence>
     </xs:sequence>
     <xs:anyAttribute namespace="##other" processContents="lax"/>
   </xs:complexType>
  
   <!--
       ETHERNET CONNECTION TYPE
     -->
   <xs:simpleType name="NetworkConnectionType">
     <xs:restriction base="xs:string">
       <xs:enumeration value="wired"/>
       <xs:enumeration value="wifi"/>
     </xs:restriction>
   </xs:simpleType>
  
   <!--
       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" use="optional"/>
     <xs:attribute ref="v2:OS" use="optional"/>
     <xs:attribute ref="v2:CPUName" use="optional"/>
     <xs:attribute ref="v2:CPUNumberOfCores" use="optional"/>
     <xs:attribute ref="v2:CPUProcessorSpeed" use="optional"/>
     <xs:attribute ref="v2:VirtualizationFlag" use="optional"/>
     <xs:anyAttribute namespace="##other" processContents="lax"/>
     <!-- Name = Computer Name-->
     <!-- ProfileId = Endpoint Report GUID  - Note: this attribute is optional-->
   </xs:complexType>
 </xs:schema>

The schema for ms-rtcp-metrics.v2.xsd is as follows:

 <?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:v2="ms-rtcp-metrics.v2" xmlns:v3="ms-rtcp-metrics.v3" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="ms-rtcp-metrics.v2" elementFormDefault="qualified" version="1.2" attributeFormDefault="unqualified">
 <xs:import namespace="ms-rtcp-metrics.v3"></xs:import>
  
   <!--Schema version-->  
   <xs:attribute name="SchemaVersion" type="xs:string"/>
  
   <!--The following are part of dialog info-->
   
   <xs:element name="CallPriority" type="xs:short"/>
   <xs:element name="RegisteredInside" type="xs:boolean"/>
   <xs:element name="MediationServerBypassFlag" type="xs:boolean"/>
   <xs:element name="TrunkingPeer" type="xs:string"/>
   <xs:element name="BSSID" type="xs:string"/>
   <xs:element name="MediaBypassWarningFlag" type="xs:int"/>
  
  
   <!--The following are ICE metrics-->
   <xs:attribute name="RtpLatched" type="xs:boolean"/>
   
   
   <!--The following are media metrics-->
   
   <xs:element name="AppliedBandwidthLimit" type="xs:int"/>
   <xs:element name="AppliedBandwidthSource" type="xs:string"/>
   <xs:element name="InitialSignalLevelRMS" type="xs:float"/>
   <xs:element name="AudioFECUsed" type="xs:boolean"/>
   <xs:element name="VideoAllocateBWAvg" type="xs:int"/>
   <xs:element name="VideoLocalFrameLossPercentageAvg" type="xs:float"/>
  
   <!--The following are AEC metrics-->
   <xs:element name="AudioTimestampDriftRateMic" type="xs:float"/>
   <xs:element name="AudioTimestampDriftRateSpk" type="xs:float"/>
   <xs:element name="AudioTimestampErrorMicMs" type="xs:float"/>
   <xs:element name="AudioTimestampErrorSpkMs" type="xs:float"/>
   <xs:element name="VsEntryCauses" type="xs:unsignedByte"/>
   <xs:element name="EchoEventCauses" type="xs:unsignedByte"/>
   <xs:element name="EchoPercentMicIn" type="xs:float"/>
   <xs:element name="EchoPercentSend" type="xs:float"/>
   <xs:element name="RxAvgAGCGain" type="xs:int"/>
  
   <!--The following are healer metrics-->
   <xs:element name="RatioConcealedSamplesAvg" type="xs:float"/>
   <xs:element name="RatioStretchedSamplesAvg" type="xs:float"/>
   <xs:element name="RatioCompressedSamplesAvg" type="xs:float"/>
  
   <!--The following are Network MOS related-->
   <xs:element name="NetworkMOSAlg" type="xs:string"/>
   
   
   
   <!--The following are endpoint information-->
  
   <xs:attribute name="OS" type="xs:string"/>
   <!--
   Bit flag indicate if the system is running in a virtualized environment:
     0x00: None
     0x01: HyperV
     0x02: VMWare
     0x04: Virtual PC
     0x08: Xen PC
   -->
   <xs:attribute name="VirtualizationFlag" type="xs:byte"/>
   <xs:attribute name="CPUNumberOfCores" type="xs:short"/>
   <xs:attribute name="CPUProcessorSpeed" type="xs:int"/>
   <xs:attribute name="CPUName" type="xs:string"/>
   <xs:element name="MACAddr" type="xs:string"/>
  
  
   <!--The following are client event count-->
   <xs:element name="LocalClientEvent" type="v2:ClientEventType"/>
   <xs:element name="RemoteClientEvent" type="v2:ClientEventType"/>
   <xs:complexType name="ClientEventType">
     <xs:sequence>
       <xs:element name="NetworkSendQualityEventRatio" type="xs:float" minOccurs="0"/>
       <xs:element name="NetworkReceiveQualityEventRatio" type="xs:float" minOccurs="0"/>
       <xs:element name="NetworkDelayEventRatio" type="xs:float" minOccurs="0"/>
       <xs:element name="NetworkBandwidthLowEventRatio" type="xs:float" minOccurs="0"/>
       <xs:element name="CPUInsufficientEventRatio" type="xs:float" minOccurs="0"/>
       <xs:element name="DeviceHalfDuplexAECEventRatio" type="xs:float" minOccurs="0"/>
       <xs:element name="DeviceRenderNotFunctioningEventRatio" type="xs:float" minOccurs="0"/>
       <xs:element name="DeviceCaptureNotFunctioningEventRatio" type="xs:float" minOccurs="0"/>
       <xs:element name="DeviceGlitchesEventRatio" type="xs:float" minOccurs="0"/>
       <xs:element name="DeviceLowSNREventRatio" type="xs:float" minOccurs="0"/>
       <xs:element name="DeviceLowSpeechLevelEventRatio" type="xs:float" minOccurs="0"/>
       <xs:element name="DeviceClippingEventRatio" type="xs:float" minOccurs="0"/>
       <xs:element name="DeviceEchoEventRatio" type="xs:float" minOccurs="0"/>
       <xs:element name="DeviceNearEndToEchoRatioEventRatio" type="xs:float" minOccurs="0"/>
       <xs:element name="DeviceMultipleEndpointsEventCount" type="xs:short" minOccurs="0"/>
       <xs:element name="DeviceHowlingEventCount" type="xs:short" minOccurs="0"/>
       <xs:sequence minOccurs="0">
         <xs:element ref="v2:Separator"/>
         <xs:element ref="v3:DeviceRenderZeroVolumeEventRatio" type="xs:float" minOccurs="0"/>
         <xs:element ref="v3:DeviceRenderMuteEventRatio" type="xs:float" minOccurs="0"/>
         <xs:sequence minOccurs="0">
           <xs:element ref="v3:Separator3"/>
           <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
         </xs:sequence>
       </xs:sequence>
     </xs:sequence>
     <xs:anyAttribute namespace="##any" processContents="lax" />
   </xs:complexType>
  
  
   <!--The following are video metrics-->
   <xs:element name="VideoResolutionDistribution" type="v2:VideoResolutionDistributionType"/>
  
   <xs:complexType name="VideoResolutionDistributionType">
     <xs:sequence>
       <xs:element name="CIFQuality" type="xs:unsignedByte" />
       <xs:element name="VGAQuality" type="xs:unsignedByte" />
       <xs:element name="HD720Quality" type="xs:unsignedByte" />
       <xs:sequence minOccurs="0">
         <xs:element ref="v2:Separator"/>
         <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
       </xs:sequence>
     </xs:sequence>
     <xs:anyAttribute namespace="##any" processContents="lax"/>
   </xs:complexType>
  
   <xs:element name="VideoRateMatchingLevelDistribution" type="v2:VideoRateMatchingLevelDistributionType"/>
   <xs:complexType name="VideoRateMatchingLevelDistributionType">
     <xs:sequence>
       <xs:element name="None_Drop" type="xs:unsignedByte" />
       <xs:element name="B_Drop" type="xs:unsignedByte" />
       <xs:element name="BP_Drop" type="xs:unsignedByte" />
       <xs:element name="BPSP_Drop" type="xs:unsignedByte" />
       <xs:element name="BPSPI_Drop" type="xs:unsignedByte" />
       <xs:sequence minOccurs="0">
         <xs:element ref="v2:Separator"/>
         <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
       </xs:sequence>
     </xs:sequence>
     <xs:anyAttribute namespace="##any" processContents="lax"/>
   </xs:complexType>
  
  
   <!--The following are debugging blob, it's for internal use only-->
   
   <xs:element name="OpaqueClientPlatformData" type="v2:OpaqueClientPlatformDataType" />
   <xs:element name="OpaqueServerPlatformData" type="v2:OpaqueServerPlatformDataType" />
   <xs:element name="OpaqueCoreEndpointData" type="v2:OpaqueCoreEndpointDataType" />
   <xs:element name="OpaqueConferenceData" type="v2:OpaqueConferenceDataType" />
   <xs:element name="OpaqueChannelData" type="v2:OpaqueChannelDataType" />
   
   <!--These two elements should be removed once nobody refer to it. (Instead, everyone should use OpaqueChannelData)-->
   <xs:element name="OpaqueAudioData" type="v2:OpaqueAudioDataType" />
   <xs:element name="OpaqueVideoData" type="v2:OpaqueVideoDataType" />
  
  
   <!--OPAQUE MEDIALINE DATA TYPE-->
   <xs:complexType name="OpaqueCoreEndpointDataType">
     <xs:sequence>
       <xs:element name="OpaqueData" type="xs:string" minOccurs="0" />
     </xs:sequence>
     <xs:anyAttribute namespace="##any" processContents="lax" />
   </xs:complexType>
   <!--OPAQUE CHANNEL DATA TYPE-->
   <xs:complexType name="OpaqueChannelDataType" >
     <xs:sequence>
       <xs:element name="OpaqueData" type="xs:string" minOccurs="0" />
     </xs:sequence>
     <xs:anyAttribute namespace="##any" processContents="lax" />
   </xs:complexType>
   <!--OPAQUE CLIENT PLATFORM DATA TYPE-->
   <xs:complexType name="OpaqueClientPlatformDataType">
     <xs:sequence>
       <xs:element name="OpaqueData" type="xs:string" minOccurs="0" />
     </xs:sequence>
     <xs:anyAttribute namespace="##any" processContents="lax" />
   </xs:complexType>
   <!--OPAQUE SERVER PLATFORM DATA TYPE-->
   <xs:complexType name="OpaqueServerPlatformDataType">
     <xs:sequence>
       <xs:element name="OpaqueData" type="xs:string" minOccurs="0" />
     </xs:sequence>
     <xs:anyAttribute namespace="##any" processContents="lax" />
   </xs:complexType>
   <!--OPAQUE CONFERENCE DATA TYPE-->
   <xs:complexType name="OpaqueConferenceDataType">
     <xs:sequence>
       <xs:element name="OpaqueData" type="xs:string" minOccurs="0" />
     </xs:sequence>
     <xs:anyAttribute namespace="##any" processContents="lax" />
   </xs:complexType>
   <!--OPAQUE VIDEO DATA TYPE (this should be removed once nobody refer to it)-->
   <xs:complexType name="OpaqueVideoDataType">
     <xs:sequence>
       <xs:element name="OpaqueData" type="xs:string" minOccurs="0" />
     </xs:sequence>
     <xs:anyAttribute namespace="##any" processContents="lax" />
   </xs:complexType>
   <!--OPAQUE AUDIO DATA TYPE (this should be removed once nobody refer to it)-->
   <xs:complexType name="OpaqueAudioDataType">
     <xs:sequence>
       <xs:element name="OpaqueData" type="xs:string" minOccurs="0" />
     </xs:sequence>
     <xs:anyAttribute namespace="##any" processContents="lax" />
   </xs:complexType>
  
  
  
   <!--Separator is used for forward/backward compatiblity-->
   <xs:element name="Separator">
     <xs:complexType></xs:complexType>
   </xs:element>
  
 </xs:schema>

The schema for ms-rtcp-metrics.v3.xsd is as follows:

 <?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:tns="ms-rtcp-metrics" xmlns:v2="ms-rtcp-metrics.v2" xmlns:v3="ms-rtcp-metrics.v3" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="ms-rtcp-metrics.v3" elementFormDefault="qualified" version="1.2" attributeFormDefault="unqualified">
  
   <!--Core Metrics-->
   <xs:element name="WifiDriverDeviceDesc" type="xs:string"/>
   <xs:element name="WifiDriverVersion" type="xs:string"/>
   
   <!--ClientEvent Metrics-->
   <xs:element name="NetworkConnectionDetails" type="xs:string"/>
   <xs:element name="DeviceRenderZeroVolumeEventRatio" type="xs:float"/>
   <xs:element name="DeviceRenderMuteEventRatio" type="xs:float"/>
  
   <!--Platform Metrics-->
   
   <!--Audio Metrics-->
   <xs:element name="DecodeStereoPercent" type="xs:float"/>
   <xs:element name="AecRenderStereoPercent" type="xs:float"/>
   <xs:element name="AudioPostFECPLR" type="xs:float"/>
   <xs:element name="EncodeStereoPercent" type="xs:float"/>
   <xs:element name="AecCaptureStereoPercent" type="xs:float"/>
   <xs:element name="RecvSignalLevelCh1" type="xs:int"/>
   <xs:element name="RecvSignalLevelCh2" type="xs:int"/>
   <xs:element name="RecvNoiseLevelCh1" type="xs:int"/>
   <xs:element name="RecvNoiseLevelCh2" type="xs:int"/>
   <xs:element name="SendSignalLevelCh1" type="xs:int"/>
   <xs:element name="SendSignalLevelCh2" type="xs:int"/>
   <xs:element name="SendNoiseLevelCh1" type="xs:int"/>
   <xs:element name="SendNoiseLevelCh2" type="xs:int"/>
   <xs:element name="ConcealRatioMax" type="xs:float"/>
   <xs:element name="ConcealRatioSd" type="xs:float"/>
   <xs:element name="HealerPacketDropRatio" type="xs:float"/>
   <xs:element name="HealerFECPacketUsedRatio" type="xs:float"/>
   <xs:element name="MaxCompressedSamples" type="xs:float"/>
  
   <!--Jitter Metrics-->
   <xs:element name="InterArrivalSD" type="xs:float"/>
  
   <!--Video Metrics-->
   <xs:element name="SendCodecTypes" type="xs:string"/>
   <xs:element name="SendResolutionWidth" type="xs:int"/>
   <xs:element name="SendResolutionHeight" type="xs:int"/>
   <xs:element name="SendFrameRateAverage" type="xs:float"/>
   <xs:element name="SendBitRateMaximum" type="xs:int"/>
   <xs:element name="SendBitRateAverage" type="xs:int"/>
   <xs:element name="SendVideoStreamsMax" type="xs:int"/>
   
   <xs:element name="RecvCodecTypes" type="xs:string"/>
   <xs:element name="RecvResolutionWidth" type="xs:int"/>
   <xs:element name="RecvResolutionHeight" type="xs:int"/>
   <xs:element name="RecvFrameRateAverage" type="xs:float"/>
   <xs:element name="RecvBitRateMaximum" type="xs:int"/>
   <xs:element name="RecvBitRateAverage" type="xs:int"/>
   <xs:element name="RecvVideoStreamsMax" type="xs:int"/>
   <xs:element name="RecvVideoStreamsMin" type="xs:int"/>
   <xs:element name="RecvVideoStreamsMode" type="xs:int"/>
   <xs:element name="VideoPostFECPLR" type="xs:float"/>
   
   <xs:element name="RelativeOneWay" type="v3:MetricAggregationType"/>
  
   <xs:element name="BandwidthEstMin" type="xs:int"/>
   <xs:element name="BandwidthEstMax" type="xs:int"/>
   <xs:element name="BandwidthEstStdDev" type="xs:int"/>
   <xs:element name="BandwidthEstAvge" type="xs:int"/>
   <xs:element name="LowBandwidthForMultiview" type="xs:float"/>
  
   <xs:element name="LossCongestionPercent" type="xs:float"/>
   <xs:element name="DelayCongestionPercent" type="xs:float"/>
   <xs:element name="ContentionDetectedPercent" type="xs:float"/>
  
   <!-- New VDSP in M4 -->
   <xs:element name="DynamicCapabilityPercent" type="xs:float"/>
   <xs:element name="ResolutionMin" type="xs:string"/>
   <xs:element name="LowBitRateCallPercent" type="xs:float"/>
   <xs:element name="LowFrameRateCallPercent" type="xs:float"/>
   <xs:element name="LowResolutionCallPercent" type="xs:float"/>
  
   <!-- Support multiple video payloads in single stream  -->
   <xs:element name="AdditionalPayload" type="tns:PayloadMetricsType" />
   <xs:element name="DurationSeconds" type="xs:float"/>
   <xs:element name="IsAggregatedData" type="xs:boolean" default="true"/>
   <xs:element name="UseForCallClassification" type="xs:boolean" default="true" />
  
   <!-- New Description elements -->
   <xs:element name="ReflexiveLocalIPAddress" type="tns:AddrType"/>
   <xs:element name="MidCallReport" type="xs:boolean" default="false" />
  
   <xs:complexType name="ApplicationSharingPayloadMetricsType">
     <xs:sequence>
       <xs:element name="PayloadDescription" type="xs:string" minOccurs="0"/>
       <xs:element name="AverageRectangleHeight" type="xs:int" minOccurs="0"/>
       <xs:element name="AverageRectangleWidth" type="xs:int" minOccurs="0"/>
       <xs:element name="ApplicationShared" type="xs:string" minOccurs="0"/>
       <xs:element name="RDPTileProcessingLatency" type="v3:MetricAggregationType" minOccurs="0"/>
       <xs:element name="CaptureTileRate" type="v3:MetricAggregationType" minOccurs="0"/>
       <xs:element name="SpoiledTilePercent" type="v3:MetricAggregationType" minOccurs="0"/>
       <xs:element name="ScrapingFrameRate" type="v3:MetricAggregationType" minOccurs="0"/>
       <xs:element name="IncomingTileRate" type="v3:MetricAggregationType" minOccurs="0"/>
       <xs:element name="IncomingFrameRate" type="v3:MetricAggregationType" minOccurs="0"/>
       <xs:element name="OutgoingTileRate" type="v3:MetricAggregationType" minOccurs="0"/>
       <xs:element name="OutgoingFrameRate" type="v3:MetricAggregationType" minOccurs="0"/>
       <xs:element name="OpaqueAppSharingData" type="v2:OpaqueChannelDataType" minOccurs="0"/>
       <xs:sequence minOccurs="0">
         <xs:element ref="v3:Separator3"/>
         <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
       </xs:sequence>
     </xs:sequence>
     <xs:anyAttribute namespace="##any" processContents="lax"/>
   </xs:complexType>
  
  
   <xs:complexType name="MetricAggregationType">
     <xs:sequence>
       <xs:element name="Total" type="xs:float" minOccurs="0"/>
       <xs:element name="Average" type="xs:float" minOccurs="0"/>
       <xs:element name="Max" type="xs:float" minOccurs="0"/>
       <xs:element name="Burst" type="v3:MetricBurstGapType" minOccurs="0"/>
       <xs:element name="Gap" type="v3:MetricBurstGapType" minOccurs="0"/>
       <xs:sequence minOccurs="0">
         <xs:element ref="v3:Separator3"/>
         <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
       </xs:sequence>
     </xs:sequence>
     <xs:anyAttribute namespace="##any" processContents="lax"/>
   </xs:complexType>
  
   <!--Metrics Burst and Gap Type calculation--> 
   <xs:complexType name="MetricBurstGapType">
     <xs:sequence>
       <xs:element name="Occurrences" type="xs:int" minOccurs="0"/>
       <xs:element name="Density" type="xs:float" minOccurs="0"/>
       <xs:element name="Duration" type="xs:float" minOccurs="0"/>
       <xs:sequence minOccurs="0">
         <xs:element ref="v3:Separator3"/>
         <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
       </xs:sequence>
     </xs:sequence>
     <xs:anyAttribute namespace="##any" processContents="lax"/>
   </xs:complexType>
  
   <xs:element name="TraceRoute" type="v3:TraceRouteType"/>
  
   <xs:complexType name="TraceRouteType">
     <xs:sequence>
       <xs:element name="Hop" type="xs:int" minOccurs="1"/>
       <xs:element name="IPAddress" type="xs:string" minOccurs="0"/>
       <xs:element name="RTT" type="xs:int" minOccurs="0"/>
       <xs:sequence minOccurs="0">
         <xs:element ref="v3:Separator3"/>
         <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
       </xs:sequence>
     </xs:sequence>
     <xs:anyAttribute namespace="##any" processContents="lax"/>
   </xs:complexType>
  
   <!--Separator is used for forward/backward compatibility-->
   <xs:element name="Separator3">
     <xs:complexType></xs:complexType>
   </xs:element>
 </xs:schema>