Skip to content

Commit 671a943

Browse files
authored
test: Fix test decode errors by updating test assets (shaka-project#6581)
The Axinom v6 test vectors we used were failing to decode on ChromecastHub. This upgrades those test segments to Axinom's latest test vectors (v10). Box offsets and content keys have been updated accordingly. This also adds the additional error logging that helped to identify the decoding failure.
1 parent be60f40 commit 671a943

6 files changed

+46
-25
lines changed

test/media/drm_engine_integration.js

+18-8
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
describe('DrmEngine', () => {
88
const ContentType = shaka.util.ManifestParserUtils.ContentType;
99

10-
// These come from Axinom and use the Axinom license server.
11-
// TODO: Do not rely on third-party services long-term.
10+
// These come from Axinom.
1211
const videoInitSegmentUri = '/base/test/test/assets/multidrm-video-init.mp4';
1312
const videoSegmentUri = '/base/test/test/assets/multidrm-video-segment.mp4';
1413
const audioInitSegmentUri = '/base/test/test/assets/multidrm-audio-init.mp4';
@@ -89,9 +88,13 @@ describe('DrmEngine', () => {
8988
drmEngine = new shaka.media.DrmEngine(playerInterface);
9089
const config = shaka.util.PlayerConfiguration.createDefault().drm;
9190
config.servers['com.widevine.alpha'] =
92-
'https://cwip-shaka-proxy.appspot.com/specific_key?blodJidXR9eARuql0dNLWg=GX8m9XLIZNIzizrl0RTqnA';
91+
'https://cwip-shaka-proxy.appspot.com/specific_key?QGCoZYh4Qmecv5GuW64ecg=/DU0CDcxDMD7U96X4ipp4A';
9392
config.servers['com.microsoft.playready'] =
94-
'https://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(kid:6e5a1d26-2757-47d7-8046-eaa5d1d34b5a,contentkey:GX8m9XLIZNIzizrl0RTqnA==,sl:150)';
93+
'https://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(kid:4060a865-8878-4267-9cbf-91ae5bae1e72,contentkey:/DU0CDcxDMD7U96X4ipp4A==,sl:150)';
94+
config.preferredKeySystems = [
95+
'com.widevine.alpha',
96+
'com.microsoft.playready',
97+
];
9598
drmEngine.configure(config);
9699

97100
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
@@ -179,8 +182,11 @@ describe('DrmEngine', () => {
179182
eventManager.listen(video, 'encrypted', () => {
180183
encryptedEventSeen.resolve();
181184
});
185+
182186
eventManager.listen(video, 'error', () => {
187+
fail('MediaError message ' + video.error.message);
183188
fail('MediaError code ' + video.error.code);
189+
184190
let extended = video.error.msExtendedCode;
185191
if (extended) {
186192
if (extended < 0) {
@@ -197,16 +203,17 @@ describe('DrmEngine', () => {
197203
});
198204

199205
const variants = manifest.variants;
200-
201206
await drmEngine.initForPlayback(variants, manifest.offlineSessionIds);
202207
await drmEngine.attach(video);
208+
203209
await mediaSourceEngine.appendBuffer(
204210
ContentType.VIDEO, videoInitSegment, null, fakeStream,
205211
/* hasClosedCaptions= */ false);
206212
await mediaSourceEngine.appendBuffer(
207213
ContentType.AUDIO, audioInitSegment, null, fakeStream,
208214
/* hasClosedCaptions= */ false);
209215
await encryptedEventSeen;
216+
210217
// With PlayReady, a persistent license policy can cause a different
211218
// chain of events. In particular, the request is bypassed and we
212219
// get a usable key right away.
@@ -264,8 +271,8 @@ describe('DrmEngine', () => {
264271
// Configure DrmEngine for ClearKey playback.
265272
const config = shaka.util.PlayerConfiguration.createDefault().drm;
266273
config.clearKeys = {
267-
// From https://github.com/Axinom/public-test-vectors/tree/conservative#v61-multidrm
268-
'6e5a1d26275747d78046eaa5d1d34b5a': '197f26f572c864d2338b3ae5d114ea9c',
274+
// From https://github.com/Axinom/public-test-vectors/blob/master/README.md#v10
275+
'4060a865887842679cbf91ae5bae1e72': 'fc35340837310cc0fb53de97e22a69e0',
269276
};
270277
drmEngine.configure(config);
271278

@@ -277,8 +284,11 @@ describe('DrmEngine', () => {
277284
eventManager.listen(video, 'encrypted', () => {
278285
encryptedEventSeen.resolve();
279286
});
287+
280288
eventManager.listen(video, 'error', () => {
289+
fail('MediaError message ' + video.error.message);
281290
fail('MediaError code ' + video.error.code);
291+
282292
let extended = video.error.msExtendedCode;
283293
if (extended) {
284294
if (extended < 0) {
@@ -295,9 +305,9 @@ describe('DrmEngine', () => {
295305
});
296306

297307
const variants = manifest.variants;
298-
299308
await drmEngine.initForPlayback(variants, manifest.offlineSessionIds);
300309
await drmEngine.attach(video);
310+
301311
await mediaSourceEngine.appendBuffer(
302312
ContentType.VIDEO, videoInitSegment, null, fakeStream,
303313
/* hasClosedCaptions= */ false);
-588 Bytes
Binary file not shown.
1.05 KB
Binary file not shown.
64 Bytes
Binary file not shown.
-3.13 KB
Binary file not shown.

test/test/util/test_scheme.js

+28-17
Original file line numberDiff line numberDiff line change
@@ -453,47 +453,58 @@ const widevineDrmServers = {
453453
'com.widevine.alpha': 'https://cwip-shaka-proxy.appspot.com/no_auth',
454454
};
455455

456+
/** @type {string} */
457+
const axinomMultiDrmInitData = [
458+
'AAAAXHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADwSEEBgqGWIeEJnnL+RrluuHnISEE',
459+
'BgqGWIeEJnnL+RrluuHnISEEBgqGWIeEJnnL+RrluuHnJI49yVmwYAAAImcHNzaAAAAACa',
460+
'BPB5mEBChquS5lvgiF+VAAACBgYCAAABAAEA/AE8AFcAUgBNAEgARQBBAEQARQBSACAAeA',
461+
'BtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8A',
462+
'cwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAG',
463+
'UAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAu',
464+
'ADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQ',
465+
'BMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMA',
466+
'VABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAE',
467+
'kARAA+AFoAYQBoAGcAUQBIAGkASQBaADAASwBjAHYANQBHAHUAVwA2ADQAZQBjAGcAPQA9',
468+
'ADwALwBLAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AeQB4AGwARwBsAGgAZgBEACsAYQ',
469+
'BjAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgA',
470+
'RQBBAEQARQBSAD4A',
471+
].join('');
472+
456473
/** @type {AVMetadataType} */
457474
const axinomMultiDrmVideoSegment = {
458-
// Taken from Axinom's v6 test vector.
475+
// Taken from Axinom's v10 test vectors.
459476
initSegmentUri: '/base/test/test/assets/multidrm-video-init.mp4',
460-
mdhdOffset: 0x1d1,
477+
mdhdOffset: 0x191,
461478
segmentUri: '/base/test/test/assets/multidrm-video-segment.mp4',
462-
tfdtOffset: 0x78,
479+
tfdtOffset: 0x88,
463480
segmentDuration: 4,
464481
mimeType: 'video/mp4',
465482
codecs: 'avc1.64001e',
466-
initData:
467-
'AAAANHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABQIARIQblodJidXR9eARuq' +
468-
'l0dNLWg==',
483+
initData: axinomMultiDrmInitData,
469484
};
470485

471486
/** @type {AVMetadataType} */
472487
const axinomMultiDrmAudioSegment = {
473-
// Taken from Axinom's v6 test vector.
488+
// Taken from Axinom's v10 test vectors.
474489
initSegmentUri: '/base/test/test/assets/multidrm-audio-init.mp4',
475-
mdhdOffset: 0x192,
490+
mdhdOffset: 0x18d,
476491
segmentUri: '/base/test/test/assets/multidrm-audio-segment.mp4',
477-
tfdtOffset: 0x7c,
492+
tfdtOffset: 0x88,
478493
segmentDuration: 4,
479494
mimeType: 'audio/mp4',
480495
codecs: 'mp4a.40.2',
481-
initData:
482-
'AAAANHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABQIARIQblodJidXR9eARuq' +
483-
'l0dNLWg==',
496+
initData: axinomMultiDrmInitData,
484497
};
485498

486499
/** @type {!Object.<string, string>} */
487500
const axinomDrmServers = {
488501
// NOTE: These are not Axinom's actual servers. These are test servers for
489502
// Widevine and PlayReady that let us specify the known key IDs and keys for
490-
// Axinom's v6 test vectors. Axinom's own servers started returning 403
491-
// errors for these older test vectors, and we were forced to switch to
492-
// something stable and independent.
503+
// Axinom's v10 test vectors.
493504
'com.widevine.alpha':
494-
'https://cwip-shaka-proxy.appspot.com/specific_key?blodJidXR9eARuql0dNLWg=GX8m9XLIZNIzizrl0RTqnA',
505+
'https://cwip-shaka-proxy.appspot.com/specific_key?QGCoZYh4Qmecv5GuW64ecg=/DU0CDcxDMD7U96X4ipp4A',
495506
'com.microsoft.playready':
496-
'https://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(kid:6e5a1d26-2757-47d7-8046-eaa5d1d34b5a,contentkey:GX8m9XLIZNIzizrl0RTqnA==,sl:150)',
507+
'https://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(kid:4060a865-8878-4267-9cbf-91ae5bae1e72,contentkey:/DU0CDcxDMD7U96X4ipp4A==,sl:150)',
497508
};
498509

499510
/** @type {TextMetadataType} */

0 commit comments

Comments
 (0)