Skip to content

Commit

Permalink
fix(HLS): Disable text correctly when loading a media playlist (#7840)
Browse files Browse the repository at this point in the history
Backported to v4.9.x
  • Loading branch information
avelad authored and joeyparrish committed Jan 10, 2025
1 parent f7a436c commit f67a2c8
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 8 deletions.
5 changes: 3 additions & 2 deletions lib/hls/hls_parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -1013,7 +1013,8 @@ shaka.hls.HlsParser = class {

if (extension == 'ts' || contentMimeType == 'video/mp2t') {
const basicInfo = shaka.media.SegmentUtils.getBasicInfoFromTs(
response.data, this.config_.disableAudio, this.config_.disableVideo);
response.data, this.config_.disableAudio, this.config_.disableVideo,
this.config_.disableText);
if (basicInfo) {
return basicInfo;
}
Expand All @@ -1023,7 +1024,7 @@ shaka.hls.HlsParser = class {
contentMimeType == 'audio/mp4' ||
contentMimeType == 'video/iso.segment') {
const basicInfo = shaka.media.SegmentUtils.getBasicInfoFromMp4(
initData, response.data);
initData, response.data, this.config_.disableText);
if (basicInfo) {
return basicInfo;
}
Expand Down
14 changes: 8 additions & 6 deletions lib/media/segment_utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,12 @@ shaka.media.SegmentUtils = class {

/**
* @param {!BufferSource} data
* @param {boolean=} disableAudio
* @param {boolean=} disableVideo
* @param {boolean} disableAudio
* @param {boolean} disableVideo
* @param {boolean} disableText
* @return {?shaka.media.SegmentUtils.BasicInfo}
*/
static getBasicInfoFromTs(data, disableAudio = false, disableVideo = false) {
static getBasicInfoFromTs(data, disableAudio, disableVideo, disableText) {
const uint8ArrayData = shaka.util.BufferUtils.toUint8(data);
const tsParser = new shaka.util.TsParser().parse(uint8ArrayData);
const tsCodecs = tsParser.getCodecs();
Expand Down Expand Up @@ -123,7 +124,7 @@ shaka.media.SegmentUtils = class {
}
const onlyAudio = hasAudio && !hasVideo;
const closedCaptions = new Map();
if (hasVideo) {
if (hasVideo && !disableText) {
const captionParser = new shaka.media.ClosedCaptionParser('video/mp2t');
captionParser.parseFrom(data);
for (const stream of captionParser.getStreams()) {
Expand All @@ -149,9 +150,10 @@ shaka.media.SegmentUtils = class {
/**
* @param {?BufferSource} initData
* @param {!BufferSource} data
* @param {boolean} disableText
* @return {?shaka.media.SegmentUtils.BasicInfo}
*/
static getBasicInfoFromMp4(initData, data) {
static getBasicInfoFromMp4(initData, data, disableText) {
const Mp4Parser = shaka.util.Mp4Parser;
const SegmentUtils = shaka.media.SegmentUtils;

Expand Down Expand Up @@ -392,7 +394,7 @@ shaka.media.SegmentUtils = class {
}
const onlyAudio = hasAudio && !hasVideo;
const closedCaptions = new Map();
if (hasVideo) {
if (hasVideo && !disableText) {
const captionParser = new shaka.media.ClosedCaptionParser('video/mp4');
if (initData) {
captionParser.init(initData);
Expand Down

0 comments on commit f67a2c8

Please sign in to comment.