15. layer
● base layer
○ lowest quality for video conference
○ small size
○ error correction
● enhancement layer
○ merge with base layer
○ more size
○ fallback to base layer if lost
● layer choice
○ layer routing server choice
○ negotiation, bandwidth estimation etc
15
18. before / after PeerConnection
18
// before
let peer = new PeerConnection();
// call these during singalling
peer.addStream();
peer.onnegotiationneeded;
peer.createOffer/Answer();
peer.setLocal/RemoteDescription();
peer.onicecandidate;
peer.addIceCandidate();
// ALL API are on PeerConnection Class
19. before / after PeerConnection
19
// after
let iceGatherer = new RTCIceGatherer(iceGatherOptions);
let iceTransport = new RTCIceTransport(iceGatherer);
let dtlsTransport = new RTCDtlsTransport(iceTransport);
let rtpSender = new RTCRtpSender(mediaStreamTrack, dtlsTransport);
let rtpReceiver = new RTCRtpReceiver(dtlsTransport);
let sendCapas = RTCRtpSender.getCapabilities('video');
let recvCapas = RTCRtpReceiver.getCapabilities('video');
// exchange caps
// ALL API are on each Classes
20. before / after DataChannel
20
// after
let iceGatherer = new RTCIceGatherer(iceGatherOptions);
let iceTransport = new RTCIceTransport(iceGatherer);
let dtlsTransport = new RTCDtlsTransport(iceTransport);
let sctpTransport = new RTCSctpTransport(dtlsTransport);
let channel = new RTCDataChannel(sctpTransport);
// before
peerConnection.createDataChannel((channel) => {
});