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