Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: Fix test decode errors by updating test assets #6581

Merged
merged 1 commit into from
May 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
26 changes: 18 additions & 8 deletions test/media/drm_engine_integration.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
describe('DrmEngine', () => {
const ContentType = shaka.util.ManifestParserUtils.ContentType;

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

manifest = shaka.test.ManifestGenerator.generate((manifest) => {
Expand Down Expand Up @@ -179,8 +182,11 @@ describe('DrmEngine', () => {
eventManager.listen(video, 'encrypted', () => {
encryptedEventSeen.resolve();
});

eventManager.listen(video, 'error', () => {
fail('MediaError message ' + video.error.message);
fail('MediaError code ' + video.error.code);

let extended = video.error.msExtendedCode;
if (extended) {
if (extended < 0) {
Expand All @@ -197,16 +203,17 @@ describe('DrmEngine', () => {
});

const variants = manifest.variants;

await drmEngine.initForPlayback(variants, manifest.offlineSessionIds);
await drmEngine.attach(video);

await mediaSourceEngine.appendBuffer(
ContentType.VIDEO, videoInitSegment, null, fakeStream,
/* hasClosedCaptions= */ false);
await mediaSourceEngine.appendBuffer(
ContentType.AUDIO, audioInitSegment, null, fakeStream,
/* hasClosedCaptions= */ false);
await encryptedEventSeen;

// With PlayReady, a persistent license policy can cause a different
// chain of events. In particular, the request is bypassed and we
// get a usable key right away.
Expand Down Expand Up @@ -264,8 +271,8 @@ describe('DrmEngine', () => {
// Configure DrmEngine for ClearKey playback.
const config = shaka.util.PlayerConfiguration.createDefault().drm;
config.clearKeys = {
// From https://github.com/Axinom/public-test-vectors/tree/conservative#v61-multidrm
'6e5a1d26275747d78046eaa5d1d34b5a': '197f26f572c864d2338b3ae5d114ea9c',
// From https://github.com/Axinom/public-test-vectors/blob/master/README.md#v10
'4060a865887842679cbf91ae5bae1e72': 'fc35340837310cc0fb53de97e22a69e0',
};
drmEngine.configure(config);

Expand All @@ -277,8 +284,11 @@ describe('DrmEngine', () => {
eventManager.listen(video, 'encrypted', () => {
encryptedEventSeen.resolve();
});

eventManager.listen(video, 'error', () => {
fail('MediaError message ' + video.error.message);
fail('MediaError code ' + video.error.code);

let extended = video.error.msExtendedCode;
if (extended) {
if (extended < 0) {
Expand All @@ -295,9 +305,9 @@ describe('DrmEngine', () => {
});

const variants = manifest.variants;

await drmEngine.initForPlayback(variants, manifest.offlineSessionIds);
await drmEngine.attach(video);

await mediaSourceEngine.appendBuffer(
ContentType.VIDEO, videoInitSegment, null, fakeStream,
/* hasClosedCaptions= */ false);
Expand Down
Binary file modified test/test/assets/multidrm-audio-init.mp4
Binary file not shown.
Binary file modified test/test/assets/multidrm-audio-segment.mp4
Binary file not shown.
Binary file modified test/test/assets/multidrm-video-init.mp4
Binary file not shown.
Binary file modified test/test/assets/multidrm-video-segment.mp4
Binary file not shown.
45 changes: 28 additions & 17 deletions test/test/util/test_scheme.js
Original file line number Diff line number Diff line change
Expand Up @@ -453,47 +453,58 @@ const widevineDrmServers = {
'com.widevine.alpha': 'https://cwip-shaka-proxy.appspot.com/no_auth',
};

/** @type {string} */
const axinomMultiDrmInitData = [
'AAAAXHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADwSEEBgqGWIeEJnnL+RrluuHnISEE',
'BgqGWIeEJnnL+RrluuHnISEEBgqGWIeEJnnL+RrluuHnJI49yVmwYAAAImcHNzaAAAAACa',
'BPB5mEBChquS5lvgiF+VAAACBgYCAAABAAEA/AE8AFcAUgBNAEgARQBBAEQARQBSACAAeA',
'BtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8A',
'cwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAG',
'UAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAu',
'ADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQ',
'BMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMA',
'VABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAE',
'kARAA+AFoAYQBoAGcAUQBIAGkASQBaADAASwBjAHYANQBHAHUAVwA2ADQAZQBjAGcAPQA9',
'ADwALwBLAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AeQB4AGwARwBsAGgAZgBEACsAYQ',
'BjAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgA',
'RQBBAEQARQBSAD4A',
].join('');

/** @type {AVMetadataType} */
const axinomMultiDrmVideoSegment = {
// Taken from Axinom's v6 test vector.
// Taken from Axinom's v10 test vectors.
initSegmentUri: '/base/test/test/assets/multidrm-video-init.mp4',
mdhdOffset: 0x1d1,
mdhdOffset: 0x191,
segmentUri: '/base/test/test/assets/multidrm-video-segment.mp4',
tfdtOffset: 0x78,
tfdtOffset: 0x88,
segmentDuration: 4,
mimeType: 'video/mp4',
codecs: 'avc1.64001e',
initData:
'AAAANHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABQIARIQblodJidXR9eARuq' +
'l0dNLWg==',
initData: axinomMultiDrmInitData,
};

/** @type {AVMetadataType} */
const axinomMultiDrmAudioSegment = {
// Taken from Axinom's v6 test vector.
// Taken from Axinom's v10 test vectors.
initSegmentUri: '/base/test/test/assets/multidrm-audio-init.mp4',
mdhdOffset: 0x192,
mdhdOffset: 0x18d,
segmentUri: '/base/test/test/assets/multidrm-audio-segment.mp4',
tfdtOffset: 0x7c,
tfdtOffset: 0x88,
segmentDuration: 4,
mimeType: 'audio/mp4',
codecs: 'mp4a.40.2',
initData:
'AAAANHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABQIARIQblodJidXR9eARuq' +
'l0dNLWg==',
initData: axinomMultiDrmInitData,
};

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

/** @type {TextMetadataType} */
Expand Down