| OLD | NEW |
| (Empty) | |
| 1 /** |
| 2 * A global object that gets used by the C++ interface. |
| 3 */ |
| 4 var media = (function () { |
| 5 'use strict'; |
| 6 |
| 7 var manager = new PlayerManager(); |
| 8 |
| 9 /** |
| 10 * Call to modify or add a system property |
| 11 */ |
| 12 function onSystemProperty(timestamp, key, value) { |
| 13 console.log("System properties not yet implemented"); |
| 14 } |
| 15 |
| 16 /** |
| 17 * Call to modify or add a property on a player |
| 18 */ |
| 19 function onPlayerProperty(id, timestamp, key, value) { |
| 20 manager.updatePlayerInfo(id, timestamp, key, value); |
| 21 } |
| 22 |
| 23 function onPlayerPropertyNoRecord(id, timestamp, key, value) { |
| 24 manager.updatePlayerInfoNoRecord(id, timestamp, key, value); |
| 25 } |
| 26 |
| 27 /** |
| 28 * Call to add a player. |
| 29 */ |
| 30 function onPlayerOpen(id, timestamp) { |
| 31 manager.addPlayer(id, timestamp); |
| 32 } |
| 33 |
| 34 /** |
| 35 * Call to remove a player. |
| 36 */ |
| 37 function onPlayerClose(id) { |
| 38 manager.removePlayer(id); |
| 39 } |
| 40 |
| 41 // TODO(toverby): If you get a media event that doesn't have any properties, |
| 42 // do something with the |type| of the event. |
| 43 |
| 44 var media = {}; |
| 45 media.onSystemProperty = onSystemProperty; |
| 46 media.onPlayerProperty = onPlayerProperty; |
| 47 media.onPlayerPropertyNoRecord = onPlayerPropertyNoRecord; |
| 48 media.onPlayerOpen = onPlayerOpen; |
| 49 media.onPlayerClose = onPlayerClose; |
| 50 |
| 51 // ---------------------------------------------- |
| 52 // Everything beyond this point is for backwards |
| 53 // compatibility reasons. It will go away when |
| 54 // the backend is updated. |
| 55 // ---------------------------------------------- |
| 56 |
| 57 media.onNetUpdate = function (update) { |
| 58 // TODO(tyoverby): Implement |
| 59 }; |
| 60 |
| 61 media.onRendererTerminated = function (renderId) { |
| 62 goog.object.forEach(manager.players, function (playerInfo, id) { |
| 63 if (playerInfo.properties['render_id'] == renderId) { |
| 64 media.onPlayerClose(id); |
| 65 } |
| 66 }); |
| 67 }; |
| 68 |
| 69 // For whatever reason, addAudioStream is also called on |
| 70 // the removal of audio streams. |
| 71 media.addAudioStream = function (event) { |
| 72 switch (event.status) { |
| 73 case 'created': |
| 74 media.onPlayerOpen(event.id); |
| 75 // We have to simulate the timestamp since |
| 76 // it isn't provided to us. |
| 77 media.onPlayerProperty(event.id, (new Date()).getTime(), |
| 78 'playing', event.playing); |
| 79 break; |
| 80 case 'closed': |
| 81 media.onPlayerClose(event.id); |
| 82 break; |
| 83 } |
| 84 }; |
| 85 media.onItemDeleted = function () { |
| 86 // This only gets called when an audio stream is removed, which |
| 87 // for whatever reason is also handled by addAudioStream... |
| 88 // Because it is already handled, we can safely ignore it. |
| 89 }; |
| 90 |
| 91 media.onMediaEvent = function (event) { |
| 92 var source = event.renderer + ':' + event.player; |
| 93 |
| 94 // Although this gets called on every event, there |
| 95 // is nothing we can do about this because there is no onOpen event. |
| 96 media.onPlayerOpen(source); |
| 97 media.onPlayerPropertyNoRecord(source, event.ticksMillis, 'render_id', |
| 98 event.renderer); |
| 99 media.onPlayerPropertyNoRecord(source, event.ticksMillis, 'player_id', |
| 100 event.player); |
| 101 |
| 102 var propertyCount = 0; |
| 103 goog.object.forEach(event.params, function (value, key) { |
| 104 key = key.trim(); |
| 105 if (key === 'buffer_start' || key === 'buffer_end' || |
| 106 key === 'buffer_current' || key === 'is_downloading_data') { |
| 107 media.onPlayerPropertyNoRecord(source, event.ticksMillis, key, |
| 108 value); |
| 109 } else { |
| 110 media.onPlayerProperty(source, event.ticksMillis, key, value); |
| 111 } |
| 112 propertyCount += 1; |
| 113 }); |
| 114 |
| 115 if (propertyCount === 0) { |
| 116 media.onPlayerProperty(source, event.ticksMillis, 'EVENT', |
| 117 event.type); |
| 118 } |
| 119 }; |
| 120 |
| 121 return media; |
| 122 }()); |
| OLD | NEW |