New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

codec-parser

Package Overview
Dependencies
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

codec-parser - npm Package Compare versions

Comparing version 2.4.1 to 2.4.2

2

package.json
{
"name": "codec-parser",
"version": "2.4.1",
"version": "2.4.2",
"description": "Library that parses raw data from audio codecs into frames containing data, header values, duration, and other information.",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -48,2 +48,3 @@ /* Copyright 2020-2023 Ethan Halsall

this._identificationHeader = null;
this._setupComplete = false;

@@ -62,19 +63,22 @@ this._mode = {

[parseOggPage](oggPage) {
const oggPageSegments = frameStore.get(oggPage)[segments];
oggPage[codecFrames] = [];
if (oggPage[pageSequenceNumber] === 0) {
// Identification header
for (const oggPageSegment of frameStore.get(oggPage)[segments]) {
if (oggPageSegment[0] === 1) {
// Identification header
this._headerCache[enable]();
this._identificationHeader = oggPage[data];
} else if (oggPage[pageSequenceNumber] === 1) {
// gather WEBM CodecPrivate data
if (oggPageSegments[1]) {
this._vorbisComments = oggPageSegments[0];
this._vorbisSetup = oggPageSegments[1];
this._headerCache[enable]();
this._identificationHeader = oggPage[data];
this._setupComplete = false;
} else if (oggPageSegment[0] === 3) {
// comment header
this._mode = this._parseSetupHeader(oggPageSegments[1]);
}
} else {
oggPage[codecFrames] = oggPageSegments.map((segment) => {
this._vorbisComments = oggPageSegment;
} else if (oggPageSegment[0] === 5) {
// setup header
this._vorbisSetup = oggPageSegment;
this._mode = this._parseSetupHeader(oggPageSegment);
this._setupComplete = true;
} else if (this._setupComplete) {
const header = VorbisHeader[getHeaderFromUint8Array](

@@ -88,14 +92,16 @@ this._identificationHeader,

if (header) {
return new VorbisFrame(
segment,
header,
this._getSamples(segment, header)
oggPage[codecFrames].push(
new VorbisFrame(
oggPageSegment,
header,
this._getSamples(oggPageSegment, header)
)
);
} else {
this._codecParser[logError](
"Failed to parse Ogg Vorbis Header",
"Not a valid Ogg Vorbis file"
);
}
this._codecParser[logError](
"Failed to parse Ogg Vorbis Header",
"Not a valid Ogg Vorbis file"
);
});
}
}

@@ -102,0 +108,0 @@

@@ -39,2 +39,4 @@ /* Copyright 2020-2023 Ethan Halsall

uint8Array,
isLastPage,
streamSerialNumber,
} from "../../constants.js";

@@ -50,13 +52,11 @@

export default class OggParser extends Parser {
class OggStream {
constructor(codecParser, headerCache, onCodec) {
super(codecParser, headerCache);
this._codecParser = codecParser;
this._headerCache = headerCache;
this._onCodec = onCodec;
this._onCodec = onCodec;
this.Frame = OggPage;
this.Header = OggPageHeader;
this._continuedPacket = new uint8Array();
this._codec = null;
this._continuedPacket = new uint8Array();
this._pageSequenceNumber = 0;
this._isSupported = null;
}

@@ -80,3 +80,3 @@

_checkForIdentifier({ data }) {
_checkCodecSupport({ data }) {
const idString = bytesToString(data[subarray](0, 8));

@@ -86,4 +86,2 @@

case "fishead\0":
case "fisbone\0":
case "index\0\0\0":
return false; // ignore ogg skeleton packets

@@ -99,2 +97,4 @@ case "OpusHead":

return true;
default:
return false;
}

@@ -120,4 +120,7 @@ }

*[parseFrame]() {
const oggPage = yield* this[fixedLengthFrameSync](true);
_parsePage(oggPage) {
if (this._isSupported === null) {
this._pageSequenceNumber = oggPage[pageSequenceNumber];
this._isSupported = this._checkCodecSupport(oggPage);
}

@@ -130,3 +133,2 @@ this._checkPageSequenceNumber(oggPage);

let offset = 0;
oggPageStore[segments] = headerData[pageSegmentTable].map((segmentLength) =>

@@ -157,8 +159,49 @@ oggPage[data][subarray](offset, (offset += segmentLength))

if (this._codec || this._checkForIdentifier(oggPage)) {
if (this._isSupported) {
const frame = this._parser[parseOggPage](oggPage);
this._codecParser[mapFrameStats](frame);
return frame;
} else {
return oggPage;
}
}
}
export default class OggParser extends Parser {
constructor(codecParser, headerCache, onCodec) {
super(codecParser, headerCache);
this._onCodec = onCodec;
this.Frame = OggPage;
this.Header = OggPageHeader;
this._streams = new Map();
this._currentSerialNumber = null;
}
get [codec]() {
const oggStream = this._streams.get(this._currentSerialNumber);
return oggStream ? oggStream.codec : "";
}
*[parseFrame]() {
const oggPage = yield* this[fixedLengthFrameSync](true);
this._currentSerialNumber = oggPage[streamSerialNumber];
let oggStream = this._streams.get(this._currentSerialNumber);
if (!oggStream) {
oggStream = new OggStream(
this._codecParser,
this._headerCache,
this._onCodec
);
this._streams.set(this._currentSerialNumber, oggStream);
}
if (oggPage[isLastPage]) this._streams.delete(this._currentSerialNumber);
return oggStream._parsePage(oggPage);
}
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc