6.5 Microsoft Skype for Business Server Schema
This section follows the product behavior described in footnote <311>. 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
ms-rtcp-metrics.v4.xsd
Additionally, a new schema has been introduced:
ms-cqf.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:v4="ms-rtcp-metrics.v4" 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:import namespace="ms-rtcp-metrics.v4"></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" minOccurs="1" 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:v4="ms-rtcp-metrics.v4" 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> <xs:import namespace="ms-rtcp-metrics.v4"></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:Separator3"></xs:element> <xs:element ref="v4:WifiRadioType" minOccurs="0"/> <xs:element ref="v4:WifiRSSI" minOccurs="0"/> <xs:element ref="v4:SSID" minOccurs="0"/> <xs:element ref="v4:WifiChannel" minOccurs="0"/> <xs:element ref="v4:ActivePowerProfile" minOccurs="0"/> <xs:element ref="v4:WifiHandovers" minOccurs="0"/> <xs:element ref="v4:WifiChannelSwitches" minOccurs="0"/> <xs:element ref="v4:WifiChannelReassociations" minOccurs="0"/> <xs:element ref="v4:RecvQoSMarking" minOccurs="0"/> <xs:element ref="v4:SendQoSMarking" minOccurs="0"/> <xs:element ref="v4:WifiRadioFrequency" minOccurs="0"/> <xs:element ref="v4:WifiMTU" minOccurs="0"/> <xs:element ref="v4:WifiSupportFlags" minOccurs="0"/> <xs:element ref="v4:WifiStatusFlags" minOccurs="0"/> <xs:element ref="v4:WifiTunnelType" minOccurs="0"/> <xs:element ref="v4:WifiSignalStrength" minOccurs="0"/> <xs:element ref="v4:WifiBatteryCharge" minOccurs="0"/> <xs:element ref="v4:ConnectionName" minOccurs="0"/> <xs:element ref="v4:DNSSuffix" minOccurs="0"/> <xs:element ref="v4:LastRTPSendTime" minOccurs="0"/> <xs:element ref="v4:LastRTCPSendTime" minOccurs="0"/> <xs:element ref="v4:LastRTPReceiveTime" minOccurs="0"/> <xs:element ref="v4:LastRTCPReceiveTime" minOccurs="0"/> <xs:sequence minOccurs="0"> <xs:element ref="v4:Separator4"></xs:element> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </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 ref="v3:LossCongestionPercent" minOccurs="0"/> <xs:element ref="v3:DelayCongestionPercent" minOccurs="0"/> <xs:element ref="v3:ContentionDetectedPercent" minOccurs="0"/> <xs:sequence minOccurs="0"> <xs:element ref="v3:Separator3" /> <xs:element ref="v4:WifiRetransmissionRate" minOccurs="0"/> <xs:element ref="v4:WifiSendRate" minOccurs="0"/> <xs:element ref="v4:WifiReceiveRate" minOccurs="0"/> <xs:element ref="v4:WifiRetryCount" minOccurs="0"/> <xs:element ref="v4:WifiTransmittedFrameCount" minOccurs="0"/> <xs:element ref="v4:WifiMaxSendSpeed" minOccurs="0"/> <xs:element ref="v4:WifiMaxReceiveSpeed" minOccurs="0"/> <xs:element ref="v4:QoSMarkedRate" minOccurs="0"/> <xs:sequence minOccurs="0"> <xs:element ref="v4:Separator4" /> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </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:element ref="v3:BandwidthEstMin" minOccurs="0"/> <xs:element ref="v3:BandwidthEstMax" minOccurs="0"/> <xs:element ref="v3:BandwidthEstStdDev" minOccurs="0"/> <xs:element ref="v3:BandwidthEstAvge" minOccurs="0"/> <xs:element ref="v3:LowBandwidthForMultiview" 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> <!-- 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:element ref="v4:JitterBufferSizeAvg" minOccurs="0"/> <xs:element ref="v4:JitterBufferSizeMax" minOccurs="0"/> <xs:element ref="v4:JitterBufferSizeMin" minOccurs="0"/> <xs:element ref="v4:JitterBufferSizeSD" minOccurs="0"/> <xs:element ref="v4:NetworkJitterAvg" minOccurs="0"/> <xs:element ref="v4:NetworkJitterMax" minOccurs="0"/> <xs:element ref="v4:NetworkJitterMin" minOccurs="0"/> <xs:element ref="v4:NetworkJitterSD" minOccurs="0"/> <xs:element ref="v4:PacketReorderRatio" minOccurs="0"/> <xs:element ref="v4:PacketReorderDepthAvg" minOccurs="0"/> <xs:element ref="v4:PacketReorderDepthMax" minOccurs="0"/> <xs:element ref="v4:BurstLossLength1" minOccurs="0"/> <xs:element ref="v4:BurstLossLength2" minOccurs="0"/> <xs:element ref="v4:BurstLossLength3" minOccurs="0"/> <xs:element ref="v4:BurstLossLength4" minOccurs="0"/> <xs:element ref="v4:BurstLossLength5" minOccurs="0"/> <xs:element ref="v4:BurstLossLength6" minOccurs="0"/> <xs:element ref="v4:BurstLossLength7" minOccurs="0"/> <xs:element ref="v4:BurstLossLength8OrHigher" minOccurs="0"/> <xs:element ref="v4:FECRecvOnPercent" minOccurs="0"/> <xs:element ref="v4:FECRecvDistance1" minOccurs="0"/> <xs:element ref="v4:FECRecvDistance2" minOccurs="0"/> <xs:element ref="v4:FECRecvDistance3" minOccurs="0"/> <xs:element ref="v4:FECRecvDistance4" minOccurs="0"/> <xs:element ref="v4:FECRecvDistance5" minOccurs="0"/> <xs:element ref="v4:FECRecvDistance6" minOccurs="0"/> <xs:element ref="v4:FECRecvDistance7" minOccurs="0"/> <xs:element ref="v4:FECRecvDistance8OrHigher" minOccurs="0"/> <xs:element ref="v4:FECRecvScheme" minOccurs="0"/> <xs:element ref="v4:FECRecvRedundancy" minOccurs="0"/> <xs:element ref="v4:HealerPushCount" minOccurs="0"/> <xs:element ref="v4:HealerPullCount" minOccurs="0"/> <xs:element ref="v4:SendMutePercent" minOccurs="0"/> <xs:element ref="v4:CaptureOffloadedEffectsAudio" minOccurs="0"/> <xs:element ref="v4:RenderOffloadedEffectsAudio" minOccurs="0"/> <xs:sequence minOccurs="0"> <xs:element ref="v4:Separator4" /> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </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:element ref="v4:RecvReorderBufferTotalPackets" minOccurs="0" /> <xs:element ref="v4:RecvReorderBufferReorderedPackets" minOccurs="0" /> <xs:element ref="v4:RecvReorderBufferReorderedPacketsSuccessfullyOrdered" minOccurs="0" /> <xs:element ref="v4:RecvReorderBufferPacketsDroppedDueToBufferExhaustion" minOccurs="0" /> <xs:element ref="v4:RecvReorderBufferMaxSuccessfullyOrderedExtent" minOccurs="0" /> <xs:element ref="v4:RecvReorderBufferMaxSuccessfullyOrderedLateTime" minOccurs="0" /> <xs:element ref="v4:RecvReorderBufferPacketsDroppedDueToTimeout" minOccurs="0" /> <xs:sequence minOccurs="0"> <xs:element ref="v4:Separator4" /> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </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:element ref="v3:InterArrivalSD" 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> <!-- 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:element ref="v4:RenderSignalLevel" minOccurs="0"/> <xs:element ref="v4:RenderNoiseLevel" minOccurs="0"/> <xs:element ref="v4:RenderLoopbackSignalLevel" minOccurs="0"/> <xs:sequence minOccurs="0"> <xs:element ref="v4:Separator4" /> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </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:element ref="v3:NetworkConnectionDetails" minOccurs="0"/> <xs:element ref="v3:WifiDriverDeviceDesc" minOccurs="0"/> <xs:element ref="v3:WifiDriverVersion" minOccurs="0"/> <xs:element ref="v3:TraceRoute" minOccurs="0" maxOccurs="unbounded"/> <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> <!-- 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:v4="ms-rtcp-metrics.v4" 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> <xs:import namespace="ms-rtcp-metrics.v4"></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:short"/> <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" minOccurs="0"/> <xs:element ref="v3:DeviceRenderMuteEventRatio" 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:v4="ms-rtcp-metrics.v4" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="ms-rtcp-metrics.v3" elementFormDefault="qualified" version="1.2" attributeFormDefault="unqualified"> <xs:import namespace="ms-rtcp-metrics.v4"></xs:import> <!--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"/> <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:element ref="v4:InitialFrameReceivedTime" minOccurs="0"/> <xs:element ref="v4:InitialFrameSentSize" minOccurs="0"/> <xs:element ref="v4:NumSharingStarted" minOccurs="0"/> <xs:element ref="v4:NumRemoteControlChanges" minOccurs="0"/> <xs:element name="SharerAppSharingEstablishTime" type="v4:AppSharingEstablishTime" minOccurs="0"/> <xs:element name="ViewerAppSharingEstablishTime" type="v4:AppSharingEstablishTime" minOccurs="0"/> <xs:sequence minOccurs="0"> <xs:element ref="v4:Separator4" /> <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </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 compatiblity--> <xs:element name="Separator3"> <xs:complexType></xs:complexType> </xs:element> </xs:schema>
The schema for ms-rtcp-metrics.v4.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:v4="ms-rtcp-metrics.v4" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="ms-rtcp-metrics.v4" elementFormDefault="qualified" version="1.2" attributeFormDefault="unqualified"> <xs:element name="InitialFrameReceivedTime" type="xs:int"/> <xs:element name="InitialFrameSentSize" type="xs:int"/> <xs:element name="NumSharingStarted" type="xs:int"/> <xs:element name="NumRemoteControlChanges" type="xs:int"/> <xs:complexType name="AppSharingEstablishTime"> <xs:sequence> <xs:element name="SignalingTime" type="xs:int"/> <xs:element name="MediaSetupTime" type="xs:int"/> <xs:element name="ProtocolConnectTime" type="xs:int"/> </xs:sequence> <xs:anyAttribute namespace="##any" processContents="lax"/> </xs:complexType> <xs:element name="RecvReorderBufferTotalPackets" type="xs:int" /> <xs:element name="RecvReorderBufferReorderedPackets" type="xs:int" /> <xs:element name="RecvReorderBufferReorderedPacketsSuccessfullyOrdered" type="xs:int" /> <xs:element name="RecvReorderBufferPacketsDroppedDueToBufferExhaustion" type="xs:int" /> <xs:element name="RecvReorderBufferMaxSuccessfullyOrderedExtent" type="xs:int" /> <xs:element name="RecvReorderBufferMaxSuccessfullyOrderedLateTime" type="xs:int" /> <xs:element name="RecvReorderBufferPacketsDroppedDueToTimeout" type="xs:int" /> <xs:element name="RenderSignalLevel" type="xs:float"/> <xs:element name="RenderNoiseLevel" type="xs:float"/> <xs:element name="RenderLoopbackSignalLevel" type="xs:float"/> <xs:element name="JitterBufferSizeAvg" type="xs:int"/> <xs:element name="JitterBufferSizeMax" type="xs:int"/> <xs:element name="JitterBufferSizeMin" type="xs:int"/> <xs:element name="JitterBufferSizeSD" type="xs:int"/> <xs:element name="NetworkJitterAvg" type="xs:float"/> <xs:element name="NetworkJitterMax" type="xs:float"/> <xs:element name="NetworkJitterMin" type="xs:float"/> <xs:element name="NetworkJitterSD" type="xs:float"/> <xs:element name="PacketReorderRatio" type="xs:float"/> <xs:element name="PacketReorderDepthAvg" type="xs:int"/> <xs:element name="PacketReorderDepthMax" type="xs:int"/> <xs:element name="BurstLossLength1" type="xs:float"/> <xs:element name="BurstLossLength2" type="xs:float"/> <xs:element name="BurstLossLength3" type="xs:float"/> <xs:element name="BurstLossLength4" type="xs:float"/> <xs:element name="BurstLossLength5" type="xs:float"/> <xs:element name="BurstLossLength6" type="xs:float"/> <xs:element name="BurstLossLength7" type="xs:float"/> <xs:element name="BurstLossLength8OrHigher" type="xs:float"/> <xs:element name="FECRecvOnPercent" type="xs:float"/> <xs:element name="FECRecvDistance1" type="xs:float"/> <xs:element name="FECRecvDistance2" type="xs:float"/> <xs:element name="FECRecvDistance3" type="xs:float"/> <xs:element name="FECRecvDistance4" type="xs:float"/> <xs:element name="FECRecvDistance5" type="xs:float"/> <xs:element name="FECRecvDistance6" type="xs:float"/> <xs:element name="FECRecvDistance7" type="xs:float"/> <xs:element name="FECRecvDistance8OrHigher" type="xs:float"/> <xs:element name="FECRecvScheme" type="xs:int"/> <xs:element name="FECRecvRedundancy" type="xs:float"/> <xs:element name="HealerPushCount" type="xs:int"/> <xs:element name="HealerPullCount" type="xs:int"/> <xs:element name="SendMutePercent" type="xs:float"/> <xs:element name="CaptureOffloadedEffectsAudio" type="xs:int"/> <xs:element name="RenderOffloadedEffectsAudio" type="xs:int"/> <xs:element name="WifiRadioType" type="xs:unsignedByte"/> <xs:element name="WifiRSSI" type="xs:int"/> <xs:element name="SSID" type="xs:string"/> <xs:element name="WifiChannel" type="xs:int"/> <xs:element name="ActivePowerProfile" type="xs:int"/> <xs:element name="WifiHandovers" type="xs:int"/> <xs:element name="WifiChannelSwitches" type="xs:int"/> <xs:element name="WifiChannelReassociations" type="xs:int"/> <xs:element name="RecvQoSMarking" type="xs:unsignedByte"/> <xs:element name="SendQoSMarking" type="xs:unsignedByte"/> <xs:element name="WifiRadioFrequency" type="xs:int"/> <xs:element name="WifiSendRate" type="xs:int"/> <xs:element name="WifiReceiveRate" type="xs:int"/> <xs:element name="WifiRetryCount" type="xs:long"/> <xs:element name="WifiTransmittedFrameCount" type="xs:long"/> <xs:element name="WifiMaxSendSpeed" type="xs:int"/> <xs:element name="WifiMaxReceiveSpeed" type="xs:int"/> <xs:element name="WifiMTU" type="xs:int"/> <xs:element name="WifiSupportFlags" type="xs:int"/> <xs:element name="WifiStatusFlags" type="xs:int"/> <xs:element name="WifiTunnelType" type="xs:int"/> <xs:element name="WifiSignalStrength" type="xs:int"/> <xs:element name="WifiBatteryCharge" type="xs:int"/> <xs:element name="ConnectionName" type="xs:string"/> <xs:element name="DNSSuffix" type="xs:string"/> <xs:element name="WifiRetransmissionRate" type="xs:float"/> <xs:element name="QoSMarkedRate" type="xs:float"/> <xs:element name="LastRTPSendTime" type="xs:dateTime"/> <xs:element name="LastRTCPSendTime" type="xs:dateTime"/> <xs:element name="LastRTPReceiveTime" type="xs:dateTime"/> <xs:element name="LastRTCPReceiveTime" type="xs:dateTime"/> <!-- Separator is used for forward/backward compatiblity --> <xs:element name="Separator4"> <xs:complexType></xs:complexType> </xs:element> </xs:schema>
The schema for ms-cqf.xsd is as follows:
-
<?xml version="1.0" encoding="utf-8"?> <xs:schema targetNamespace="ms-cqf" elementFormDefault="qualified" xmlns:mstns="ms-cqf" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name ="CallQualityFeedbackReport" type="mstns:CallQualityFeedbackReportType"/> <xs:complexType name ="CallQualityFeedbackReportType"> <xs:sequence> <xs:element name="ReportingUserURI" type="xs:anyURI" minOccurs="1" maxOccurs="1"/> <xs:element name ="Rating" type="xs:int" minOccurs="1" maxOccurs="1"/> <xs:element name= "Feedback" type="mstns:TextFeedbackType" minOccurs="0" maxOccurs="1"/> <xs:element name ="Tokens" type ="mstns:TokenCollectionType" minOccurs="0" maxOccurs="1"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="CallId" type="xs:string" use="required"/> <xs:attribute name="FromTag" type="xs:string" use="required"/> <xs:attribute name="ToTag" type="xs:string" use="required"/> <xs:attribute name="Start" type="xs:dateTime"/> <xs:attribute name="End" type="xs:dateTime"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> <xs:complexType name="TextFeedbackType"> <xs:sequence> <xs:element name="Text" type="xs:string"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <!--LanguageTag values from LanguageTag value defined within MS-LCID http://msdn.microsoft.com/en-us/library/cc233965.aspx --> <xs:attribute name="LanguageTag" type="xs:string"/> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> <xs:complexType name ="TokenCollectionType"> <xs:sequence> <xs:element name="Token" type="mstns:TokenValueType" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name ="TokenValueType"> <xs:sequence> <xs:element name ="Id" type="xs:int" minOccurs="1" maxOccurs="1"/> <xs:element name ="Value" type="xs:int" minOccurs="1" maxOccurs="1"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> </xs:schema>