diff --git a/src/dash/DashAdapter.js b/src/dash/DashAdapter.js index 262193445e..5618573ef0 100644 --- a/src/dash/DashAdapter.js +++ b/src/dash/DashAdapter.js @@ -51,7 +51,8 @@ function DashAdapter() { patchManifestModel, voPeriods, currentMediaInfo, - constants; + constants, + cea608parser; const context = this.context; @@ -72,6 +73,9 @@ function DashAdapter() { constants = config.constants; } + if (config.cea608parser) { + cea608parser = config.cea608parser; + } if (config.errHandler) { dashManifestModel.setConfig({ errHandler: config.errHandler }); } @@ -1031,6 +1035,9 @@ function DashAdapter() { mediaInfo.subSegmentAlignment = dashManifestModel.getSubSegmentAlignment(realAdaptation); mediaInfo.viewpoint = dashManifestModel.getViewpointForAdaptation(realAdaptation); mediaInfo.accessibility = dashManifestModel.getAccessibilityForAdaptation(realAdaptation); + if (mediaInfo.accessibility.filter(function (accessibility) { + if (accessibility.schemeIdUri && (accessibility.schemeIdUri.search('cea-608') >= 0) && typeof (cea608parser) !== 'undefined') return true; + })[0]) mediaInfo.embeddedCaptions = true; mediaInfo.audioChannelConfiguration = dashManifestModel.getAudioChannelConfigurationForAdaptation(realAdaptation); if (mediaInfo.audioChannelConfiguration.length === 0 && realAdaptation.Representation && realAdaptation.Representation.length > 0) { mediaInfo.audioChannelConfiguration = dashManifestModel.getAudioChannelConfigurationForRepresentation(realAdaptation.Representation[0]); diff --git a/test/unit/dash.DashAdapter.js b/test/unit/dash.DashAdapter.js index 0566052020..08b1b93419 100644 --- a/test/unit/dash.DashAdapter.js +++ b/test/unit/dash.DashAdapter.js @@ -752,6 +752,8 @@ describe('DashAdapter', function () { expect(mediaInfoArray[0].accessibility[0]).to.be.instanceOf(DescriptorType); expect(mediaInfoArray[0].accessibility[0].schemeIdUri).equals('urn:scte:dash:cc:cea-608:2015'); expect(mediaInfoArray[0].accessibility[0].value).equals('CC1=eng;CC3=swe'); + expect(mediaInfoArray[0].embeddedCaptions).equals(true); + expect(mediaInfoArray[1].accessibility.length).equals(0); });