Source: externs/shaka/ads.js

  1. /*! @license
  2. * Shaka Player
  3. * Copyright 2016 Google LLC
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. /**
  7. * @externs
  8. */
  9. /**
  10. * @typedef {{
  11. * loadTimes: !Array.<number>,
  12. * started: number,
  13. * playedCompletely: number,
  14. * skipped: number
  15. * }}
  16. *
  17. * @description
  18. * Contains statistics and information about the current state of the player.
  19. *
  20. * @property {number} loadTimes
  21. * The set of amounts of time it took to get the final manifest.
  22. * @property {number} started
  23. * The number of ads started.
  24. * @property {number} playedCompletely
  25. * The number of ads played completely.
  26. * @property {number} skipped
  27. * The number of ads skipped.
  28. * @exportDoc
  29. */
  30. shaka.extern.AdsStats;
  31. /**
  32. * @typedef {{
  33. * start: number,
  34. * end: ?number
  35. * }}
  36. *
  37. * @description
  38. * Contains the times of a range of an Ad.
  39. *
  40. * @property {number} start
  41. * The start time of the range, in milliseconds.
  42. * @property {number} end
  43. * The end time of the range, in milliseconds.
  44. * @exportDoc
  45. */
  46. shaka.extern.AdCuePoint;
  47. /**
  48. * An object that's responsible for all the ad-related logic
  49. * in the player.
  50. *
  51. * @interface
  52. * @exportDoc
  53. */
  54. shaka.extern.IAdManager = class extends EventTarget {
  55. /**
  56. * @param {string} locale
  57. */
  58. setLocale(locale) {}
  59. /**
  60. * Called by the Player to provide an updated configuration any time it
  61. * changes.
  62. * Must be called at least once before init*().
  63. *
  64. * @param {shaka.extern.AdsConfiguration} config
  65. */
  66. configure(config) {}
  67. release() {}
  68. onAssetUnload() {}
  69. /**
  70. * @param {!HTMLElement} adContainer
  71. * @param {!HTMLMediaElement} video
  72. * @param {?google.ima.AdsRenderingSettings} adsRenderingSettings
  73. */
  74. initClientSide(adContainer, video, adsRenderingSettings) {}
  75. /**
  76. * @param {!google.ima.AdsRequest} imaRequest
  77. */
  78. requestClientSideAds(imaRequest) {}
  79. /**
  80. * @param {!google.ima.AdsRenderingSettings} adsRenderingSettings
  81. */
  82. updateClientSideAdsRenderingSettings(adsRenderingSettings) {}
  83. /**
  84. * @param {!HTMLElement} adContainer
  85. * @param {!shaka.net.NetworkingEngine} networkingEngine
  86. * @param {!HTMLMediaElement} video
  87. */
  88. initMediaTailor(adContainer, networkingEngine, video) {}
  89. /**
  90. * @param {string} url
  91. * @param {Object} adsParams
  92. * @param {string=} backupUrl
  93. * @return {!Promise.<string>}
  94. */
  95. requestMediaTailorStream(url, adsParams, backupUrl) {}
  96. /**
  97. * @param {!HTMLElement} adContainer
  98. * @param {!HTMLMediaElement} video
  99. */
  100. initServerSide(adContainer, video) {}
  101. /**
  102. * @param {!google.ima.dai.api.StreamRequest} imaRequest
  103. * @param {string=} backupUrl
  104. * @return {!Promise.<string>}
  105. */
  106. requestServerSideStream(imaRequest, backupUrl) {}
  107. /**
  108. * @param {Object} adTagParameters
  109. */
  110. replaceServerSideAdTagParameters(adTagParameters) {}
  111. /**
  112. * @return {!Array.<!shaka.extern.AdCuePoint>}
  113. */
  114. getServerSideCuePoints() {}
  115. /**
  116. * @return {!Array.<!shaka.extern.AdCuePoint>}
  117. */
  118. getCuePoints() {}
  119. /**
  120. * Get statistics for the current playback session. If the player is not
  121. * playing content, this will return an empty stats object.
  122. */
  123. getStats() {}
  124. /**
  125. * @param {shaka.extern.TimelineRegionInfo} region
  126. */
  127. onDashTimedMetadata(region) {}
  128. /**
  129. * Fired when the manifest is updated.
  130. *
  131. * @param {boolean} isLive
  132. */
  133. onManifestUpdated(isLive) {}
  134. /**
  135. * @param {shaka.extern.ID3Metadata} metadata
  136. * @param {number} timestampOffset
  137. */
  138. onHlsTimedMetadata(metadata, timestampOffset) {}
  139. /**
  140. * @param {shaka.extern.MetadataFrame} value
  141. */
  142. onCueMetadataChange(value) {}
  143. };
  144. /**
  145. * A factory for creating the ad manager.
  146. *
  147. * @typedef {function():!shaka.extern.IAdManager}
  148. * @exportDoc
  149. */
  150. shaka.extern.IAdManager.Factory;
  151. /**
  152. * Interface for Ad objects.
  153. *
  154. * @extends {shaka.util.IReleasable}
  155. * @interface
  156. * @exportDoc
  157. */
  158. shaka.extern.IAd = class {
  159. /**
  160. * @return {number}
  161. */
  162. getDuration() {}
  163. /**
  164. * Gets the minimum suggested duration. Defaults to being equivalent to
  165. * getDuration() for server-side ads.
  166. * @see http://bit.ly/3q3U6hI
  167. * @return {number}
  168. */
  169. getMinSuggestedDuration() {}
  170. /**
  171. * @return {number}
  172. */
  173. getRemainingTime() {}
  174. /**
  175. * @return {number}
  176. */
  177. getTimeUntilSkippable() {}
  178. /**
  179. * @return {boolean}
  180. */
  181. isPaused() {}
  182. /**
  183. * @return {boolean}
  184. */
  185. isSkippable() {}
  186. /**
  187. * @return {boolean}
  188. */
  189. canSkipNow() {}
  190. skip() {}
  191. play() {}
  192. pause() {}
  193. /**
  194. * @return {number}
  195. */
  196. getVolume() {}
  197. /**
  198. * @param {number} volume
  199. */
  200. setVolume(volume) {}
  201. /**
  202. * @return {boolean}
  203. */
  204. isMuted() {}
  205. /**
  206. * @param {boolean} muted
  207. */
  208. setMuted(muted) {}
  209. /**
  210. * @return {boolean}
  211. */
  212. isLinear() {}
  213. /**
  214. * @param {number} width
  215. * @param {number} height
  216. */
  217. resize(width, height) {}
  218. /**
  219. * @return {number}
  220. */
  221. getSequenceLength() {}
  222. /**
  223. * @return {number}
  224. */
  225. getPositionInSequence() {}
  226. /**
  227. * @return {string}
  228. */
  229. getTitle() {}
  230. /**
  231. * @return {string}
  232. */
  233. getDescription() {}
  234. /**
  235. * @return {number}
  236. */
  237. getVastMediaBitrate() {}
  238. /**
  239. * @return {number}
  240. */
  241. getVastMediaHeight() {}
  242. /**
  243. * @return {number}
  244. */
  245. getVastMediaWidth() {}
  246. /**
  247. * @return {string}
  248. */
  249. getAdId() {}
  250. /**
  251. * @return {string}
  252. */
  253. getCreativeAdId() {}
  254. /**
  255. * @return {string}
  256. */
  257. getAdvertiserName() {}
  258. /**
  259. * @return {?string}
  260. */
  261. getMediaUrl() {}
  262. /**
  263. * @return {number}
  264. */
  265. getTimeOffset() {}
  266. /**
  267. * @return {number}
  268. */
  269. getPodIndex() {}
  270. };