Skip to content

Commit 5b1673a

Browse files
theoplayer-bot[bot]THEOplayer CItheoplayer-bot[bot]
authored
THEOplayer 11.5.0 (#701)
Co-authored-by: THEOplayer CI <ci@theoplayer.com> Co-authored-by: theoplayer-bot[bot] <873105+theoplayer-bot[bot]@users.noreply.github.com>
1 parent f0474db commit 5b1673a

442 files changed

Lines changed: 4751 additions & 3368 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

millicast/playback/players-sdks/android/player/index.mdx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,22 @@ dependencies {
2222
// ...
2323
implementation 'com.theoplayer.theoplayer-sdk-android:core:+'
2424
implementation 'com.theoplayer.theoplayer-sdk-android:integration-millicast:+'
25-
implementation "com.millicast:millicast-sdk-android:2.0.0"
2625
// ...
2726
}
2827
```
2928

29+
This table defines which Millicast SDK version is integrated in which THEOplayer version:
30+
31+
| THEOplayer version | Millicast SDK version |
32+
| :----------------- | :-------------------- |
33+
| 11.5.0+ | 2.6.+ |
34+
| 11.3.0 – 11.4.x | 2.5.+ |
35+
| 10.11.0 – 11.2.+ | 2.5.3 |
36+
| 9.12.0 – 10.10.+ | 2.5.0 |
37+
| 9.7.0 – 9.11.+ | 2.4.3 |
38+
| 9.6.0 – 9.6.+ | 2.4.2 |
39+
| 8.10.0 – 9.5.+ | 2.0.0 |
40+
3041
### Add the Millicast integration to the player
3142

3243
:::tip

millicast/playback/players-sdks/android/sdk/getting-started-with-publishing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Follow these steps to add the publishing capability to your application.
99
You can get the SDK library from [MavenCentral](https://central.sonatype.com/artifact/com.millicast/millicast-sdk-android). If you haven't already, add the following to your gradle dependencies.
1010

1111
```kotlin
12-
implementation("com.millicast:millicast-sdk-android:2.5.+")
12+
implementation("com.millicast:millicast-sdk-android:2.6.+")
1313
```
1414

1515
## 2. Initialize the SDK

millicast/playback/players-sdks/android/sdk/getting-started-with-subscribing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Follow these steps to add the subscribing capability to your application.
99
You can get the SDK library from [MavenCentral](https://central.sonatype.com/artifact/com.millicast/millicast-sdk-android). If you haven't already, add the following to your gradle dependencies.
1010

1111
```kotlin
12-
implementation("com.millicast:millicast-sdk-android:2.5.+")
12+
implementation("com.millicast:millicast-sdk-android:2.6.+")
1313
```
1414

1515
## 2. Initialize the SDK

millicast/playback/players-sdks/ios/player/index.mdx

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,31 @@ Add the Millicast integration as a dependency in to your project:
3535
<!-- prettier-ignore-end -->
3636
</Tabs>
3737

38+
### Add the Millicast SDK dependency
39+
40+
The Millicast integration requires the Millicast SDK as a direct dependency. The required version depends on your THEOplayer version:
41+
42+
| THEOplayer version | Millicast SDK version |
43+
| :----------------- | :-------------------- |
44+
| 11.5.0+ | 2.6.x+ |
45+
| 11.3.0 11.4.x | 2.5.x+ |
46+
| 10.11.0 11.2.x | 2.5.3 |
47+
| 9.12.0 10.10.x | 2.5.1 |
48+
| 9.7.0 9.11.x | 2.4.3 |
49+
| 9.5.0 9.6.x | 2.4.1 |
50+
| 8.10.0 9.4.x | 2.2.0 |
51+
52+
:::note
53+
If you are using CocoaPods, the `THEOplayer-Integration-Millicast` pod already specifies the Millicast SDK dependency, so you do not need to add it manually.
54+
:::
55+
56+
Add the Millicast SDK via Swift Package Manager:
57+
58+
```swift
59+
.package(url: "https://github.com/millicast/millicast-sdk-swift-package.git", "2.6.0"..<"2.7.0")
60+
.product(name: "MillicastSDK", package: "millicast-sdk-swift-package")
61+
```
62+
3863
### Add the Millicast integration to the player
3964

4065
First import the integration into your project:

millicast/playback/players-sdks/ios/sdk/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ target 'MyProject' do
8989
platform :ios, '14.5'
9090
# Comment the next line if you do not want to use dynamic frameworks
9191
use_frameworks!
92-
pod 'MillicastSDK' '~> 2.5'
92+
pod 'MillicastSDK' '~> 2.6'
9393
# Pods for MyProject iOS
9494
end
9595
```

theoplayer/api-reference/roku.md

Lines changed: 113 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ The following key/value pairs are supported on the `source` attribute of the `TH
5858
| headers | roArray | An optional array of strings representing headers to include on the content requests. The strings follow the format of `"headerName:headerValue"`. Defaults to an empty array to clear any headers that were set on HttpAgent. |
5959
| streamType | string | Optional. Whether the stream is `"vod"`, `"live"`, or `"dvr"`. Will override `live` if set. |
6060
| textTracks | roArray of TextTrackDescriptions | Optional. An array of descriptions representing external text track files. If specified at this level, it will be applied to all sources in the `sources` array |
61+
| cmcd | CmcdSourceConfiguration | Optional. CMCD configuration for this source. Overrides player-level CMCD configuration. See [CMCD Configuration](#cmcd-configuration). |
6162

6263
### Typed Source
6364

@@ -208,11 +209,11 @@ The Ads API exposes the following properties, methods, and events.
208209
| scheduledAdBreaks | roArray of roAssociativeArrays | read | Array of the scheduled breaks that haven't played. These may either be a source object or a resolved AdBreak. |
209210
| scheduledAds | roArray of Ads | read | Array of the ads that are scheduled and have not played. Only shows one break's ads with VAST. |
210211

211-
| Method | Description |
212-
| -------------------------------------------------------------------------------------------- | ------------------------------------------------- |
213-
| addEventListener(eventType as string, listenerOwner as roSGNode, eventListener as string) | Add a listener for the specified player event. |
214-
| removeEventListener(eventType as string, listenerOwner as roSGNode, eventListener as string) | Remove a listener for the specified player event. |
215-
| schedule(adDescription as AdDescription) | Schedule an ad break. |
212+
| Method | Description |
213+
| -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
214+
| addEventListener(eventType as string, listenerOwner as roSGNode, eventListener as string) | Add a listener for the specified player event. |
215+
| removeEventListener(eventType as string, listenerOwner as roSGNode, eventListener as string) | Remove a listener for the specified player event. |
216+
| schedule(adDescription as AdDescription, sourceDescription as roAssociativeArray) | Schedule an ad break. Optionally, pass a source description for use in custom server-side ad integrations. |
216217

217218
| Event | Class | Description |
218219
| ---------------- | ------------ | ------------------------------------------------------------- |
@@ -375,11 +376,12 @@ The DAI API emits the following ad events, which can be listened to via `addEven
375376

376377
The PlayerConfiguration object is passed to the configure method. It is an associative array with the following properties:
377378

378-
| Property | Type | Description |
379-
| ---------- | ------------------ | --------------------------------------------------------------------------------- |
380-
| license | string | Your THEO license. Optional if `licenseUrl` is specified. |
381-
| licenseUrl | string | The URL from which to load your THEO license. Optional if `license` is specified. |
382-
| theolive | roAssociativeArray | The configuration for THEOlive. Optional. |
379+
| Property | Type | Description |
380+
| ---------- | ------------------ | ------------------------------------------------------------------------------------ |
381+
| license | string | Your THEO license. Optional if `licenseUrl` is specified. |
382+
| licenseUrl | string | The URL from which to load your THEO license. Optional if `license` is specified. |
383+
| theolive | roAssociativeArray | The configuration for THEOlive. Optional. |
384+
| cmcd | CmcdConfiguration | The configuration for CMCD. Optional. See [CMCD Configuration](#cmcd-configuration). |
383385

384386
#### THEOlive Configuration
385387

@@ -389,6 +391,35 @@ The PlayerConfiguration object is passed to the configure method. It is an assoc
389391
| discoveryUrls | roArray of strings | Array of discovery URLs for your THEOlive deployment. If `theoLive` config is omitted, the default URL is 'https://discovery.theo.live/v2/publications/'. |
390392
| externalSessionId | string | A session ID to use for your THEOlive session. This can tie an application session to a THEOlens session. |
391393

394+
#### CMCD Configuration
395+
396+
The CMCD configuration enables Common Media Client Data reporting. It can be set at the player level (in `PlayerConfiguration.cmcd`) or at the source level (in `SourceDescription.cmcd`). CMCDv1 will be used for all streams. CMCDv2 events will also be used if `eventEndpoints` is set.
397+
398+
**CmcdConfiguration** (player-level):
399+
400+
| Property | Type | Description |
401+
| ----------------- | ------------------------------------ | ---------------------------------------------------- |
402+
| externalSessionId | string | Optional. External session identifier for CMCD. |
403+
| userId | string | Optional. User identifier for CMCD reporting. |
404+
| eventEndpoints | roArray of CmcdEndpointConfiguration | Optional. Array of endpoints to send CMCD events to. |
405+
406+
**CmcdSourceConfiguration** (source-level, extends CmcdConfiguration):
407+
408+
| Property | Type | Description |
409+
| ----------------- | ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- |
410+
| externalSessionId | string | Optional. External session identifier for CMCD. This is recommended to use to join CMCDv1 and CMCDv2 sessions together. |
411+
| userId | string | Optional. User identifier for CMCD reporting. |
412+
| eventEndpoints | roArray of CmcdEndpointConfiguration | Optional. Array of endpoints to send CMCD events to. |
413+
| sessionId | string | Optional. Session identifier for this source. Only used for CMCDv2 event mode. A Roku-generated ID is used for CMCDv1 request mode. |
414+
415+
**CmcdEndpointConfiguration**:
416+
417+
| Property | Type | Description |
418+
| -------- | ------ | ----------------------------------------------- |
419+
| url | string | The URL of the endpoint to send CMCD events to. |
420+
421+
**Merge Behavior**: When CMCD is configured at both the player and source level, the source configuration takes precedence for scalar properties (`externalSessionId`, `userId`, `sessionId`). The `eventEndpoints` arrays from both configurations are combined, with duplicates removed based on URL (source endpoints take priority).
422+
392423
## THEOlive API
393424

394425
The THEOlive API exposes the following property.
@@ -468,3 +499,75 @@ There are several player events being emitted.
468499
}
469500
```
470501
- `timeupdate`: Fired when the current playback position changed as part of normal playback or in an especially interesting way, for example discontinuously. The event data is the currentTime.
502+
503+
### THEOlive Data
504+
505+
The THEOlive events provide additional information about the THEOlive distribution and endpoint. The `distributionloadstart` event has the distribution ID as the `src` property. The `distributionoffline` event has the distribution ID as the `distributionId` property. The `intenttofallback` event contains the reason for the fallback as the `reason` property. However, the other THEOlive events contain more detailed information about the distribution and endpoint.
506+
507+
For the `distributionloaded` event, the following properties are available on the Distribution object:
508+
509+
| Property | Type | Description |
510+
| -------------- | -------------------- | ---------------------------------------------------- |
511+
| deleted | boolean | Optional. Whether the distribution has been deleted. |
512+
| endpoints | roArray of Endpoints | An array of endpoints. |
513+
| id | string | The distribution's ID. |
514+
| maxBitrate | integer | Optional. The maximum bitrate of the distribution. |
515+
| name | string | The distribution's name. |
516+
| organizationId | string | Optional. The organization's THEOlive ID. |
517+
518+
The `endpointloaded` event comes with the following properties:
519+
520+
| Property | Type | Description |
521+
| -------------- | ------------------ | ------------------------------------------------- |
522+
| channelName | string | The channel/distribution's name. |
523+
| distributionId | string | The ID used as the `src` for the THEOlive source. |
524+
| endpoint | roAssociativeArray | The Endpoint that loaded. |
525+
526+
The `endpoint` property contains an Endpoint object with the following information:
527+
528+
| Property | Type | Description |
529+
| ------------ | ------ | ------------------------------------------------------------------------------------ |
530+
| cdn | string | Optional. The CDN used for this endpoint. |
531+
| provider | string | Optional. The provider of this endpoint. |
532+
| src | string | The URL of the stream for this endpoint. |
533+
| srcType | string | The type of the stream for this endpoint. |
534+
| adSrc | string | _Deprecated_ Optional. The URL for the ad stream. Only for v1/v2 endpoints. |
535+
| daiAssetKey | string | _Deprecated_ Optional. The DAI identifier for this stream. Only for v1/v2 endpoints. |
536+
| hlsMpegTsSrc | string | _Deprecated_ Optional. The HLS MPEG-TS stream URL. Only for v1/v2 endpoints. |
537+
| hlsSrc | string | _Deprecated_ Optional. The HLS stream URL. Only for v1/v2 endpoints. |
538+
539+
# Capabilities API
540+
541+
The THEO SDK now also exposes a couple of helper methods for getting the capabilities of the Roku device. These methods are available on the `Capabilities` object, which can be accessed via `THEOsdk:Capabilities`, separate from the THEOplayer.
542+
543+
The Capabilities object has the following methods
544+
545+
| Method | Description |
546+
| ------------------ | ------------------------------------------------------------------------------------ |
547+
| getWidevineLevel() | Returns an object with information about the Widevine level supported by the device. |
548+
| getHevcSupport() | Returns an object with information about the HEVC support on the device. |
549+
550+
The `getWidevineLevel` method returns an object with the following properties:
551+
552+
| Property | Type | Description |
553+
| -------- | ------- | ------------------------------------------------------------------------------------- |
554+
| level | string | A string of a number representing the Widevine level supported by the device. |
555+
| multikey | boolean | A boolean indicating whether the device supports multiple keys. |
556+
| tee | boolean | A boolean indicating whether the device supports Trusted Execution Environment (TEE). |
557+
| version | string | A string representing the Widevine version supported by the device. |
558+
559+
The `getHevcSupport` method returns an object with the following properties:
560+
561+
| Property | Type | Description |
562+
| --------------------- | ------- | --------------------------------------------------------------------- |
563+
| isSupported | boolean | A boolean indicating whether the device supports HEVC. |
564+
| supportsMain10Profile | boolean | A boolean indicating whether the device supports the Main 10 profile. |
565+
| videoMode | string | A string representing the video mode supported by the device. |
566+
567+
Example usage:
568+
569+
```brightscript
570+
m.capabilities = createObject("roSgNode", "THEOsdk:Capabilities")
571+
widevineLevel = m.capabilities.callFunc("getWidevineLevel")
572+
hevcSupport = m.capabilities.callFunc("getHevcSupport")
573+
```

0 commit comments

Comments
 (0)