Skip to content

Commit

Permalink
fix: ogg continued packet logic, see eshaz/wasm-audio-decoders#82
Browse files Browse the repository at this point in the history
  • Loading branch information
eshaz committed Jun 8, 2023
1 parent 5234dd8 commit c65ac5e
Show file tree
Hide file tree
Showing 15 changed files with 136,893 additions and 39,420 deletions.
20 changes: 10 additions & 10 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "codec-parser",
"version": "2.4.0",
"version": "2.4.1",
"description": "Library that parses raw data from audio codecs into frames containing data, header values, duration, and other information.",
"main": "index.js",
"types": "index.d.ts",
Expand Down Expand Up @@ -37,8 +37,8 @@
"sideEffects": false,
"homepage": "https://github.com/eshaz/codec-parser#readme",
"devDependencies": {
"@types/jest": "^29.5.1",
"@types/jest": "^29.5.2",
"jest": "^29.5.0",
"prettier": "^2.8.7"
"prettier": "^2.8.8"
}
}
19 changes: 11 additions & 8 deletions src/containers/ogg/OggParser.js
Original file line number Diff line number Diff line change
Expand Up @@ -126,22 +126,25 @@ export default class OggParser extends Parser {
oggPage[data][subarray](offset, (offset += segmentLength))
);

// prepend any existing continued packet data
if (this._continuedPacket[length]) {
oggPageStore[segments][0] = concatBuffers(
this._continuedPacket,
oggPageStore[segments][0]
);

this._continuedPacket = new uint8Array();
}

// save any new continued packet data
if (
headerData[pageSegmentBytes][headerData[pageSegmentBytes][length] - 1] ===
0xff
) {
// continued packet
this._continuedPacket = concatBuffers(
this._continuedPacket,
oggPageStore[segments].pop()
);
} else if (this._continuedPacket[length]) {
oggPageStore[segments][0] = concatBuffers(
this._continuedPacket,
oggPageStore[segments][0]
);

this._continuedPacket = new uint8Array();
}

if (this._codec || this._checkForIdentifier(oggPage)) {
Expand Down
5 changes: 3 additions & 2 deletions test/CodecParser.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -247,11 +247,11 @@ describe("CodecParser", () => {

describe("Ogg Flac", () => {
testParser("ogg.flac", mimeType, "flac", 742, 0);
testParser("ogg.flac.samplerate_50000", mimeType, "flac", 216, 0);
testParser("ogg.flac.samplerate_50000", mimeType, "flac", 217, 0);
testParser("ogg.flac.samplerate_12345", mimeType, "flac", 178, 0);
testParser("ogg.flac.blocksize_65535", mimeType, "flac", 13, 0);
testParser("ogg.flac.blocksize_64", mimeType, "flac", 13137, 0);
testParser("ogg.flac.blocksize_variable_1", mimeType, "flac", 445, 0);
testParser("ogg.flac.blocksize_variable_1", mimeType, "flac", 446, 0);
testParser("ogg.flac.blocksize_variable_2", mimeType, "flac", 478, 0);
testParser("ogg.flac.utf8_frame_number", mimeType, "flac", 106, 0);
});
Expand All @@ -268,6 +268,7 @@ describe("CodecParser", () => {
testParser("ogg.vorbis", mimeType, "vorbis", 2441, 0);
testParser("ogg.vorbis.extra_metadata", mimeType, "vorbis", 1647);
testParser("ogg.vorbis.fishead", mimeType, "vorbis", 1365);
testParser("ogg.vorbis.continued", mimeType, "vorbis", 1151);
});
});

Expand Down
Loading

0 comments on commit c65ac5e

Please sign in to comment.