6.3 Microsoft Lync Server 2010 Schema
This section follows the product behavior described in footnote <309>. 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>