Skip to content

Commit d6d05af

Browse files
committed
refactor scripts
1 parent 13a3ea5 commit d6d05af

File tree

3 files changed

+31
-15
lines changed

3 files changed

+31
-15
lines changed

scripts/e2e-audio-stats.js

+10-6
Original file line numberDiff line numberDiff line change
@@ -120,13 +120,17 @@ webrtcperf.applyAudioTimestampWatermark = mediaStream => {
120120
return newMediaStream
121121
}
122122

123-
let processingAudioTracks = 0
123+
webrtcperf.processingAudioTracks = new Set()
124124

125-
window.recognizeAudioTimestampWatermark = track => {
126-
if (processingAudioTracks > 4) {
125+
webrtcperf.recognizeAudioTimestampWatermark = track => {
126+
if (webrtcperf.processingAudioTracks.has(track)) return
127+
if (webrtcperf.processingAudioTracks.size > 4) {
127128
return
128129
}
129-
processingAudioTracks += 1
130+
webrtcperf.processingAudioTracks.add(track)
131+
track.addEventListener('ended', () => {
132+
webrtcperf.processingAudioTracks.delete(track)
133+
})
130134

131135
const ggwave = webrtcperf.ggwave
132136
const samplesPerFrame = 1024
@@ -150,7 +154,6 @@ window.recognizeAudioTimestampWatermark = track => {
150154
log(`AudioTimestampWatermark rx init failed: ${instance}`)
151155
return
152156
}
153-
processingAudioTracks += 1
154157
}
155158

156159
try {
@@ -191,11 +194,12 @@ window.recognizeAudioTimestampWatermark = track => {
191194
}
192195
},
193196
close() {
194-
processingAudioTracks -= 1
197+
webrtcperf.processingAudioTracks.delete(track)
195198
if (instance) ggwave.free(instance)
196199
},
197200
abort(err) {
198201
log('AudioTimestampWatermark error:', err)
202+
webrtcperf.processingAudioTracks.delete(track)
199203
},
200204
},
201205
new CountQueuingStrategy({ highWaterMark: 100 }),

scripts/e2e-video-stats.js

+19-7
Original file line numberDiff line numberDiff line change
@@ -205,18 +205,25 @@ async function loadTesseract() {
205205
return await window._tesseractData
206206
}
207207

208+
webrtcperf.processingVideoTracks = new Set()
209+
208210
/**
209211
* recognizeVideoTimestampWatermark
210-
* @param {MediaStreamTrack} videoTrack
212+
* @param {MediaStreamTrack} track
211213
* @param {number} measureInterval
212214
*/
213-
webrtcperf.recognizeVideoTimestampWatermark = async (videoTrack, measureInterval = 5) => {
214-
log(`recognizeVideoTimestampWatermark ${videoTrack.id} ${videoTrack.label}`, videoTrack.getSettings())
215+
webrtcperf.recognizeVideoTimestampWatermark = async (track, measureInterval = 5) => {
216+
if (webrtcperf.processingVideoTracks.has(track.id)) return
217+
webrtcperf.processingVideoTracks.add(track)
218+
track.addEventListener('ended', () => {
219+
webrtcperf.processingVideoTracks.delete(track)
220+
})
221+
log(`recognizeVideoTimestampWatermark ${track.id} ${track.label}`, track.getSettings())
215222
const { scheduler } = await loadTesseract()
216223
let lastTimestamp = 0
217224

218225
const trackProcessor = new window.MediaStreamTrackProcessor({
219-
track: videoTrack,
226+
track: track,
220227
})
221228
const writableStream = new window.WritableStream(
222229
{
@@ -226,7 +233,7 @@ webrtcperf.recognizeVideoTimestampWatermark = async (videoTrack, measureInterval
226233

227234
if (timestamp - lastTimestamp > measureInterval * 1000000 && codedWidth && codedHeight) {
228235
lastTimestamp = timestamp
229-
const textHeight = Math.round(Math.round(codedHeight / 18) * 1.2)
236+
const textHeight = Math.max(Math.round(codedHeight / 15), 24)
230237
const bitmap = await createImageBitmap(videoFrame, 0, 0, codedWidth, textHeight)
231238
const canvas = new OffscreenCanvas(codedWidth, textHeight)
232239
const ctx = canvas.getContext('bitmaprenderer')
@@ -257,12 +264,17 @@ webrtcperf.recognizeVideoTimestampWatermark = async (videoTrack, measureInterval
257264
}
258265
videoFrame.close()
259266
},
260-
close() {},
267+
close() {
268+
webrtcperf.processingVideoTracks.delete(track)
269+
},
261270
abort(err) {
262271
log('WritableStream error:', err)
272+
webrtcperf.processingVideoTracks.delete(track)
263273
},
264274
},
265275
new CountQueuingStrategy({ highWaterMark: 15 }),
266276
)
267-
trackProcessor.readable.pipeTo(writableStream)
277+
trackProcessor.readable.pipeTo(writableStream).catch(err => {
278+
log(`recognizeVideoTimestampWatermark error: ${err.message}`)
279+
})
268280
}

scripts/peer-connection.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* global webrtcperf, log, PeerConnections, handleTransceiverForInsertableStreams, handleTransceiverForPlayoutDelayHint, handleTransceiverForJitterBufferTarget, recognizeAudioTimestampWatermark, saveMediaTrack, stopSaveMediaTrack */
1+
/* global webrtcperf, log, PeerConnections, handleTransceiverForInsertableStreams, handleTransceiverForPlayoutDelayHint, handleTransceiverForJitterBufferTarget, saveMediaTrack, stopSaveMediaTrack */
22

33
const timestampInsertableStreams = !!window.PARAMS?.timestampInsertableStreams
44

@@ -320,7 +320,7 @@ window.RTCPeerConnection = function (conf, options) {
320320
}
321321
} else if (receiver.track.kind === 'audio') {
322322
if (webrtcperf.enabledForSession(window.PARAMS?.timestampWatermarkAudio)) {
323-
recognizeAudioTimestampWatermark(receiver.track)
323+
webrtcperf.recognizeAudioTimestampWatermark(receiver.track)
324324
}
325325
if (webrtcperf.enabledForSession(window.PARAMS?.saveRecvAudioTrack)) {
326326
saveMediaTrack(receiver.track, 'recv').catch(err => log(`saveMediaTrack error: ${err.message}`))

0 commit comments

Comments
 (0)