| let videoFrameMap = new Map(); | |
| let encodedVideoChunkMap = new Map(); | |
| self.onmessage = (e) => { | |
| if (e.data == 'create-VideoFrame') { | |
| let frameOrError = null; | |
| try { | |
| frameOrError = new VideoFrame( | |
| new Uint8Array([ | |
| 1, 2, 3, 4, 5, 6, 7, 8, | |
| 9, 10, 11, 12, 13, 14, 15, 16, | |
| ]), { | |
| timestamp: 0, | |
| codedWidth: 2, | |
| codedHeight: 2, | |
| format: 'RGBA', | |
| }); | |
| } catch (error) { | |
| frameOrError = error | |
| } | |
| e.source.postMessage(frameOrError); | |
| return; | |
| } | |
| if (e.data == 'create-EncodedVideoChunk') { | |
| let chunkOrError = null; | |
| try { | |
| chunkOrError = new EncodedVideoChunk({ | |
| type: 'key', | |
| timestamp: 0, | |
| duration: 1, | |
| data: new Uint8Array([2, 3, 4, 5]) | |
| }); | |
| } catch (error) { | |
| chunkOrError = error | |
| } | |
| e.source.postMessage(chunkOrError); | |
| return; | |
| } | |
| if (e.data.hasOwnProperty('videoFrameId')) { | |
| e.source.postMessage( | |
| videoFrameMap.get(e.data.videoFrameId) ? 'RECEIVED' : 'NOT_RECEIVED'); | |
| return; | |
| } | |
| if (e.data.hasOwnProperty('encodedVideoChunkId')) { | |
| e.source.postMessage( | |
| encodedVideoChunkMap.get(e.data.encodedVideoChunkId) ? 'RECEIVED' : 'NOT_RECEIVED'); | |
| return; | |
| } | |
| if (e.data.toString() == '[object VideoFrame]') { | |
| videoFrameMap.set(e.data.timestamp, e.data); | |
| return; | |
| } | |
| if (e.data.toString() == '[object EncodedVideoChunk]') { | |
| encodedVideoChunkMap.set(e.data.timestamp, e.data); | |
| } | |
| }; |