Skip to content

Commit 50106a6

Browse files
committed
make it work
1 parent 3be9fc1 commit 50106a6

File tree

3 files changed

+49
-41
lines changed

3 files changed

+49
-41
lines changed

packages/media-parser/src/iterator/buffer-iterator.ts

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ export const getArrayBufferIterator = (
1515
) => {
1616
const counter = makeOffsetCounter(0);
1717
const {
18-
uintArray,
19-
view,
18+
getUint8Array,
19+
getView,
2020
addData,
2121
destroy,
2222
removeBytesRead,
@@ -35,7 +35,7 @@ export const getArrayBufferIterator = (
3535
};
3636

3737
const getSlice = (amount: number) => {
38-
const value = uintArray.slice(
38+
const value = getUint8Array().slice(
3939
counter.getDiscardedOffset(),
4040
counter.getDiscardedOffset() + amount,
4141
);
@@ -81,7 +81,7 @@ export const getArrayBufferIterator = (
8181
};
8282

8383
const getUint8 = () => {
84-
const val = view.getUint8(counter.getDiscardedOffset());
84+
const val = getView().getUint8(counter.getDiscardedOffset());
8585
counter.increment(1);
8686

8787
return val;
@@ -150,13 +150,13 @@ export const getArrayBufferIterator = (
150150
};
151151

152152
const getUint32 = () => {
153-
const val = view.getUint32(counter.getDiscardedOffset());
153+
const val = getView().getUint32(counter.getDiscardedOffset());
154154
counter.increment(4);
155155
return val;
156156
};
157157

158158
const getSyncSafeInt32 = () => {
159-
const val = view.getUint32(counter.getDiscardedOffset());
159+
const val = getView().getUint32(counter.getDiscardedOffset());
160160
counter.increment(4);
161161

162162
return (
@@ -168,13 +168,19 @@ export const getArrayBufferIterator = (
168168
};
169169

170170
const getUint64 = (littleEndian = false) => {
171-
const val = view.getBigUint64(counter.getDiscardedOffset(), littleEndian);
171+
const val = getView().getBigUint64(
172+
counter.getDiscardedOffset(),
173+
littleEndian,
174+
);
172175
counter.increment(8);
173176
return val;
174177
};
175178

176179
const getInt64 = (littleEndian = false) => {
177-
const val = view.getBigInt64(counter.getDiscardedOffset(), littleEndian);
180+
const val = getView().getBigInt64(
181+
counter.getDiscardedOffset(),
182+
littleEndian,
183+
);
178184
counter.increment(8);
179185
return val;
180186
};
@@ -194,25 +200,25 @@ export const getArrayBufferIterator = (
194200
};
195201

196202
const getUint32Le = () => {
197-
const val = view.getUint32(counter.getDiscardedOffset(), true);
203+
const val = getView().getUint32(counter.getDiscardedOffset(), true);
198204
counter.increment(4);
199205
return val;
200206
};
201207

202208
const getInt32Le = () => {
203-
const val = view.getInt32(counter.getDiscardedOffset(), true);
209+
const val = getView().getInt32(counter.getDiscardedOffset(), true);
204210
counter.increment(4);
205211
return val;
206212
};
207213

208214
const getInt32 = () => {
209-
const val = view.getInt32(counter.getDiscardedOffset());
215+
const val = getView().getInt32(counter.getDiscardedOffset());
210216
counter.increment(4);
211217
return val;
212218
};
213219

214220
const bytesRemaining = () => {
215-
return uintArray.byteLength - counter.getDiscardedOffset();
221+
return getUint8Array().byteLength - counter.getDiscardedOffset();
216222
};
217223

218224
const readExpGolomb = () => {
@@ -367,7 +373,7 @@ export const getArrayBufferIterator = (
367373
return new TextDecoder().decode(atom);
368374
},
369375
detectFileType: () => {
370-
return detectFileType(uintArray);
376+
return detectFileType(getUint8Array());
371377
},
372378
getPaddedFourByteNumber,
373379
getMatroskaSegmentId: (): string | null => {
@@ -492,36 +498,36 @@ export const getArrayBufferIterator = (
492498
return actualValue;
493499
},
494500
getInt8: () => {
495-
const val = view.getInt8(counter.getDiscardedOffset());
501+
const val = getView().getInt8(counter.getDiscardedOffset());
496502
counter.increment(1);
497503
return val;
498504
},
499505
getUint16: () => {
500-
const val = view.getUint16(counter.getDiscardedOffset());
506+
const val = getView().getUint16(counter.getDiscardedOffset());
501507
counter.increment(2);
502508
return val;
503509
},
504510
getUint16Le: () => {
505-
const val = view.getUint16(counter.getDiscardedOffset(), true);
511+
const val = getView().getUint16(counter.getDiscardedOffset(), true);
506512
counter.increment(2);
507513
return val;
508514
},
509515
getUint24: () => {
510-
const val1 = view.getUint8(counter.getDiscardedOffset());
511-
const val2 = view.getUint8(counter.getDiscardedOffset() + 1);
512-
const val3 = view.getUint8(counter.getDiscardedOffset() + 2);
516+
const val1 = getView().getUint8(counter.getDiscardedOffset());
517+
const val2 = getView().getUint8(counter.getDiscardedOffset() + 1);
518+
const val3 = getView().getUint8(counter.getDiscardedOffset() + 2);
513519
counter.increment(3);
514520
return (val1 << 16) | (val2 << 8) | val3;
515521
},
516522
getInt24: () => {
517-
const val1 = view.getInt8(counter.getDiscardedOffset());
518-
const val2 = view.getUint8(counter.getDiscardedOffset() + 1);
519-
const val3 = view.getUint8(counter.getDiscardedOffset() + 2);
523+
const val1 = getView().getInt8(counter.getDiscardedOffset());
524+
const val2 = getView().getUint8(counter.getDiscardedOffset() + 1);
525+
const val3 = getView().getUint8(counter.getDiscardedOffset() + 2);
520526
counter.increment(3);
521527
return (val1 << 16) | (val2 << 8) | val3;
522528
},
523529
getInt16: () => {
524-
const val = view.getInt16(counter.getDiscardedOffset());
530+
const val = getView().getInt16(counter.getDiscardedOffset());
525531
counter.increment(2);
526532
return val;
527533
},
@@ -580,13 +586,13 @@ export const getArrayBufferIterator = (
580586
};
581587
},
582588
getFloat64: () => {
583-
const val = view.getFloat64(counter.getDiscardedOffset());
589+
const val = getView().getFloat64(counter.getDiscardedOffset());
584590
counter.increment(8);
585591
return val;
586592
},
587593
readUntilNullTerminator,
588594
getFloat32: () => {
589-
const val = view.getFloat32(counter.getDiscardedOffset());
595+
const val = getView().getFloat32(counter.getDiscardedOffset());
590596
counter.increment(4);
591597
return val;
592598
},

packages/media-parser/src/iterator/buffer-manager.ts

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,12 @@ export const bufferManager = ({
3939
);
4040
}
4141

42-
let uintArray = new Uint8Array(buf.buffer);
43-
uintArray.set(initialData);
42+
buf.uintarray.set(initialData);
4443

45-
let view = new DataView(uintArray.buffer);
44+
let view = new DataView(buf.uintarray.buffer);
4645

4746
const destroy = () => {
48-
uintArray = new Uint8Array(0);
47+
buf.uintarray = new Uint8Array(0);
4948
buf.resize(0);
5049
};
5150

@@ -66,12 +65,12 @@ export const bufferManager = ({
6665
counter.discardBytes(bytesToRemove);
6766

6867
const removedData =
69-
mode === 'download' ? uintArray.slice(0, bytesToRemove) : null;
68+
mode === 'download' ? buf.uintarray.slice(0, bytesToRemove) : null;
7069

71-
const newData = uintArray.slice(bytesToRemove);
72-
uintArray.set(newData);
70+
const newData = buf.uintarray.slice(bytesToRemove);
71+
buf.uintarray.set(newData);
7372
buf.resize(newData.byteLength);
74-
view = new DataView(uintArray.buffer);
73+
view = new DataView(buf.uintarray.buffer);
7574

7675
return {bytesRemoved: bytesToRemove, removedData};
7776
};
@@ -107,16 +106,16 @@ export const bufferManager = ({
107106
}
108107

109108
buf.resize(newLength);
110-
uintArray = new Uint8Array(buf.buffer);
111-
uintArray.set(newData, oldLength);
112-
view = new DataView(uintArray.buffer);
109+
buf.uintarray = new Uint8Array(buf.buffer);
110+
buf.uintarray.set(newData, oldLength);
111+
view = new DataView(buf.uintarray.buffer);
113112
};
114113

115114
const replaceData = (newData: Uint8Array, seekTo: number) => {
116115
buf.resize(newData.byteLength);
117-
uintArray = new Uint8Array(buf.buffer);
118-
uintArray.set(newData);
119-
view = new DataView(uintArray.buffer);
116+
buf.uintarray = new Uint8Array(buf.buffer);
117+
buf.uintarray.set(newData);
118+
view = new DataView(buf.uintarray.buffer);
120119
counter.setDiscardedOffset(seekTo);
121120
// reset counter to 0
122121
counter.decrement(counter.getOffset());
@@ -125,8 +124,8 @@ export const bufferManager = ({
125124
};
126125

127126
return {
128-
view,
129-
uintArray,
127+
getView: () => view,
128+
getUint8Array: () => buf.uintarray,
130129
destroy,
131130
addData,
132131
skipTo,

packages/media-parser/src/iterator/polyfilled-arraybuffer.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
export class ResizableBuffer {
22
buffer: ArrayBuffer;
3+
uintarray: Uint8Array;
34

45
constructor(buffer: ArrayBuffer) {
56
this.buffer = buffer;
7+
this.uintarray = new Uint8Array(buffer);
68
}
79

810
resize(newLength: number) {
@@ -17,6 +19,7 @@ export class ResizableBuffer {
1719
),
1820
);
1921
this.buffer = newBuffer;
22+
this.uintarray = new Uint8Array(newBuffer);
2023
}
2124
}
2225
}

0 commit comments

Comments
 (0)