Skip to content

Commit

Permalink
feat(HLS): Add HLS support for non-sequence mode
Browse files Browse the repository at this point in the history
  • Loading branch information
avelad committed Nov 4, 2022
1 parent 9cd4fee commit 8aa4cea
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 6 deletions.
4 changes: 2 additions & 2 deletions externs/shaka/player.js
Original file line number Diff line number Diff line change
Expand Up @@ -481,13 +481,13 @@ shaka.extern.MetadataRawFrame;
/**
* @typedef {{
* key: string,
* data: (ArrayBuffer|string),
* data: (ArrayBuffer|string|number),
* description: string
* }}
*
* @description metadata frame parsed.
* @property {string} key
* @property {ArrayBuffer|string} data
* @property {ArrayBuffer|string|number} data
* @property {string} description
* @exportDoc
*/
Expand Down
15 changes: 14 additions & 1 deletion lib/media/media_source_engine.js
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,7 @@ shaka.media.MediaSourceEngine = class {
this.reinitText(mimeType, sequenceMode);
} else {
let needTransmux = forceTransmux;
if (sequenceMode &&
if (!sequenceMode &&
shaka.media.MediaSourceEngine.RAW_FORMATS.includes(mimeType)) {
needTransmux = true;
}
Expand Down Expand Up @@ -609,6 +609,19 @@ shaka.media.MediaSourceEngine = class {
if (shaka.media.MediaSourceEngine.RAW_FORMATS.includes(mimeType)) {
const frames = shaka.util.Id3Utils.getID3Frames(uint8ArrayData);
if (frames.length && reference) {
const metadataTimestamp = frames.find((frame) => {
return frame.description ===
'com.apple.streaming.transportStreamTimestamp';
});
if (metadataTimestamp && metadataTimestamp.data) {
const timestampOffset = reference.startTime -
Math.round(metadataTimestamp.data) / 1000;
console.log(timestampOffset)
this.enqueueOperation_(contentType, () => this.abort_(contentType));
this.enqueueOperation_(
contentType,
() => this.setTimestampOffset_(contentType, timestampOffset));
}
/** @private {shaka.extern.ID3Metadata} */
const metadata = {
cueTime: reference.startTime,
Expand Down
22 changes: 19 additions & 3 deletions lib/util/id3_utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -211,10 +211,26 @@ shaka.util.Id3Utils = class {
}
const text = StringUtils.fromUTF8(
BufferUtils.toUint8(frame.data, 0, textEndIndex));
const data = BufferUtils.toArrayBuffer(
frame.data.subarray(text.length + 1));
metadataFrame.description = text;
metadataFrame.data = data;
if (text == 'com.apple.streaming.transportStreamTimestamp') {
const data = frame.data.subarray(text.length + 1);
// timestamp is 33 bit expressed as a big-endian eight-octet number,
// with the upper 31 bits set to zero.
const pts33Bit = data[3] & 0x1;
let timestamp =
(data[4] << 23) + (data[5] << 15) + (data[6] << 7) + data[7];
timestamp /= 45;

if (pts33Bit) {
timestamp += 47721858.84;
} // 2^32 / 90

metadataFrame.data = timestamp;
} else {
const data = BufferUtils.toArrayBuffer(
frame.data.subarray(text.length + 1));
metadataFrame.data = data;
}
return metadataFrame;
} else if (frame.type[0] === 'T') {
/*
Expand Down

0 comments on commit 8aa4cea

Please sign in to comment.