- From: Bernard Aboba <Bernard.Aboba@microsoft.com>
- Date: Tue, 2 Jan 2018 19:05:16 +0000
- To: T H Panton <thp@westhawk.co.uk>, "public-webrtc@w3.org" <public-webrtc@w3.org>
- CC: Martin Thomson <martin.thomson@gmail.com>, Dominique Hazael-Massieux <dom@w3.org>
Tim Panton said:
"Given that we haven't implemented 1.0 anywhere yet"
[BA] The Web Platform Test site (https://wpt.fyi/webrtc) provides an artificially pessimistic view of the implementation status of WebRTC 1.0.
In fact, there has been great progress made on WebRTC 1.0 and object model implementations over the last few months. For example, here is an inventory of the methods/objects supported by various browsers (point your browser at http://internaut.com:8080/~baboba/cluecon-tutorial/cap-dumper/ to see for yourself):
Chrome Canary 65.0.3309.0
Phase 1: Object/Method Inventory
RTCPeerConnection supported
addTrack supported
getReceivers supported
getSenders supported
ontrack supported
removeTrack supported
RTCRtpReceiver supported
RTCRtpSender supported
Safari Version 11.0.2 (13604.4.7.1.3)
Phase 1: Object/Method Inventory
RTCPeerConnection supported
addTrack supported
addTransceiver supported
getReceivers supported
getSenders supported
getTransceivers supported
ontrack supported
removeTrack supported
RTCRtpTransceiver supported
setDirection supported
stop supported
RTCIceTransport supported
RTCRtpReceiver supported
getParameters supported
RTCRtpSender supported
getParameters supported
replaceTrack supported
Firefox Nightly 59.0a1
Phase 1: Object/Method Inventory
RTCPeerConnection supported
addTrack supported
addTransceiver supported
getReceivers supported
getSenders supported
getTransceivers supported
ontrack supported
removeTrack supported
RTCRtpTransceiver supported
stop supported
RTCRtpReceiver supported
getContributingSources supported
getSynchronizationSources supported
getStats supported
RTCRtpSender supported
getParameters supported
getStats supported
replaceTrack supported
setParameters supported
Edge Fall Creator's Update
Phase 1: Object/Method Inventory
RTCPeerConnection supported
RTCIceGatherer supported
getLocalParameters supported
getLocalCandidates supported
createAssociatedGatherer supported
onerror supported
onlocalcandidate supported
RTCIceTransport supported
getRemoteCandidates supported
start supported
stop supported
getRemoteParameters supported
createAssociatedTransport supported
addRemoteCandidate supported
setRemoteCandidate supported
oncandidatepairchange supported
RTCDtlsTransport supported
getLocalParameters supported
getRemoteParameters supported
getRemoteCertificates supported
start supported
stop supported
onerror supported
RTCSrtpSdesTransport supported
RTCRtpReceiver supported
getCapabilities supported
setTransport supported
receive supported
getContributingSources supported
stop supported
RTCRtpSender supported
getCapabilities supported
Phase 2: Sender/Receiver Capabilities
RTCRtpReceiver.getCapabilities(audio):
{
"codecs": [
{
"name": "SILK",
"kind": "audio",
"clockRate": 16000,
"preferredPayloadType": 104,
"maxptime": 100,
"ptime": 20,
"numChannels": 1,
"rtcpFeedback": [
{
"type": "x-cinfo",
"parameter": ""
},
{
"type": "x-bwe",
"parameter": ""
},
{
"type": "x-message",
"parameter": "app send:dsh recv:dsh"
}
],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "opus",
"kind": "audio",
"clockRate": 48000,
"preferredPayloadType": 102,
"maxptime": 60,
"ptime": 20,
"numChannels": 2,
"rtcpFeedback": [
{
"type": "x-cinfo",
"parameter": ""
},
{
"type": "x-bwe",
"parameter": ""
},
{
"type": "x-message",
"parameter": "app send:dsh recv:dsh"
}
],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "G722",
"kind": "audio",
"clockRate": 8000,
"preferredPayloadType": 9,
"maxptime": 60,
"ptime": 20,
"numChannels": 1,
"rtcpFeedback": [
{
"type": "x-cinfo",
"parameter": ""
},
{
"type": "x-bwe",
"parameter": ""
},
{
"type": "x-message",
"parameter": "app send:dsh recv:dsh"
}
],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "PCMU",
"kind": "audio",
"clockRate": 8000,
"preferredPayloadType": 0,
"maxptime": 60,
"ptime": 20,
"numChannels": 1,
"rtcpFeedback": [
{
"type": "x-cinfo",
"parameter": ""
},
{
"type": "x-bwe",
"parameter": ""
},
{
"type": "x-message",
"parameter": "app send:dsh recv:dsh"
}
],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "PCMA",
"kind": "audio",
"clockRate": 8000,
"preferredPayloadType": 8,
"maxptime": 60,
"ptime": 20,
"numChannels": 1,
"rtcpFeedback": [
{
"type": "x-cinfo",
"parameter": ""
},
{
"type": "x-bwe",
"parameter": ""
},
{
"type": "x-message",
"parameter": "app send:dsh recv:dsh"
}
],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "SILK",
"kind": "audio",
"clockRate": 8000,
"preferredPayloadType": 103,
"maxptime": 60,
"ptime": 20,
"numChannels": 1,
"rtcpFeedback": [
{
"type": "x-cinfo",
"parameter": ""
},
{
"type": "x-bwe",
"parameter": ""
},
{
"type": "x-message",
"parameter": "app send:dsh recv:dsh"
}
],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "RED",
"kind": "audio",
"clockRate": 8000,
"preferredPayloadType": 97,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "CN",
"kind": "audio",
"clockRate": 8000,
"preferredPayloadType": 13,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "CN",
"kind": "audio",
"clockRate": 16000,
"preferredPayloadType": 118,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "telephone-event",
"kind": "audio",
"clockRate": 8000,
"preferredPayloadType": 101,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [],
"parameters": {
"events": "0-16"
},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
}
],
"headerExtensions": [
{
"kind": "audio",
"uri": "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time",
"preferredId": 1,
"preferredEncrypt": false
},
{
"kind": "audio",
"uri": "http://skype.com/experiments/rtp-hdrext/fast_bandwidth_feedback#version_2",
"preferredId": 3,
"preferredEncrypt": false
}
],
"fecMechanisms": [
"RED"
]
}
RTCRtpReceiver.getCapabilities(video):
{
"codecs": [
{
"name": "X-H264UC",
"kind": "video",
"clockRate": 90000,
"preferredPayloadType": 122,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [
{
"type": "x-cinfo",
"parameter": ""
},
{
"type": "x-bwe",
"parameter": ""
},
{
"type": "x-message",
"parameter": "app send:src,x-pli recv:src,x-pli"
}
],
"parameters": {
"packetization-mode": "1",
"mst-mode": "NI-TC"
},
"options": {},
"maxTemporalLayers": 3,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": true
},
{
"name": "H264",
"kind": "video",
"clockRate": 90000,
"preferredPayloadType": 107,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [
{
"type": "x-cinfo",
"parameter": ""
},
{
"type": "x-bwe",
"parameter": ""
},
{
"type": "nack",
"parameter": ""
},
{
"type": "nack",
"parameter": "pli"
},
{
"type": "goog-remb",
"parameter": ""
}
],
"parameters": {
"profile-level-id": "42C02A",
"packetization-mode": "1"
},
"options": {},
"maxTemporalLayers": 3,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "VP8",
"kind": "video",
"clockRate": 90000,
"preferredPayloadType": 100,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [
{
"type": "x-cinfo",
"parameter": ""
},
{
"type": "x-bwe",
"parameter": ""
},
{
"type": "nack",
"parameter": ""
},
{
"type": "nack",
"parameter": "pli"
},
{
"type": "goog-remb",
"parameter": ""
}
],
"parameters": {
"max-fr": "30",
"max-fs": "3600"
},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "rtx",
"kind": "video",
"clockRate": 90000,
"preferredPayloadType": 99,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [],
"parameters": {
"apt": "107"
},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "rtx",
"kind": "video",
"clockRate": 90000,
"preferredPayloadType": 96,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [],
"parameters": {
"apt": "100"
},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "x-ulpfecuc",
"kind": "video",
"clockRate": 90000,
"preferredPayloadType": 123,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
}
],
"headerExtensions": [
{
"kind": "video",
"uri": "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time",
"preferredId": 1,
"preferredEncrypt": false
},
{
"kind": "video",
"uri": "http://skype.com/experiments/rtp-hdrext/fast_bandwidth_feedback#version_2",
"preferredId": 3,
"preferredEncrypt": false
}
],
"fecMechanisms": []
}
RTCRtpSender.getCapabilities(audio):
{
"codecs": [
{
"name": "SILK",
"kind": "audio",
"clockRate": 16000,
"preferredPayloadType": 104,
"maxptime": 100,
"ptime": 20,
"numChannels": 1,
"rtcpFeedback": [
{
"type": "x-cinfo",
"parameter": ""
},
{
"type": "x-bwe",
"parameter": ""
},
{
"type": "x-message",
"parameter": "app send:dsh recv:dsh"
}
],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "opus",
"kind": "audio",
"clockRate": 48000,
"preferredPayloadType": 102,
"maxptime": 60,
"ptime": 20,
"numChannels": 2,
"rtcpFeedback": [
{
"type": "x-cinfo",
"parameter": ""
},
{
"type": "x-bwe",
"parameter": ""
},
{
"type": "x-message",
"parameter": "app send:dsh recv:dsh"
}
],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "G722",
"kind": "audio",
"clockRate": 8000,
"preferredPayloadType": 9,
"maxptime": 60,
"ptime": 20,
"numChannels": 1,
"rtcpFeedback": [
{
"type": "x-cinfo",
"parameter": ""
},
{
"type": "x-bwe",
"parameter": ""
},
{
"type": "x-message",
"parameter": "app send:dsh recv:dsh"
}
],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "PCMU",
"kind": "audio",
"clockRate": 8000,
"preferredPayloadType": 0,
"maxptime": 60,
"ptime": 20,
"numChannels": 1,
"rtcpFeedback": [
{
"type": "x-cinfo",
"parameter": ""
},
{
"type": "x-bwe",
"parameter": ""
},
{
"type": "x-message",
"parameter": "app send:dsh recv:dsh"
}
],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "PCMA",
"kind": "audio",
"clockRate": 8000,
"preferredPayloadType": 8,
"maxptime": 60,
"ptime": 20,
"numChannels": 1,
"rtcpFeedback": [
{
"type": "x-cinfo",
"parameter": ""
},
{
"type": "x-bwe",
"parameter": ""
},
{
"type": "x-message",
"parameter": "app send:dsh recv:dsh"
}
],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "SILK",
"kind": "audio",
"clockRate": 8000,
"preferredPayloadType": 103,
"maxptime": 60,
"ptime": 20,
"numChannels": 1,
"rtcpFeedback": [
{
"type": "x-cinfo",
"parameter": ""
},
{
"type": "x-bwe",
"parameter": ""
},
{
"type": "x-message",
"parameter": "app send:dsh recv:dsh"
}
],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "RED",
"kind": "audio",
"clockRate": 8000,
"preferredPayloadType": 97,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "CN",
"kind": "audio",
"clockRate": 8000,
"preferredPayloadType": 13,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "CN",
"kind": "audio",
"clockRate": 16000,
"preferredPayloadType": 118,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "telephone-event",
"kind": "audio",
"clockRate": 8000,
"preferredPayloadType": 101,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [],
"parameters": {
"events": "0-16"
},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
}
],
"headerExtensions": [
{
"kind": "audio",
"uri": "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time",
"preferredId": 1,
"preferredEncrypt": false
},
{
"kind": "audio",
"uri": "http://skype.com/experiments/rtp-hdrext/fast_bandwidth_feedback#version_2",
"preferredId": 3,
"preferredEncrypt": false
}
],
"fecMechanisms": [
"RED"
]
}
RTCRtpSender.getCapabilities(video):
{
"codecs": [
{
"name": "X-H264UC",
"kind": "video",
"clockRate": 90000,
"preferredPayloadType": 122,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [
{
"type": "x-cinfo",
"parameter": ""
},
{
"type": "x-bwe",
"parameter": ""
},
{
"type": "x-message",
"parameter": "app send:src,x-pli recv:src,x-pli"
}
],
"parameters": {
"packetization-mode": "1",
"mst-mode": "NI-TC"
},
"options": {},
"maxTemporalLayers": 3,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": true
},
{
"name": "H264",
"kind": "video",
"clockRate": 90000,
"preferredPayloadType": 107,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [
{
"type": "x-cinfo",
"parameter": ""
},
{
"type": "x-bwe",
"parameter": ""
},
{
"type": "nack",
"parameter": ""
},
{
"type": "nack",
"parameter": "pli"
},
{
"type": "goog-remb",
"parameter": ""
}
],
"parameters": {
"profile-level-id": "42C02A",
"packetization-mode": "1"
},
"options": {},
"maxTemporalLayers": 3,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "VP8",
"kind": "video",
"clockRate": 90000,
"preferredPayloadType": 100,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [
{
"type": "x-cinfo",
"parameter": ""
},
{
"type": "x-bwe",
"parameter": ""
},
{
"type": "nack",
"parameter": ""
},
{
"type": "nack",
"parameter": "pli"
},
{
"type": "goog-remb",
"parameter": ""
}
],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "rtx",
"kind": "video",
"clockRate": 90000,
"preferredPayloadType": 99,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [],
"parameters": {
"apt": "107",
"rtx-time": "3000"
},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "rtx",
"kind": "video",
"clockRate": 90000,
"preferredPayloadType": 96,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [],
"parameters": {
"apt": "100",
"rtx-time": "3000"
},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
},
{
"name": "x-ulpfecuc",
"kind": "video",
"clockRate": 90000,
"preferredPayloadType": 123,
"maxptime": 0,
"ptime": 0,
"numChannels": 1,
"rtcpFeedback": [],
"parameters": {},
"options": {},
"maxTemporalLayers": 0,
"maxSpatialLayers": 0,
"svcMultiStreamSupport": false
}
],
"headerExtensions": [
{
"kind": "video",
"uri": "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time",
"preferredId": 1,
"preferredEncrypt": false
},
{
"kind": "video",
"uri": "http://skype.com/experiments/rtp-hdrext/fast_bandwidth_feedback#version_2",
"preferredId": 3,
"preferredEncrypt": false
}
],
"fecMechanisms": []
}
Received on Tuesday, 2 January 2018 19:05:54 UTC