Home | History | Annotate | Download | only in data
      1 <!DOCTYPE html>
      2 <html lang='en-US'>
      3   <head>
      4     <title>EME playback test application</title>
      5   </head>
      6   <body style='font-family:"Lucida Console", Monaco, monospace; font-size:14px'>
      7     <i>Clearkey works only with content encrypted using bear key.</i><br><br>
      8     <table>
      9     <tr title='URL param mediaFile=...'>
     10       <td><label for='mediaFile'>Encrypted video URL:</label></td>
     11       <td><input id='mediaFile' type='text' size='64'></td>
     12     </tr>
     13     <tr title='URL param licenseServerURL=...'>
     14       <td><label for='licenseServer'>License sever URL:</label></td>
     15       <td><input id='licenseServer' type='text' size='64'></td>
     16     </tr>
     17     <tr title='URL param keySystem=...'>
     18       <td><label for='keySystemList'>Key system:</label></td>
     19       <td><select id='keySystemList'></select></td>
     20     </tr>
     21     <tr title='URL param mediaType=...'>
     22       <td><label for='mediaTypeList'>Media type:</label></td>
     23       <td><select id='mediaTypeList'></select></td>
     24     </tr>
     25     <tr title='URL param usePrefixedEME=1|0'>
     26       <td><label for='usePrefixedEME'>EME API version:</label></td>
     27       <td><select id='usePrefixedEME'></select></td>
     28     </tr>
     29     <tr title='URL param useMSE=1|0'>
     30       <td><label for='useMSE'>Load media by:</label></td>
     31       <td>
     32         <select id='useMSE'>
     33           <option value='true' selected='selected'>MSE</option>
     34           <option value='false'>src</option>
     35         </select>
     36       </td>
     37     </tr>
     38     </table>
     39     <br>
     40     <button onclick='Play();'>Play</button>
     41     <br><br>
     42     Decoded fps: <span id='decodedFPS'></span>
     43     <br>
     44     Dropped fps: <span id='droppedFPS'></span>
     45     <br>
     46     Total dropped frames: <span id='droppedFrames'></span>
     47     <br><br>
     48     <table>
     49     <tr>
     50       <td valign='top'><span id='video'></span></td>
     51       <td valign='top'>
     52         <label for='logs' onclick="toggleDisplay('logs');"><i>Click to toggle logs visibility (newest at top).</i><br></label>
     53         <div id='logs' style='overflow: auto; height: 480px; width: 480px; white-space: nowrap; display: none'></div>
     54       </td>
     55     </tr>
     56     </table>
     57     <div></div>
     58   </body>
     59   <script src='eme_player_js/app_loader.js' type='text/javascript'></script>
     60   <script type='text/javascript'>
     61     var testConfig = new TestConfig();
     62     testConfig.loadQueryParams();
     63     // Update document with test configuration values.
     64     var emeApp = new EMEApp(testConfig);
     65 
     66     function onTimeUpdate(e) {
     67       var video = e.target;
     68       if (video.currentTime < 1)
     69         return;
     70       // For loadSession() tests, addKey() will not be called after
     71       // loadSession() (the key is loaded internally). Do not check keyadded
     72       // and heartbeat for these tests.
     73       if (!testConfig.sessionToLoad) {
     74         // keyadded may be fired around the start of playback; check for it
     75         // after a delay to avoid timing issues.
     76         if (testConfig.usePrefixedEME && !video.receivedKeyAdded)
     77           Utils.failTest('Key added event not received.');
     78         if (testConfig.keySystem == EXTERNAL_CLEARKEY &&
     79             !video.receivedHeartbeat)
     80           Utils.failTest('Heartbeat keymessage event not received.');
     81       }
     82       video.removeEventListener('ended', Utils.failTest);
     83       Utils.installTitleEventHandler(video, 'ended');
     84       video.removeEventListener('timeupdate', onTimeUpdate);
     85     }
     86 
     87     function Play() {
     88       // Update test configuration with UI elements values.
     89       var video = emeApp.createPlayer().video;
     90       Utils.resetTitleChange();
     91       // Ended should not fire before onTimeUpdate.
     92       video.addEventListener('ended', Utils.failTest);
     93       video.addEventListener('timeupdate', onTimeUpdate);
     94       video.play();
     95     }
     96 
     97     function toggleDisplay(id) {
     98       var element = document.getElementById(id);
     99       if (!element)
    100         return;
    101       if (element.style['display'] != 'none')
    102         element.style['display'] = 'none';
    103       else
    104         element.style['display'] = '';
    105     }
    106     Play();
    107   </script>
    108 </html>
    109