Skip to content

Commit 6d7fbbe

Browse files
aveladjoeyparrish
authored andcommitted
fix: Fix metadata timing when using TS (#7478)
Fixes #7473
1 parent 7e279fa commit 6d7fbbe

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

lib/media/media_source_engine.js

+13-14
Original file line numberDiff line numberDiff line change
@@ -787,13 +787,12 @@ shaka.media.MediaSourceEngine = class {
787787
* @param {?shaka.media.SegmentReference} reference The segment reference
788788
* we are appending, or null for init segments
789789
* @param {!string} mimeType
790-
* @param {!number} timestampOffset
791-
* @return {?number}
790+
* @return {{timestamp: ?number, metadata: !Array.<shaka.extern.ID3Metadata>}}
792791
* @private
793792
*/
794-
getTimestampAndDispatchMetadata_(contentType, data, reference, mimeType,
795-
timestampOffset) {
793+
getTimestampAndDispatchMetadata_(contentType, data, reference, mimeType) {
796794
let timestamp = null;
795+
let metadata = [];
797796

798797
const uint8ArrayData = shaka.util.BufferUtils.toUint8(data);
799798
if (shaka.util.MimeUtils.RAW_FORMATS.includes(mimeType)) {
@@ -807,15 +806,15 @@ shaka.media.MediaSourceEngine = class {
807806
timestamp = Math.round(metadataTimestamp.data) / 1000;
808807
}
809808
/** @private {shaka.extern.ID3Metadata} */
810-
const metadata = {
809+
const id3Metadata = {
811810
cueTime: reference.startTime,
812811
data: uint8ArrayData,
813812
frames: frames,
814813
dts: reference.startTime,
815814
pts: reference.startTime,
816815
};
817816
this.playerInterface_.onMetadata(
818-
[metadata], /* offset= */ 0, reference.endTime);
817+
[id3Metadata], /* offset= */ 0, reference.endTime);
819818
}
820819
} else if (mimeType.includes('/mp4') &&
821820
reference && reference.timestampOffset == 0 &&
@@ -855,13 +854,9 @@ shaka.media.MediaSourceEngine = class {
855854
if (startTime != null) {
856855
timestamp = startTime;
857856
}
858-
const metadata = tsParser.getMetadata();
859-
if (metadata.length) {
860-
this.playerInterface_.onMetadata(metadata, timestampOffset,
861-
reference ? reference.endTime : null);
862-
}
857+
metadata = tsParser.getMetadata();
863858
}
864-
return timestamp;
859+
return {timestamp, metadata};
865860
}
866861

867862
/**
@@ -925,8 +920,8 @@ shaka.media.MediaSourceEngine = class {
925920
mimeType = this.transmuxers_[contentType].getOriginalMimeType();
926921
}
927922
if (reference) {
928-
const timestamp = this.getTimestampAndDispatchMetadata_(
929-
contentType, data, reference, mimeType, timestampOffset);
923+
const {timestamp, metadata} = this.getTimestampAndDispatchMetadata_(
924+
contentType, data, reference, mimeType);
930925
if (timestamp != null) {
931926
if (this.firstVideoTimestamp_ == null &&
932927
contentType == ContentType.VIDEO) {
@@ -988,6 +983,10 @@ shaka.media.MediaSourceEngine = class {
988983
this.textSequenceModeOffset_.resolve(timestampOffset);
989984
}
990985
}
986+
if (metadata.length) {
987+
this.playerInterface_.onMetadata(metadata, timestampOffset,
988+
reference ? reference.endTime : null);
989+
}
991990
}
992991
if (hasClosedCaptions && contentType == ContentType.VIDEO) {
993992
if (!this.textEngine_) {

0 commit comments

Comments
 (0)