Skip to content

Commit

Permalink
feat: Move shaka.util.FairPlayUtils to shaka.drm.FairPlay (#8217)
Browse files Browse the repository at this point in the history
  • Loading branch information
avelad authored Mar 6, 2025
1 parent 9ba3132 commit c2ce68f
Show file tree
Hide file tree
Showing 7 changed files with 460 additions and 448 deletions.
1 change: 1 addition & 0 deletions build/types/core
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

+../../lib/drm/drm_engine.js
+../../lib/drm/drm_utils.js
+../../lib/drm/fairplay.js
+../../lib/drm/playready.js

+../../lib/media/adaptation_set.js
Expand Down
48 changes: 20 additions & 28 deletions docs/tutorials/fairplay.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ player.configure('drm.initDataTransform', (initData, initDataType, drmInfo) => {
const skdUri = shaka.util.StringUtils.fromBytesAutoDetect(initData);
const contentId = getMyContentId(skdUri);
const cert = drmInfo.serverCertificate;
return shaka.util.FairPlayUtils.initDataTransform(initData, contentId, cert);
return shaka.drm.FairPlay.initDataTransform(initData, contentId, cert);
});
```

Expand Down Expand Up @@ -139,11 +139,10 @@ Note: Some providers support both Modern EME and legacy Apple Media Keys.
For integration with EZDRM the following can be used:

```js
const FairPlayUtils = shaka.util.FairPlayUtils;
player.getNetworkingEngine()
.registerRequestFilter(FairPlayUtils.ezdrmFairPlayRequest);
.registerRequestFilter(shaka.drm.FairPlay.ezdrmFairPlayRequest);
player.getNetworkingEngine()
.registerResponseFilter(FairPlayUtils.commonFairPlayResponse);
.registerResponseFilter(shaka.drm.FairPlay.commonFairPlayResponse);
```

Note: If the url of the license server has to undergo any transformation
Expand All @@ -155,8 +154,7 @@ player.getNetworkingEngine().registerRequestFilter((type, request, context) => {
return;
}
const uri = request.uris[0];
const FairPlayUtils = shaka.util.FairPlayUtils;
const contentId = FairPlayUtils.defaultGetContentId(request.initData);
const contentId = shaka.drm.FairPlay.defaultGetContentId(request.initData);
const newUri = uri.replace('^assetId^', contentId);
request.uris = [newUri];
request.headers['Content-Type'] = 'application/octet-stream'
Expand All @@ -169,13 +167,12 @@ For integration with EZDRM the following can be used:

```js
shaka.polyfill.PatchedMediaKeysApple.install();
const FairPlayUtils = shaka.util.FairPlayUtils;
player.getNetworkingEngine()
.registerRequestFilter(FairPlayUtils.ezdrmFairPlayRequest);
.registerRequestFilter(shaka.drm.FairPlay.ezdrmFairPlayRequest);
player.getNetworkingEngine()
.registerResponseFilter(FairPlayUtils.commonFairPlayResponse);
.registerResponseFilter(shaka.drm.FairPlay.commonFairPlayResponse);
player.configure('drm.initDataTransform',
FairPlayUtils.ezdrmInitDataTransform);
shaka.drm.FairPlay.ezdrmInitDataTransform);
```

Note: If the url of the license server has to undergo any transformation
Expand All @@ -187,8 +184,7 @@ player.getNetworkingEngine().registerRequestFilter((type, request, context) => {
return;
}
const uri = request.uris[0];
const FairPlayUtils = shaka.util.FairPlayUtils;
const contentId = FairPlayUtils.defaultGetContentId(request.initData);
const contentId = shaka.drm.FairPlay.defaultGetContentId(request.initData);
const newUri = uri.replace('^assetId^', contentId);
request.uris = [newUri];
request.headers['Content-Type'] = 'application/octet-stream'
Expand All @@ -201,13 +197,12 @@ For integration with Verimatrix the following can be used:

```js
shaka.polyfill.PatchedMediaKeysApple.install();
const FairPlayUtils = shaka.util.FairPlayUtils;
player.getNetworkingEngine()
.registerRequestFilter(FairPlayUtils.verimatrixFairPlayRequest);
.registerRequestFilter(shaka.drm.FairPlay.verimatrixFairPlayRequest);
player.getNetworkingEngine()
.registerResponseFilter(FairPlayUtils.commonFairPlayResponse);
.registerResponseFilter(shaka.drm.FairPlay.commonFairPlayResponse);
player.configure('drm.initDataTransform',
FairPlayUtils.verimatrixInitDataTransform);
shaka.drm.FairPlay.verimatrixInitDataTransform);
```

#### Conax (legacy Apple Media Keys)
Expand All @@ -216,13 +211,12 @@ For integration with Conax the following can be used:

```js
shaka.polyfill.PatchedMediaKeysApple.install();
const FairPlayUtils = shaka.util.FairPlayUtils;
player.getNetworkingEngine()
.registerRequestFilter(FairPlayUtils.conaxFairPlayRequest);
.registerRequestFilter(shaka.drm.FairPlay.conaxFairPlayRequest);
player.getNetworkingEngine()
.registerResponseFilter(FairPlayUtils.commonFairPlayResponse);
.registerResponseFilter(shaka.drm.FairPlay.commonFairPlayResponse);
player.configure('drm.initDataTransform',
FairPlayUtils.conaxInitDataTransform);
shaka.drm.FairPlay.conaxInitDataTransform);
```

#### ExpressPlay (legacy Apple Media Keys)
Expand All @@ -231,13 +225,12 @@ For integration with ExpressPlay the following can be used:

```js
shaka.polyfill.PatchedMediaKeysApple.install();
const FairPlayUtils = shaka.util.FairPlayUtils;
player.getNetworkingEngine()
.registerRequestFilter(FairPlayUtils.expressplayFairPlayRequest);
.registerRequestFilter(shaka.drm.FairPlay.expressplayFairPlayRequest);
player.getNetworkingEngine()
.registerResponseFilter(FairPlayUtils.commonFairPlayResponse);
.registerResponseFilter(shaka.drm.FairPlay.commonFairPlayResponse);
player.configure('drm.initDataTransform',
FairPlayUtils.expressplayInitDataTransform);
shaka.drm.FairPlay.expressplayInitDataTransform);
```

#### Nagra (legacy Apple Media Keys)
Expand All @@ -254,12 +247,11 @@ For integration with Mux the following can be used:

```js
shaka.polyfill.PatchedMediaKeysApple.install();
const FairPlayUtils = shaka.util.FairPlayUtils;
player.getNetworkingEngine()
.registerRequestFilter(FairPlayUtils.muxFairPlayRequest);
.registerRequestFilter(shaka.drm.FairPlay.muxFairPlayRequest);
player.getNetworkingEngine()
.registerResponseFilter(FairPlayUtils.commonFairPlayResponse);
.registerResponseFilter(shaka.drm.FairPlay.commonFairPlayResponse);
player.configure('drm.initDataTransform',
FairPlayUtils.muxInitDataTransform);
shaka.drm.FairPlay.muxInitDataTransform);
```

1 change: 1 addition & 0 deletions docs/tutorials/upgrade.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,3 +127,4 @@ application:
- The constructor no longer takes `mediaElement` as a parameter; use the `attach` method to attach to a media element instead. (Deprecated in v4.6)
- The `TimelineRegionInfo.eventElement` has been replaced with `TimelineRegionInfo.eventNode` property, the new property type is `shaka.externs.xml.Node` instead of `Element`
- New API for audio: `getAudioTracks` and `selectAudioTrack`, we also deprecated in v4.14 `getAudioLanguages`, `getAudioLanguagesAndRoles` and `selectAudioLanguage`.
- `shaka.util.FairPlayUtils` is moved to `shaka.drm.FairPlay` (Deprecated in v4.14)
Loading

0 comments on commit c2ce68f

Please sign in to comment.