From 6f8216a5fc5997a263f9dfc54e2a3de5a00ef9a4 Mon Sep 17 00:00:00 2001 From: Robin Raymond Date: Tue, 15 Jul 2014 21:56:15 -0400 Subject: [PATCH 1/2] Added section on WebRTC 1.0 compatibility issues, responding to Issue #66 Added Identity support, as described in Issue #78 Reworked getStats method, as described in Issue #85 Removed ICE restart method described in Issue #93 Addressed CNAME and synchronization context issues described in Issue #94 Fixed WebIDL issues noted in Issue #97 Addressed NITs described in Issue #99 DTLS transport issues fixed as described in Issue #100 ICE transport issues fixed as described in Issue #101 ICE transport controller fixes made as described in Issue #102 Sender and Receiver object fixes made as described in Issue #103 Fixed RTCRtpEncodingParameter default issues described in Issue #104 Fixed 'Big Picture' issues descibed in Issue #105 Fixed RTCRtpParameter default issues described in Issue #106 Added a multi-stream capability, as noted in Issue #108 Removed quality scalability capabilities and parameters, as described in Issue #109 Added scalability examples as requested in Issue #110 Addressed WebRTC 1.0 Data Channel compatibility issue described in Issue #111 Removed header extensions from RTCRtpCodecParameters as described in Issue #113 Addressed RTP/RTCP non-mux issues with IdP as described in Issue #114 Added getParameter methods to RTCRtpSender and RTCRtpReceiver objects, as described in Issue #116 Added layering diagrams as requested in Issue #117 Added a typedef for payload type, as described in Issue #118 Moved onerror from the RTCIceTransport object to the RTCIceListener object as described in Issue #121 Added explanation of Voice Activity Detection (VAD), responding to Issue #129 Clarified the meaning of maxTemporalLayers and maxSpatialLayers, as noted in Issue #130 Added RFC 6051 to the list of header extensions and removed RFC 5450, as noted in Issue #131 Addressed ICE terminology issues, as described in Issue #132 Separated references into Normative and Informative, as noted in Issue #133 --- images/2-layer-spatial-temporal.png | Bin 0 -> 30689 bytes images/2-layer-spatialsim-temporal.png | Bin 0 -> 29123 bytes images/3-layer-temporal.png | Bin 0 -> 19829 bytes images/ortc-big-picture.png | Bin 64127 -> 52300 bytes ortc.html | 1740 +++++++++++++++++++----- 5 files changed, 1417 insertions(+), 323 deletions(-) create mode 100644 images/2-layer-spatial-temporal.png create mode 100644 images/2-layer-spatialsim-temporal.png create mode 100644 images/3-layer-temporal.png diff --git a/images/2-layer-spatial-temporal.png b/images/2-layer-spatial-temporal.png new file mode 100644 index 0000000000000000000000000000000000000000..039d8d7dc6562e7b4fa8030464db4313b894a9e9 GIT binary patch literal 30689 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