UNPKG

modernizr-hbbtv-plugins

Version:
70 lines (62 loc) 2.06 kB
/*! { "name": "HbbTV Video", "property": "hbbtvvideo", "tags": ["hbbtv", "oipf", "video"], "async" : true, "notes": [{ "name": "OIPF Specification Volume 5 Release 1 v1.1 - Declarative Application Environment", "href": "http://www.oipf.tv/" }, { "name": "MIT-xperts HBBTV testsuite", "href": "https://github.com/mitxp/HbbTV-Testsuite" }] } !*/ /* DOC Returns if the device supports HbbTV video and if seeking inside a video works. */ ; (function(window, document, Modernizr) { var i; var drmSystemID; // DRM is only supported for HbbTV >= 1.2 if (!window.navigator.userAgent.match(/HbbTV\/(1\.[2..9]\.|2\.)/i)) { Modernizr.addTest('hbbtvdrm', false); return; } var drmSystemIDs = { playready: 'urn:dvb:casystemid:19219', marlin: 'urn:dvb:casystemid:19188', widevine: 'urn:dvb:casystemid:19156' }; var supportsDRM; // TODO: add dynamically var oipfCapabilities = document.getElementById('oipfCapabilities'); if (oipfCapabilities.hasCapability('+DRM')) { supportsDRM = new Boolean(true); } else { supportsDRM = false; } // Search for PlayReady support var drms = oipfCapabilities.xmlCapabilities.getElementsByTagName('drm'); supportsDRM.playready = false; for (i = 0; i < drms.length; i++) { var drm = drms.item(i); drmSystemID = drm.getAttribute('DRMSystemID'); if (drmSystemID == drmSystemIDs.playready) { supportsDRM.playready = true; } } // Search for profiles supporting DASH and PlayReady var profiles = oipfCapabilities.xmlCapabilities.getElementsByTagName('video_profile'); for (i = 0; i < profiles.length; i++) { var profile = profiles.item(i); var transport = profile.getAttribute('transport'); drmSystemID = profile.getAttribute('DRMSystemID'); if (transport == 'dash' && drmSystemID == drmSystemIDs.playready) { //HbbTV.log([profile.getAttribute('name'), profile.getAttribute('type')]); } } Modernizr.addTest('hbbtvdrm', supportsDRM); })(window, document, window.Modernizr);