replace DataView with inline bit twiddling

This commit is contained in:
2025-01-22 23:08:16 -06:00
parent 40adeb920e
commit 070e32bb74
4 changed files with 12 additions and 8 deletions
+1 -2
View File
@@ -10,8 +10,7 @@ export default (buffer: Uint8Array): DataPacketChunk => {
if (chunk.header.hasSubchunks && chunk.chunkData && chunk.header.dataLen) {
let offset = 0;
while (offset < chunk.header.dataLen) {
const view = new DataView(chunk.chunkData.buffer, chunk.chunkData.byteOffset, chunk.chunkData.byteLength);
const chunkId = view.getUint16(offset, true);
const chunkId = (chunk.chunkData.subarray(offset)[1] << 8) + chunk.chunkData.subarray(offset)[0];
switch (chunkId) {
case 0x0000:
data.packetHeader = Decoders.PacketHeaderChunk(chunk.chunkData.subarray(offset));
+1 -2
View File
@@ -10,8 +10,7 @@ export default (buffer: Uint8Array): InfoPacketChunk => {
if (chunk.header.hasSubchunks && chunk.chunkData && chunk.header.dataLen) {
let offset = 0;
while (offset < chunk.header.dataLen) {
const view = new DataView(chunk.chunkData.buffer, chunk.chunkData.byteOffset, chunk.chunkData.byteLength);
const chunkId = view.getUint16(offset, true);
const chunkId = (chunk.chunkData.subarray(offset)[1] << 8) + chunk.chunkData.subarray(offset)[0];
switch (chunkId) {
case 0x0000:
data.packetHeader = Decoders.PacketHeaderChunk(chunk.chunkData.subarray(offset));
+1 -2
View File
@@ -8,8 +8,7 @@ export default (buffer: Uint8Array): InfoTrackerChunk => {
if (chunk.header.hasSubchunks && chunk.chunkData && chunk.header.dataLen) {
let offset = 0;
while (offset < chunk.header.dataLen) {
const view = new DataView(chunk.chunkData.buffer, chunk.chunkData.byteOffset, chunk.chunkData.byteLength);
const chunkId = view.getUint16(offset, true);
const chunkId = (chunk.chunkData.subarray(offset)[1] << 8) + chunk.chunkData.subarray(offset)[0];
switch (chunkId) {
case 0x0000: {
const data: InfoTrackerChunkData = {
+9 -2
View File
@@ -4,9 +4,16 @@ import { PacketHeaderChunk, PacketHeaderChunkData } from '../models/packet-heade
export default (buffer: Uint8Array): PacketHeaderChunk => {
const chunk = Decoders.Chunk(buffer);
const view = new DataView(chunk.chunkData.buffer, chunk.chunkData.byteOffset, chunk.chunkData.byteLength);
let packetTimestamp = BigInt(chunk.chunkData[7]) << BigInt(56);
packetTimestamp += BigInt(chunk.chunkData[6]) << BigInt(48);
packetTimestamp += BigInt(chunk.chunkData[5]) << BigInt(40);
packetTimestamp += BigInt(chunk.chunkData[4]) << BigInt(32);
packetTimestamp += BigInt(chunk.chunkData[3]) << BigInt(24);
packetTimestamp += BigInt(chunk.chunkData[2]) << BigInt(16);
packetTimestamp += BigInt(chunk.chunkData[1]) << BigInt(8);
packetTimestamp += BigInt(chunk.chunkData[0]);
const data: PacketHeaderChunkData = {
packetTimestamp: view.getBigUint64(0, true),
packetTimestamp,
versionHigh: chunk.chunkData[8],
versionLow: chunk.chunkData[9],
frameId: chunk.chunkData[10],