mirror of
https://github.com/arcodange-org/mediabunny.git
synced 2026-09-28 11:23:45 +02:00
Add Matroska muxer
This commit is contained in:
+36
@@ -13,3 +13,39 @@ export const last = <T>(arr: T[]) => {
|
||||
export const isU32 = (value: number) => {
|
||||
return value >= 0 && value < 2**32;
|
||||
};
|
||||
|
||||
export const readBits = (bytes: Uint8Array, start: number, end: number) => {
|
||||
let result = 0;
|
||||
|
||||
for (let i = start; i < end; i++) {
|
||||
let byteIndex = Math.floor(i / 8);
|
||||
let byte = bytes[byteIndex]!;
|
||||
let bitIndex = 0b111 - (i & 0b111);
|
||||
let bit = (byte & (1 << bitIndex)) >> bitIndex;
|
||||
|
||||
result <<= 1;
|
||||
result |= bit;
|
||||
}
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
export const writeBits = (bytes: Uint8Array, start: number, end: number, value: number) => {
|
||||
for (let i = start; i < end; i++) {
|
||||
let byteIndex = Math.floor(i / 8);
|
||||
let byte = bytes[byteIndex]!;
|
||||
let bitIndex = 0b111 - (i & 0b111);
|
||||
|
||||
byte &= ~(1 << bitIndex);
|
||||
byte |= ((value & (1 << (end - i - 1))) >> (end - i - 1)) << bitIndex;
|
||||
bytes[byteIndex] = byte;
|
||||
}
|
||||
};
|
||||
|
||||
export const toUint8Array = (source: AllowSharedBufferSource): Uint8Array => {
|
||||
if (source instanceof ArrayBuffer) {
|
||||
return new Uint8Array(source);
|
||||
} else {
|
||||
return new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user