Partager via


6.3 Microsoft Lync Server 2010 Schema

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

  • ms-rtcp-metrics.xsd

  • ms-rtcp-metrics.medialine.xsd

  • ms-rtcp-metrics.v2.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: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: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: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>
      <!--
         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" -->
        <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: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>
    
      <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:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
          </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: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: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: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:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
          </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"/>
          <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:element name="FrozenPeriodPercentAvg" type="xs:float" minOccurs="0"/>
          <xs:element name="ConsecutivePacketLossAvg" type="xs:float" minOccurs="0"/>
          <xs:element name="RateMatchLevel" type="xs:float" minOccurs="0"/>
          <xs:element ref="v2:VideoAllocateBWAvg" minOccurs="0"/>
          <xs:element ref="v2:VideoLocalFrameLossPercentageAvg" minOccurs="0"/>
          <xs:sequence minOccurs="0">
            <xs:element ref="v2:Separator" />
            <xs:element ref="v2:VideoResolutionDistribution" minOccurs="0" />
            <xs:element ref="v2:VideoRateMatchingLevelDistribution" 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: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: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:element name="SpeakerFeedbackMicIn" type="xs:int" minOccurs="0"/>
          <xs:element name="SpeechLevelMicIn" type="xs:int" minOccurs="0"/>
          <xs:element name="SpeechLevelPostProcess" type="xs:int" minOccurs="0"/>
          <xs:element name="SignalLevelLoudSpeaker" type="xs:int" minOccurs="0"/>
          <xs:element name="BackGroundNoiseMicIn" type="xs:int" minOccurs="0"/>
          <xs:element name="BackGroundNoiseSent" type="xs:int" minOccurs="0"/>
          <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"/>
          <xs:element name="SpeakerClipRate" type="xs:int" minOccurs="0"/>
          <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 ref="v2:AudioTimestampDriftRateMic" minOccurs="0"/>
          <xs:element ref="v2:AudioTimestampDriftRateSpk" minOccurs="0"/>
          <xs:element ref="v2:AudioTimestampErrorMicMs" minOccurs="0"/>
          <xs:element ref="v2:AudioTimestampErrorSpkMs" minOccurs="0"/>
          <xs:element ref="v2:VsEntryCauses" minOccurs="0"/>
          <xs:element ref="v2:EchoEventCauses" minOccurs="0"/>
          <xs:element ref="v2:EchoPercentMicIn" minOccurs="0"/>
          <xs:element ref="v2:EchoPercentSend" minOccurs="0"/>
          <xs:element ref="v2:RxAvgAGCGain" minOccurs="0"/>
          <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>
      <!--
         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: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:tns="ms-rtcp-metrics.v2" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="ms-rtcp-metrics.v2" elementFormDefault="qualified" version="1.2" attributeFormDefault="unqualified">
    
      <!--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="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"/>
      <xs:element name="RegisteredInside" 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="tns:ClientEventType"/>
      <xs:element name="RemoteClientEvent" type="tns: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="tns: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="VideoResolutionDistribution"
       type="tns: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="tns: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="tns: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="tns: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="OpaqueClientPlatformData"
       type="tns:OpaqueClientPlatformDataType" />
      <xs:element name="OpaqueServerPlatformData"
       type="tns:OpaqueServerPlatformDataType" />
      <xs:element name="OpaqueCoreEndpointData"
       type="tns:OpaqueCoreEndpointDataType" />
      <xs:element name="OpaqueConferenceData" 
       type="tns:OpaqueConferenceDataType" />
      <xs:element name="OpaqueChannelData" type="tns:OpaqueChannelDataType" />
    
      <xs:element name="OpaqueAudioData" type="v2:OpaqueAudioDataType" />
    
      <!--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 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>