diff --git a/lib/dpctf-testharness.js b/lib/dpctf-testharness.js index ca909009..ead7e283 100644 --- a/lib/dpctf-testharness.js +++ b/lib/dpctf-testharness.js @@ -219,7 +219,7 @@ function DpctfTest(config) { }); video.addEventListener("canplay", function () { - log("video can play") + log("video can play"); updateQrCodePosition(); }); @@ -291,8 +291,15 @@ function DpctfTest(config) { } calculateMissingParameters(); - if (usePlayout && parameters.playout) { - applyPlayout(parameters.playout); + if (usePlayout) { + if (parameters.playout) { + applyVideoPlayout(parameters.playout); + } + if (parameters.audioPlayout) { + applyAudioPlayout(parameters.audioPlayout); + } else { + applyAudioPlayout(parameters.playout); + } } if (parameters.gapDuration && parameters.gapLocationFragment) { @@ -534,8 +541,8 @@ function DpctfTest(config) { }); } - function applyPlayout(playout) { - player.clearVideoSegments(); + function applyPlayout(playout, clearSegments, setSegments) { + clearSegments(); var ranges = Object.keys(playout); var promises = []; for (var range of ranges) { @@ -551,14 +558,31 @@ function DpctfTest(config) { startSegment: rangeParts[0], endSegment: rangeParts[1], }; - var videoPromise = player.setVideoSegments(segmentConfig); + var videoPromise = setSegments(segmentConfig); promises.push(videoPromise); - - var audioPromise = player.setAudioSegments(segmentConfig); - promises.push(audioPromise); } - Promise.all(promises).then(function () { + return Promise.all(promises); + } + + function applyVideoPlayout(playout) { + applyPlayout( + playout, + player.clearVideoSegments, + player.setVideoSegments + ).then(function () { + if (parameters.playbackDuration) { + player.setDuration(parameters.playbackDuration); + } + }); + } + + function applyAudioPlayout(playout) { + applyPlayout( + playout, + player.clearAudioSegments, + player.setAudioSegments + ).then(function () { if (parameters.playbackDuration) { player.setDuration(parameters.playbackDuration); } @@ -776,6 +800,7 @@ function DpctfTest(config) { contentKey: determineValue("content_key"), loading: determineValue("loading"), playout: determineValue("playout"), + audioPlayout: determineValue("audio_playout"), gapLocationFragment: determineValue("gap_location_fragment"), gapDuration: determineValue("gap_duration"), randomAccessTo: determineValue("random_access_to"), @@ -842,6 +867,12 @@ function DpctfTest(config) { } parameters.secondPlayout = secondPlayout; + var audioPlayout = determineValue("playout"); + if (audioPlayout) { + audioPlayout = calcPlayout(audioPlayout); + } + parameters.audioPlayout = audioPlayout; + resolve(parameters); }); xhr.open("GET", "/test-config.json"); diff --git a/test-config.json b/test-config.json index 8c5d0d51..a6a6712e 100644 --- a/test-config.json +++ b/test-config.json @@ -834,6 +834,11 @@ [1, 1, 1], [1, 1, 2], [1, 1, 3], [2, 1, 1], [2, 1, 2], [2, 1, 3], [1, 1, 4], [1, 1, 5], [1, 1, 6] + ], + "audio_playout": [ + [1, 1, 1], [1, 1, 2], [1, 1, 3], + [2, 1, 1], [2, 1, 2], [2, 1, 3], + [1, 1, 4], [1, 1, 5] ] }, "ceac-online/playback-over-wave-baseline-splice-constraints__at3_at4.html": {