diff --git a/backend/images/IRT_logo.jpg b/backend/images/IRT_logo.jpg new file mode 100644 index 0000000..2e0c9b0 Binary files /dev/null and b/backend/images/IRT_logo.jpg differ diff --git a/backend/images/dashif-logo-283x100_new.jpg b/backend/images/dashif-logo-283x100_new.jpg new file mode 100644 index 0000000..8dec461 Binary files /dev/null and b/backend/images/dashif-logo-283x100_new.jpg differ diff --git a/backend/images/dvb-logo.png b/backend/images/dvb-logo.png new file mode 100644 index 0000000..78551cb Binary files /dev/null and b/backend/images/dvb-logo.png differ diff --git a/backend/schedule_templates/cgsid_1.xml b/backend/schedule_templates/cgsid_1.xml index 758080c..85c43e4 100755 --- a/backend/schedule_templates/cgsid_1.xml +++ b/backend/schedule_templates/cgsid_1.xml @@ -194,7 +194,7 @@ - http://tmsimg.com/assets/p10117343_i_h13_ab.jpg + http://tmsimg.com/assets/p10117343_i_h13_ab.jpg diff --git a/backend/schedule_templates/cgsid_12.xml b/backend/schedule_templates/cgsid_12.xml index fae6adc..719794d 100755 --- a/backend/schedule_templates/cgsid_12.xml +++ b/backend/schedule_templates/cgsid_12.xml @@ -132,7 +132,7 @@ - http://tmsimg.com/assets/p10117343_i_h13_ab.jpg + http://tmsimg.com/assets/p10117343_i_h13_ab.jpg diff --git a/backend/schedule_templates/cgsid_13.xml b/backend/schedule_templates/cgsid_13.xml index c010be4..5676c54 100755 --- a/backend/schedule_templates/cgsid_13.xml +++ b/backend/schedule_templates/cgsid_13.xml @@ -194,7 +194,7 @@ - http://tmsimg.com/assets/p10117343_i_h13_ab.jpg + http://tmsimg.com/assets/p10117343_i_h13_ab.jpg diff --git a/backend/schedule_templates/cgsid_4.xml b/backend/schedule_templates/cgsid_4.xml index e9dff99..af92f7e 100755 --- a/backend/schedule_templates/cgsid_4.xml +++ b/backend/schedule_templates/cgsid_4.xml @@ -159,7 +159,7 @@ - http://tmsimg.com/assets/p10117343_i_h13_ab.jpg + http://tmsimg.com/assets/p10117343_i_h13_ab.jpg diff --git a/backend/schedule_templates/cgsid_5.xml b/backend/schedule_templates/cgsid_5.xml index 35542bd..7ccf4c3 100755 --- a/backend/schedule_templates/cgsid_5.xml +++ b/backend/schedule_templates/cgsid_5.xml @@ -193,7 +193,7 @@ - http://tmsimg.com/assets/p10117343_i_h13_ab.jpg + http://tmsimg.com/assets/p10117343_i_h13_ab.jpg diff --git a/backend/schedule_templates/cgsid_8.xml b/backend/schedule_templates/cgsid_8.xml index b37077b..2401536 100755 --- a/backend/schedule_templates/cgsid_8.xml +++ b/backend/schedule_templates/cgsid_8.xml @@ -132,7 +132,7 @@ - http://tmsimg.com/assets/p10117343_i_h13_ab.jpg + http://tmsimg.com/assets/p10117343_i_h13_ab.jpg diff --git a/backend/schedule_templates/cgsid_9.xml b/backend/schedule_templates/cgsid_9.xml index 60dcd24..626c7cd 100755 --- a/backend/schedule_templates/cgsid_9.xml +++ b/backend/schedule_templates/cgsid_9.xml @@ -193,7 +193,7 @@ - http://tmsimg.com/assets/p10117343_i_h13_ab.jpg + http://tmsimg.com/assets/p10117343_i_h13_ab.jpg diff --git a/backend/servicelists/example.xml b/backend/servicelists/example.xml index 79771c5..2f76171 100755 --- a/backend/servicelists/example.xml +++ b/backend/servicelists/example.xml @@ -14,6 +14,9 @@ + + + @@ -73,6 +76,12 @@ IRT test channel IRT测试通道 IRT + + + + INSTALL~~LOCATION/backend/images/IRT_logo.jpg + + cgsid_3 @@ -190,6 +199,7 @@ DVB cgsid_4 + tag:dvb-i-referenceapp,2023:Parental-1 @@ -201,9 +211,64 @@ Parental rating service 2 DVB + + + + INSTALL~~LOCATION/backend/images/dvb-logo.png + + + + + + tag:dvb-i-referenceapp,2026:Digest-1 + + + + https://refapp.hbbtv.org/livesim/02_llamanofragv1/manifest.mpd + + + + Digest Svc Logo #1 + DVB + + + + + + + + INSTALL~~LOCATION/backend/images/dvb-logo.png + + + + + + + tag:dvb-i-referenceapp,2026:Digest-2 + + + + https://refapp.hbbtv.org/livesim/02_llamanofragv1/manifest.mpd + + + + Digest Svc Logo #2 + DVB + + + + + + + + data:image/png;base64,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 + + - + tag:dvb.org,2020:DASHIF-LL @@ -239,6 +304,12 @@ DASH-IF livesim LL DASH Industry Forum + + + + INSTALL~~LOCATION/backend/images/dashif-logo-283x100_new.jpg + + diff --git a/frontend/android/images/invalid-digest-image.jpeg b/frontend/android/images/invalid-digest-image.jpeg new file mode 100644 index 0000000..46ca268 Binary files /dev/null and b/frontend/android/images/invalid-digest-image.jpeg differ diff --git a/frontend/android/player.html b/frontend/android/player.html index 5a425d3..86f8631 100755 --- a/frontend/android/player.html +++ b/frontend/android/player.html @@ -24,6 +24,10 @@ + + + + diff --git a/frontend/channel-common.js b/frontend/channel-common.js index 191c71b..018e2bc 100755 --- a/frontend/channel-common.js +++ b/frontend/channel-common.js @@ -135,10 +135,13 @@ Channel.prototype.parseSchedule = function (data) { var howRelated = relatedMaterial[k1].getElementsByTagNameNS(TVA_ns, "HowRelated")[0].getAttribute("href"); if (howRelated == TVA_Promotional_Still_Image) { //Program still image - program.mediaimage = relatedMaterial[k1].getElementsByTagNameNS( - TVA_ns, - "MediaUri" - )[0].childNodes[0].nodeValue; + // program.mediaimage = relatedMaterial[k1].getElementsByTagNameNS( + // TVA_ns, + // "MediaUri" + // )[0].childNodes[0].nodeValue; + var mediaLocators = relatedMaterial[k1].getElementsByTagNameNS(TVA_ns, "MediaLocator"); + var image_uri = getMedia(relatedMaterial[k1], {}); + program.mediaimage = image_uri ? image_uri.mediaUri : null; break; } } diff --git a/frontend/dvbi-common.js b/frontend/dvbi-common.js index 9314f2c..f02937e 100755 --- a/frontend/dvbi-common.js +++ b/frontend/dvbi-common.js @@ -7,6 +7,9 @@ var PROVIDER_LIST = INSTALL_LOCATION + "/backend/servicelist_registry.php"; /* const */ var LCN_services_only = false; /* const */ var First_undeclared_channel = 7000; +// this is an inline representation of frontend/android/images/invalid-digest-image.jpeg [[made with https://ezgif.com/image-to-datauri]] +var INVALID_DIGEST_IMAGE = "data:image/jpeg;base64,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"; + function parseContentGuideSource(src) { var newCS = { id: "", @@ -604,9 +607,10 @@ function parseServiceList(data, dvbChannels, supportedDrmSystems) { if (howRelated == DVBi_Service_Logo) { chan.image = getMedia(relatedMaterial[j]); } - if (howRelated == DVBi_Out_Of_Service_Logo) { + else if (howRelated == DVBi_Out_Of_Service_Logo) { chan.out_of_service_image = getMedia(relatedMaterial[j]); - } else if (howRelated == DVBi_App_In_Parallel) { + } + else if (howRelated == DVBi_App_In_Parallel) { var app = {}; var mediaUri = relatedMaterial[j] .getElementsByTagNameNS(TVA_ns, "MediaLocator")[0] @@ -616,7 +620,8 @@ function parseServiceList(data, dvbChannels, supportedDrmSystems) { app.contentType = mediaUri.getAttribute("contentType"); chan.parallelApps.push(app); } - } else if (howRelated == DVBi_App_Controlling_Media) { + } + else if (howRelated == DVBi_App_Controlling_Media) { var app2 = {}; var mediaUri2 = relatedMaterial[j] .getElementsByTagNameNS(TVA_ns, "MediaLocator")[0] @@ -1215,15 +1220,56 @@ function parseServiceListProviders(data) { return { registryInfo: registryInfo, providerList: providerslist }; } +/** + * extract the image payload from the provided @inline_image. + * + * @param {string} inline_image + */ +function parseImageData(inline_image) { + return inline_image.substring(inline_image.indexOf(",")); +} + function getMedia(element) { if (!element) { return null; } var tvaNS = "*"; var mediaUri = element.getElementsByTagNameNS(tvaNS, "MediaUri"); + + var content_digest = mediaUri[0].getAttribute("integrity"); + if (content_digest) { + var digests = content_digest.split(" "); + var img_url = mediaUri[0].childNodes[0].nodeValue; + var img = img_url.startsWith("http") ? NetworkRequestS(img_url, {}) : parseImageData(img_url); + var is_valid = false; + + var re = new RegExp("([a-z0-9]+)=:([a-zA-Z0-9]+):"); + digests.forEach(function (dig) { + var parse = dig.match(re); + var algorithm = parse[1], digest = parse[2]; + + if (algorithm == "sha1") { + var sha1obj = new jsSHA("SHA-1", "TEXT"); + sha1obj.update(img); + if (sha1obj.getHash("HEX") == digest) { + is_valid = true; + } + } + else if (algorithm = "sha256") { + var sha256obj = new jsSHA("SHA-256","TEXT"); + sha256obj.update(img); + if (sha256obj.getHash("HEX") == digest) { + is_valid = true; + } + } + }); + return {mediaUri: is_valid ? img_url : INVALID_DIGEST_IMAGE}; + } + else if (mediaUri.length > 0) { return { mediaUri: mediaUri[0].childNodes[0].nodeValue }; } + return null; } function getImageSrc(image, defaultImage = "./images/empty.png") { diff --git a/frontend/network.js b/frontend/network.js index a7f2c57..ecf18f7 100644 --- a/frontend/network.js +++ b/frontend/network.js @@ -10,3 +10,20 @@ function NetworkRequest(url, settings) { settings.url = url; return $.ajax(settings); } + + + +function NetworkRequestS(url, settings) { + // settings.accepts= { mycustomtype: "application/vnd.dvb.dvbi.r8" }, + + settings.beforeSend = function (req) { + // Chrome:: Refused to set unsafe header "User-Agent" + // req.setRequestHeader("User-Agent", "DVB-I/A177r8"); + req.setRequestHeader("Accept", "text/plain, */*, application/vnd.dvb.dvbi.r8"); + }; + + settings.url = url; + settings.async = false; + var request = $.ajax(settings); + return request.responseText; +}