Add StandardJS workflow

Been running these locally only.
This commit is contained in:
Sean DuBois
2022-02-05 21:56:28 -05:00
parent 7c8064052e
commit ce533d527f
10 changed files with 114 additions and 97 deletions

View File

@@ -3,17 +3,17 @@
// cipherKey that video is encrypted with
const cipherKey = 0xAA
let pc = new RTCPeerConnection({encodedInsertableStreams: true, forceEncodedVideoInsertableStreams: true})
let log = msg => {
const pc = new RTCPeerConnection({ encodedInsertableStreams: true, forceEncodedVideoInsertableStreams: true })
const log = msg => {
document.getElementById('div').innerHTML += msg + '<br>'
}
// Offer to receive 1 video
let transceiver = pc.addTransceiver('video')
const transceiver = pc.addTransceiver('video')
// The API has seen two iterations, support both
// In the future this will just be `createEncodedStreams`
let receiverStreams = getInsertableStream(transceiver)
const receiverStreams = getInsertableStream(transceiver)
// boolean controlled by checkbox to enable/disable encryption
let applyDecryption = true
@@ -24,8 +24,8 @@ window.toggleDecryption = () => {
// Loop that is called for each video frame
const reader = receiverStreams.readable.getReader()
const writer = receiverStreams.writable.getWriter()
reader.read().then(function processVideo({ done, value }) {
let decrypted = new DataView(value.data)
reader.read().then(function processVideo ({ done, value }) {
const decrypted = new DataView(value.data)
if (applyDecryption) {
for (let i = 0; i < decrypted.buffer.byteLength; i++) {
@@ -41,7 +41,7 @@ reader.read().then(function processVideo({ done, value }) {
// Fire when remote video arrives
pc.ontrack = function (event) {
document.getElementById('remote-video').srcObject = event.streams[0]
document.getElementById('remote-video').style = ""
document.getElementById('remote-video').style = ''
}
// Populate SDP field when finished gathering
@@ -54,7 +54,7 @@ pc.onicecandidate = event => {
pc.createOffer().then(d => pc.setLocalDescription(d)).catch(log)
window.startSession = () => {
let sd = document.getElementById('remoteSessionDescription').value
const sd = document.getElementById('remoteSessionDescription').value
if (sd === '') {
return alert('Session Description must not be empty')
}
@@ -68,8 +68,8 @@ window.startSession = () => {
// DOM code to show banner if insertable streams not supported
let insertableStreamsSupported = true
let updateSupportBanner = () => {
let el = document.getElementById('no-support-banner')
const updateSupportBanner = () => {
const el = document.getElementById('no-support-banner')
if (insertableStreamsSupported && el) {
el.style = 'display: none'
}
@@ -77,7 +77,7 @@ let updateSupportBanner = () => {
document.addEventListener('DOMContentLoaded', updateSupportBanner)
// Shim to support both versions of API
function getInsertableStream(transceiver) {
function getInsertableStream (transceiver) {
let insertableStreams = null
if (transceiver.receiver.createEncodedVideoStreams) {
insertableStreams = transceiver.receiver.createEncodedVideoStreams()
@@ -88,7 +88,7 @@ function getInsertableStream(transceiver) {
if (!insertableStreams) {
insertableStreamsSupported = false
updateSupportBanner()
throw 'Insertable Streams are not supported'
throw new Error('Insertable Streams are not supported')
}
return insertableStreams