Implement more robust broadcast chunk header detection (#10006)
This commit is contained in:
parent
e9d723269f
commit
269d1622b9
2 changed files with 43 additions and 13 deletions
|
@ -67,8 +67,10 @@ describe("VoiceBroadcastRecorder", () => {
|
|||
|
||||
describe("instance", () => {
|
||||
const chunkLength = 30;
|
||||
const headers1 = new Uint8Array([1, 2]);
|
||||
const headers2 = new Uint8Array([3, 4]);
|
||||
// 0... OpusHead
|
||||
const headers1 = new Uint8Array([...Array(28).fill(0), 79, 112, 117, 115, 72, 101, 97, 100]);
|
||||
// 0... OpusTags
|
||||
const headers2 = new Uint8Array([...Array(28).fill(0), 79, 112, 117, 115, 84, 97, 103, 115]);
|
||||
const chunk1 = new Uint8Array([5, 6]);
|
||||
const chunk2a = new Uint8Array([7, 8]);
|
||||
const chunk2b = new Uint8Array([9, 10]);
|
||||
|
@ -79,12 +81,16 @@ describe("VoiceBroadcastRecorder", () => {
|
|||
let onChunkRecorded: (chunk: ChunkRecordedPayload) => void;
|
||||
|
||||
const simulateFirstChunk = (): void => {
|
||||
// send headers in wrong order and multiple times to test robustness for that
|
||||
voiceRecording.onDataAvailable(headers2);
|
||||
voiceRecording.onDataAvailable(headers1);
|
||||
voiceRecording.onDataAvailable(headers1);
|
||||
voiceRecording.onDataAvailable(headers2);
|
||||
// set recorder seconds to something greater than the test chunk length of 30
|
||||
// @ts-ignore
|
||||
voiceRecording.recorderSeconds = 42;
|
||||
voiceRecording.onDataAvailable(chunk1);
|
||||
voiceRecording.onDataAvailable(headers1);
|
||||
};
|
||||
|
||||
const expectOnFirstChunkRecorded = (): void => {
|
||||
|
@ -155,7 +161,7 @@ describe("VoiceBroadcastRecorder", () => {
|
|||
expect(voiceBroadcastRecorder.contentType).toBe(contentType);
|
||||
});
|
||||
|
||||
describe("when the first page from recorder has been received", () => {
|
||||
describe("when the first header from recorder has been received", () => {
|
||||
beforeEach(() => {
|
||||
voiceRecording.onDataAvailable(headers1);
|
||||
});
|
||||
|
@ -163,7 +169,7 @@ describe("VoiceBroadcastRecorder", () => {
|
|||
itShouldNotEmitAChunkRecordedEvent();
|
||||
});
|
||||
|
||||
describe("when a second page from recorder has been received", () => {
|
||||
describe("when the second header from recorder has been received", () => {
|
||||
beforeEach(() => {
|
||||
voiceRecording.onDataAvailable(headers1);
|
||||
voiceRecording.onDataAvailable(headers2);
|
||||
|
@ -229,6 +235,10 @@ describe("VoiceBroadcastRecorder", () => {
|
|||
|
||||
// simulate a second chunk
|
||||
voiceRecording.onDataAvailable(chunk2a);
|
||||
|
||||
// send headers again to test robustness for that
|
||||
voiceRecording.onDataAvailable(headers2);
|
||||
|
||||
// add another 30 seconds for the next chunk
|
||||
// @ts-ignore
|
||||
voiceRecording.recorderSeconds = 72;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue