UNPKG

rtp.js

Version:

RTP stack for Node.js and browser written in TypeScript

50 lines (49 loc) 1.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.read3BytesInDataView = read3BytesInDataView; exports.write3BytesInDataView = write3BytesInDataView; exports.readSigned3BytesInDataView = readSigned3BytesInDataView; exports.writeSigned3BytesInDataView = writeSigned3BytesInDataView; /** * Read 3 bytes starting from byte `pos` in `view` as unsigned value. * * @category Utils * @hidden */ function read3BytesInDataView({ view, pos, }) { return (view.getUint8(pos) << 16) + view.getUint16(pos + 1); } /** * Write an unsigned value in 3 bytes starting from byte `pos` in `view`. * * @category Utils * @hidden */ function write3BytesInDataView({ view, pos, value, }) { view.setUint8(pos, value >> 16); view.setUint16(pos + 1, value); } /** * Read 3 bytes starting from byte `pos` in `view` as signed value. * * @category Utils * @hidden */ function readSigned3BytesInDataView({ view, pos, }) { const byte2 = view.getUint8(pos); const byte1 = view.getUint8(pos + 1); const byte0 = view.getUint8(pos + 2); // Check bit 7 (sign). const extension = byte2 & 0b10000000 ? 0b11111111 : 0b00000000; return byte0 | (byte1 << 8) | (byte2 << 16) | (extension << 24); } /** * Write a signed value in 3 bytes starting from byte `pos` in `view`. * * @category Utils * @hidden */ function writeSigned3BytesInDataView({ view, pos, value, }) { view.setInt8(pos, value >> 16); view.setUint16(pos + 1, value); }