Simplify + Fix WV encrypted playback tests

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149993442
This commit is contained in:
olly 2017-03-13 14:48:32 -07:00 committed by Oliver Woodman
parent 139252c9d3
commit 4b1410bced
4 changed files with 74 additions and 84 deletions

View File

@ -135,13 +135,12 @@ public final class DashHostedTest extends ExoHostedTest {
}
public Builder setManifestUrl(String manifestUrl) {
this.manifestUrl = MANIFEST_URL_PREFIX + manifestUrl;
this.manifestUrl = manifestUrl;
return this;
}
public Builder setManifestUrlForWidevine(String manifestUrl, String videoMimeType) {
this.useL1Widevine = isL1WidevineAvailable(videoMimeType);
this.manifestUrl = getWidevineManifestUrl(manifestUrl, useL1Widevine);
public Builder setWidevineMimeType(String mimeType) {
this.useL1Widevine = isL1WidevineAvailable(mimeType);
this.widevineLicenseUrl = getWidevineLicenseUrl(useL1Widevine);
return this;
}
@ -177,13 +176,6 @@ public final class DashHostedTest extends ExoHostedTest {
private static final int MAX_CONSECUTIVE_DROPPED_VIDEO_FRAMES = 10;
private static final float MAX_DROPPED_VIDEO_FRAME_FRACTION = 0.01f;
private static final String MANIFEST_URL_PREFIX = "https://storage.googleapis.com/exoplayer-test-"
+ "media-1/gen-4/screens/dash-vod-single-segment/";
// TODO: Don't need separate suffixes. Clean up.
private static final String WIDEVINE_L1_SUFFIX = ".mpd";
private static final String WIDEVINE_L3_SUFFIX = ".mpd";
private static final String WIDEVINE_LICENSE_URL =
"https://proxy.uat.widevine.com/proxy?provider=widevine_test&video_id=";
private static final String WIDEVINE_SW_CRYPTO_CONTENT_ID = "exoplayer_test_1";
@ -204,11 +196,6 @@ public final class DashHostedTest extends ExoHostedTest {
boolean needsCddLimitedRetry;
public static String getWidevineManifestUrl(String manifestUrl, boolean useL1Widevine) {
return MANIFEST_URL_PREFIX + manifestUrl
+ (useL1Widevine ? WIDEVINE_L1_SUFFIX : WIDEVINE_L3_SUFFIX);
}
public static String getWidevineLicenseUrl(boolean useL1Widevine) {
return WIDEVINE_LICENSE_URL
+ (useL1Widevine ? WIDEVINE_HW_SECURE_DECODE_CONTENT_ID : WIDEVINE_SW_CRYPTO_CONTENT_ID);
@ -216,13 +203,12 @@ public final class DashHostedTest extends ExoHostedTest {
@TargetApi(18)
@SuppressWarnings("ResourceType")
public static boolean isL1WidevineAvailable(String videoMimeType) {
public static boolean isL1WidevineAvailable(String mimeType) {
try {
// Force L3 if secure decoder is not available.
if (MediaCodecUtil.getDecoderInfo(videoMimeType, true) == null) {
if (MediaCodecUtil.getDecoderInfo(mimeType, true) == null) {
return false;
}
MediaDrm mediaDrm = new MediaDrm(WIDEVINE_UUID);
String securityProperty = mediaDrm.getPropertyString(SECURITY_LEVEL_PROPERTY);
mediaDrm.release();

View File

@ -214,7 +214,7 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
.setManifestUrl(DashTestData.VP9_MANIFEST)
.setFullPlaybackNoSeeking(true)
.setCanIncludeAdditionalVideoFormats(false)
.setAudioVideoFormats(DashTestData.VORBIS_AUDIO_REPRESENTATION_ID,
.setAudioVideoFormats(DashTestData.VP9_VORBIS_AUDIO_REPRESENTATION_ID,
DashTestData.VP9_CDD_FIXED)
.runTest(getActivity(), getInstrumentation());
}
@ -229,7 +229,7 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
.setManifestUrl(DashTestData.VP9_MANIFEST)
.setFullPlaybackNoSeeking(true)
.setCanIncludeAdditionalVideoFormats(true)
.setAudioVideoFormats(DashTestData.VORBIS_AUDIO_REPRESENTATION_ID,
.setAudioVideoFormats(DashTestData.VP9_VORBIS_AUDIO_REPRESENTATION_ID,
DashTestData.VP9_CDD_ADAPTIVE)
.runTest(getActivity(), getInstrumentation());
}
@ -245,7 +245,7 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
.setFullPlaybackNoSeeking(false)
.setCanIncludeAdditionalVideoFormats(true)
.setActionSchedule(SEEKING_SCHEDULE)
.setAudioVideoFormats(DashTestData.VORBIS_AUDIO_REPRESENTATION_ID,
.setAudioVideoFormats(DashTestData.VP9_VORBIS_AUDIO_REPRESENTATION_ID,
DashTestData.VP9_CDD_ADAPTIVE)
.runTest(getActivity(), getInstrumentation());
}
@ -261,7 +261,7 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
.setFullPlaybackNoSeeking(false)
.setCanIncludeAdditionalVideoFormats(true)
.setActionSchedule(RENDERER_DISABLING_SCHEDULE)
.setAudioVideoFormats(DashTestData.VORBIS_AUDIO_REPRESENTATION_ID,
.setAudioVideoFormats(DashTestData.VP9_VORBIS_AUDIO_REPRESENTATION_ID,
DashTestData.VP9_CDD_ADAPTIVE)
.runTest(getActivity(), getInstrumentation());
}
@ -326,8 +326,8 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
}
new DashHostedTest.Builder(TAG)
.setStreamName("test_widevine_h264_fixed")
.setManifestUrlForWidevine(DashTestData.WIDEVINE_H264_MANIFEST_PREFIX,
MimeTypes.VIDEO_H264)
.setManifestUrl(DashTestData.WIDEVINE_H264_MANIFEST)
.setWidevineMimeType(MimeTypes.VIDEO_H264)
.setFullPlaybackNoSeeking(true)
.setCanIncludeAdditionalVideoFormats(false)
.setAudioVideoFormats(DashTestData.WIDEVINE_AAC_AUDIO_REPRESENTATION_ID,
@ -342,8 +342,8 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
}
new DashHostedTest.Builder(TAG)
.setStreamName("test_widevine_h264_adaptive")
.setManifestUrlForWidevine(DashTestData.WIDEVINE_H264_MANIFEST_PREFIX,
MimeTypes.VIDEO_H264)
.setManifestUrl(DashTestData.WIDEVINE_H264_MANIFEST)
.setWidevineMimeType(MimeTypes.VIDEO_H264)
.setFullPlaybackNoSeeking(true)
.setCanIncludeAdditionalVideoFormats(true)
.setAudioVideoFormats(DashTestData.WIDEVINE_AAC_AUDIO_REPRESENTATION_ID,
@ -358,8 +358,8 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
}
new DashHostedTest.Builder(TAG)
.setStreamName("test_widevine_h264_adaptive_with_seeking")
.setManifestUrlForWidevine(DashTestData.WIDEVINE_H264_MANIFEST_PREFIX,
MimeTypes.VIDEO_H264)
.setManifestUrl(DashTestData.WIDEVINE_H264_MANIFEST)
.setWidevineMimeType(MimeTypes.VIDEO_H264)
.setFullPlaybackNoSeeking(false)
.setCanIncludeAdditionalVideoFormats(true)
.setActionSchedule(SEEKING_SCHEDULE)
@ -375,8 +375,8 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
}
new DashHostedTest.Builder(TAG)
.setStreamName("test_widevine_h264_adaptive_with_renderer_disabling")
.setManifestUrlForWidevine(DashTestData.WIDEVINE_H264_MANIFEST_PREFIX,
MimeTypes.VIDEO_H264)
.setManifestUrl(DashTestData.WIDEVINE_H264_MANIFEST)
.setWidevineMimeType(MimeTypes.VIDEO_H264)
.setFullPlaybackNoSeeking(false)
.setCanIncludeAdditionalVideoFormats(true)
.setActionSchedule(RENDERER_DISABLING_SCHEDULE)
@ -394,8 +394,8 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
}
new DashHostedTest.Builder(TAG)
.setStreamName("test_widevine_h265_fixed")
.setManifestUrlForWidevine(DashTestData.WIDEVINE_H265_MANIFEST_PREFIX,
MimeTypes.VIDEO_H265)
.setManifestUrl(DashTestData.WIDEVINE_H265_MANIFEST)
.setWidevineMimeType(MimeTypes.VIDEO_H265)
.setFullPlaybackNoSeeking(true)
.setCanIncludeAdditionalVideoFormats(false)
.setAudioVideoFormats(DashTestData.WIDEVINE_AAC_AUDIO_REPRESENTATION_ID,
@ -410,8 +410,8 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
}
new DashHostedTest.Builder(TAG)
.setStreamName("test_widevine_h265_adaptive")
.setManifestUrlForWidevine(DashTestData.WIDEVINE_H265_MANIFEST_PREFIX,
MimeTypes.VIDEO_H265)
.setManifestUrl(DashTestData.WIDEVINE_H265_MANIFEST)
.setWidevineMimeType(MimeTypes.VIDEO_H265)
.setFullPlaybackNoSeeking(true)
.setCanIncludeAdditionalVideoFormats(true)
.setAudioVideoFormats(DashTestData.WIDEVINE_AAC_AUDIO_REPRESENTATION_ID,
@ -426,8 +426,8 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
}
new DashHostedTest.Builder(TAG)
.setStreamName("test_widevine_h265_adaptive_with_seeking")
.setManifestUrlForWidevine(DashTestData.WIDEVINE_H265_MANIFEST_PREFIX,
MimeTypes.VIDEO_H265)
.setManifestUrl(DashTestData.WIDEVINE_H265_MANIFEST)
.setWidevineMimeType(MimeTypes.VIDEO_H265)
.setFullPlaybackNoSeeking(false)
.setCanIncludeAdditionalVideoFormats(true)
.setActionSchedule(SEEKING_SCHEDULE)
@ -443,8 +443,8 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
}
new DashHostedTest.Builder(TAG)
.setStreamName("test_widevine_h265_adaptive_with_renderer_disabling")
.setManifestUrlForWidevine(DashTestData.WIDEVINE_H265_MANIFEST_PREFIX,
MimeTypes.VIDEO_H265)
.setManifestUrl(DashTestData.WIDEVINE_H265_MANIFEST)
.setWidevineMimeType(MimeTypes.VIDEO_H265)
.setFullPlaybackNoSeeking(false)
.setCanIncludeAdditionalVideoFormats(true)
.setActionSchedule(RENDERER_DISABLING_SCHEDULE)
@ -462,10 +462,11 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
}
new DashHostedTest.Builder(TAG)
.setStreamName("test_widevine_vp9_fixed_360p")
.setManifestUrlForWidevine(DashTestData.WIDEVINE_VP9_MANIFEST_PREFIX, MimeTypes.VIDEO_VP9)
.setManifestUrl(DashTestData.WIDEVINE_VP9_MANIFEST)
.setWidevineMimeType(MimeTypes.VIDEO_VP9)
.setFullPlaybackNoSeeking(true)
.setCanIncludeAdditionalVideoFormats(false)
.setAudioVideoFormats(DashTestData.WIDEVINE_VORBIS_AUDIO_REPRESENTATION_ID,
.setAudioVideoFormats(DashTestData.WIDEVINE_VP9_AAC_AUDIO_REPRESENTATION_ID,
DashTestData.WIDEVINE_VP9_CDD_FIXED)
.runTest(getActivity(), getInstrumentation());
}
@ -477,10 +478,11 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
}
new DashHostedTest.Builder(TAG)
.setStreamName("test_widevine_vp9_adaptive")
.setManifestUrlForWidevine(DashTestData.WIDEVINE_VP9_MANIFEST_PREFIX, MimeTypes.VIDEO_VP9)
.setManifestUrl(DashTestData.WIDEVINE_VP9_MANIFEST)
.setWidevineMimeType(MimeTypes.VIDEO_VP9)
.setFullPlaybackNoSeeking(true)
.setCanIncludeAdditionalVideoFormats(true)
.setAudioVideoFormats(DashTestData.WIDEVINE_VORBIS_AUDIO_REPRESENTATION_ID,
.setAudioVideoFormats(DashTestData.WIDEVINE_VP9_AAC_AUDIO_REPRESENTATION_ID,
DashTestData.WIDEVINE_VP9_CDD_ADAPTIVE)
.runTest(getActivity(), getInstrumentation());
}
@ -492,11 +494,12 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
}
new DashHostedTest.Builder(TAG)
.setStreamName("test_widevine_vp9_adaptive_with_seeking")
.setManifestUrlForWidevine(DashTestData.WIDEVINE_VP9_MANIFEST_PREFIX, MimeTypes.VIDEO_VP9)
.setManifestUrl(DashTestData.WIDEVINE_VP9_MANIFEST)
.setWidevineMimeType(MimeTypes.VIDEO_VP9)
.setFullPlaybackNoSeeking(false)
.setCanIncludeAdditionalVideoFormats(true)
.setActionSchedule(SEEKING_SCHEDULE)
.setAudioVideoFormats(DashTestData.WIDEVINE_VORBIS_AUDIO_REPRESENTATION_ID,
.setAudioVideoFormats(DashTestData.WIDEVINE_VP9_AAC_AUDIO_REPRESENTATION_ID,
DashTestData.WIDEVINE_VP9_CDD_ADAPTIVE)
.runTest(getActivity(), getInstrumentation());
}
@ -508,11 +511,12 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
}
new DashHostedTest.Builder(TAG)
.setStreamName("test_widevine_vp9_adaptive_with_renderer_disabling")
.setManifestUrlForWidevine(DashTestData.WIDEVINE_VP9_MANIFEST_PREFIX, MimeTypes.VIDEO_VP9)
.setManifestUrl(DashTestData.WIDEVINE_VP9_MANIFEST)
.setWidevineMimeType(MimeTypes.VIDEO_VP9)
.setFullPlaybackNoSeeking(false)
.setCanIncludeAdditionalVideoFormats(true)
.setActionSchedule(RENDERER_DISABLING_SCHEDULE)
.setAudioVideoFormats(DashTestData.WIDEVINE_VORBIS_AUDIO_REPRESENTATION_ID,
.setAudioVideoFormats(DashTestData.WIDEVINE_VP9_AAC_AUDIO_REPRESENTATION_ID,
DashTestData.WIDEVINE_VP9_CDD_ADAPTIVE)
.runTest(getActivity(), getInstrumentation());
}
@ -527,8 +531,8 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
}
new DashHostedTest.Builder(TAG)
.setStreamName("test_widevine_23fps_h264_fixed")
.setManifestUrlForWidevine(DashTestData.WIDEVINE_H264_23_MANIFEST_PREFIX,
MimeTypes.VIDEO_H264)
.setManifestUrl(DashTestData.WIDEVINE_H264_23_MANIFEST)
.setWidevineMimeType(MimeTypes.VIDEO_H264)
.setFullPlaybackNoSeeking(true)
.setCanIncludeAdditionalVideoFormats(false)
.setAudioVideoFormats(DashTestData.WIDEVINE_AAC_AUDIO_REPRESENTATION_ID,
@ -544,8 +548,8 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
}
new DashHostedTest.Builder(TAG)
.setStreamName("test_widevine_24fps_h264_fixed")
.setManifestUrlForWidevine(DashTestData.WIDEVINE_H264_24_MANIFEST_PREFIX,
MimeTypes.VIDEO_H264)
.setManifestUrl(DashTestData.WIDEVINE_H264_24_MANIFEST)
.setWidevineMimeType(MimeTypes.VIDEO_H264)
.setFullPlaybackNoSeeking(true)
.setCanIncludeAdditionalVideoFormats(false)
.setAudioVideoFormats(DashTestData.WIDEVINE_AAC_AUDIO_REPRESENTATION_ID,
@ -561,8 +565,8 @@ public final class DashTest extends ActivityInstrumentationTestCase2<HostActivit
}
new DashHostedTest.Builder(TAG)
.setStreamName("test_widevine_29fps_h264_fixed")
.setManifestUrlForWidevine(DashTestData.WIDEVINE_H264_29_MANIFEST_PREFIX,
MimeTypes.VIDEO_H264)
.setManifestUrl(DashTestData.WIDEVINE_H264_29_MANIFEST)
.setWidevineMimeType(MimeTypes.VIDEO_H264)
.setFullPlaybackNoSeeking(true)
.setCanIncludeAdditionalVideoFormats(false)
.setAudioVideoFormats(DashTestData.WIDEVINE_AAC_AUDIO_REPRESENTATION_ID,

View File

@ -22,20 +22,22 @@ import com.google.android.exoplayer2.util.Util;
*/
public final class DashTestData {
private static final String BASE_URL = "https://storage.googleapis.com/exoplayer-test-media-1/"
+ "gen-4/screens/dash-vod-single-segment/";
// Clear content manifests.
public static final String H264_MANIFEST = "manifest-h264.mpd";
public static final String H265_MANIFEST = "manifest-h265.mpd";
public static final String VP9_MANIFEST = "manifest-vp9.mpd";
public static final String H264_23_MANIFEST = "manifest-h264-23.mpd";
public static final String H264_24_MANIFEST = "manifest-h264-24.mpd";
public static final String H264_29_MANIFEST = "manifest-h264-29.mpd";
public static final String H264_MANIFEST = BASE_URL + "manifest-h264.mpd";
public static final String H265_MANIFEST = BASE_URL + "manifest-h265.mpd";
public static final String VP9_MANIFEST = BASE_URL + "manifest-vp9.mpd";
public static final String H264_23_MANIFEST = BASE_URL + "manifest-h264-23.mpd";
public static final String H264_24_MANIFEST = BASE_URL + "manifest-h264-24.mpd";
public static final String H264_29_MANIFEST = BASE_URL + "manifest-h264-29.mpd";
// Widevine encrypted content manifests.
public static final String WIDEVINE_H264_MANIFEST_PREFIX = "manifest-h264-enc";
public static final String WIDEVINE_H265_MANIFEST_PREFIX = "manifest-h265-enc";
public static final String WIDEVINE_VP9_MANIFEST_PREFIX = "manifest-vp9-enc";
public static final String WIDEVINE_H264_23_MANIFEST_PREFIX = "manifest-h264-23-enc";
public static final String WIDEVINE_H264_24_MANIFEST_PREFIX = "manifest-h264-24-enc";
public static final String WIDEVINE_H264_29_MANIFEST_PREFIX = "manifest-h264-29-enc";
public static final String WIDEVINE_H264_MANIFEST = BASE_URL + "manifest-h264-enc.mpd";
public static final String WIDEVINE_H265_MANIFEST = BASE_URL + "manifest-h265-enc.mpd";
public static final String WIDEVINE_VP9_MANIFEST = BASE_URL + "manifest-vp9-enc.mpd";
public static final String WIDEVINE_H264_23_MANIFEST = BASE_URL + "manifest-h264-23-enc.mpd";
public static final String WIDEVINE_H264_24_MANIFEST = BASE_URL + "manifest-h264-24-enc.mpd";
public static final String WIDEVINE_H264_29_MANIFEST = BASE_URL + "manifest-h264-29-enc.mpd";
public static final String AAC_AUDIO_REPRESENTATION_ID = "141";
public static final String H264_BASELINE_240P_VIDEO_REPRESENTATION_ID = "avc-baseline-240";
@ -50,8 +52,8 @@ public final class DashTestData {
// when switching between baseline and main profiles on certain devices.
public static final String[] H264_CDD_ADAPTIVE = Util.SDK_INT < 24
? new String[] {
H264_BASELINE_240P_VIDEO_REPRESENTATION_ID,
H264_BASELINE_480P_VIDEO_REPRESENTATION_ID}
H264_BASELINE_240P_VIDEO_REPRESENTATION_ID,
H264_BASELINE_480P_VIDEO_REPRESENTATION_ID}
: new String[] {
H264_BASELINE_240P_VIDEO_REPRESENTATION_ID,
H264_BASELINE_480P_VIDEO_REPRESENTATION_ID,
@ -75,7 +77,7 @@ public final class DashTestData {
H265_BASELINE_288P_VIDEO_REPRESENTATION_ID,
H265_BASELINE_360P_VIDEO_REPRESENTATION_ID};
public static final String VORBIS_AUDIO_REPRESENTATION_ID = "4";
public static final String VP9_VORBIS_AUDIO_REPRESENTATION_ID = "4";
public static final String VP9_180P_VIDEO_REPRESENTATION_ID = "0";
public static final String VP9_360P_VIDEO_REPRESENTATION_ID = "1";
// The highest quality VP9 format mandated by the Android CDD.
@ -101,8 +103,8 @@ public final class DashTestData {
// when switching between baseline and main profiles on certain devices.
public static final String[] WIDEVINE_H264_CDD_ADAPTIVE = Util.SDK_INT < 24
? new String[] {
WIDEVINE_H264_BASELINE_240P_VIDEO_REPRESENTATION_ID,
WIDEVINE_H264_BASELINE_480P_VIDEO_REPRESENTATION_ID}
WIDEVINE_H264_BASELINE_240P_VIDEO_REPRESENTATION_ID,
WIDEVINE_H264_BASELINE_480P_VIDEO_REPRESENTATION_ID}
: new String[] {
WIDEVINE_H264_BASELINE_240P_VIDEO_REPRESENTATION_ID,
WIDEVINE_H264_BASELINE_480P_VIDEO_REPRESENTATION_ID,
@ -124,11 +126,11 @@ public final class DashTestData {
WIDEVINE_H265_BASELINE_288P_VIDEO_REPRESENTATION_ID,
WIDEVINE_H265_BASELINE_360P_VIDEO_REPRESENTATION_ID};
public static final String WIDEVINE_VORBIS_AUDIO_REPRESENTATION_ID = "0";
public static final String WIDEVINE_VP9_180P_VIDEO_REPRESENTATION_ID = "1";
public static final String WIDEVINE_VP9_360P_VIDEO_REPRESENTATION_ID = "2";
public static final String WIDEVINE_VP9_AAC_AUDIO_REPRESENTATION_ID = "0";
public static final String WIDEVINE_VP9_180P_VIDEO_REPRESENTATION_ID = "2";
public static final String WIDEVINE_VP9_360P_VIDEO_REPRESENTATION_ID = "3";
// The highest quality VP9 format mandated by the Android CDD.
public static final String WIDEVINE_VP9_CDD_FIXED = VP9_360P_VIDEO_REPRESENTATION_ID;
public static final String WIDEVINE_VP9_CDD_FIXED = WIDEVINE_VP9_360P_VIDEO_REPRESENTATION_ID;
// Multiple VP9 formats mandated by the Android CDD.
public static final String[] WIDEVINE_VP9_CDD_ADAPTIVE =
new String[] {

View File

@ -38,7 +38,6 @@ public final class DashWidevineOfflineTest extends ActivityInstrumentationTestCa
private static final String USER_AGENT = "ExoPlayerPlaybackTests";
private DashHostedTest.Builder builder;
private String widevineManifestUrl;
private DefaultHttpDataSourceFactory httpDataSourceFactory;
private OfflineLicenseHelper<FrameworkMediaCrypto> offlineLicenseHelper;
private byte[] offlineLicenseKeySetId;
@ -52,18 +51,17 @@ public final class DashWidevineOfflineTest extends ActivityInstrumentationTestCa
super.setUp();
builder = new DashHostedTest.Builder(TAG)
.setStreamName("test_widevine_h264_fixed_offline")
.setManifestUrlForWidevine(DashTestData.WIDEVINE_H264_MANIFEST_PREFIX, MimeTypes.VIDEO_H264)
.setManifestUrl(DashTestData.WIDEVINE_H264_MANIFEST)
.setWidevineMimeType(MimeTypes.VIDEO_H264)
.setFullPlaybackNoSeeking(true)
.setCanIncludeAdditionalVideoFormats(false)
.setAudioVideoFormats(DashTestData.WIDEVINE_AAC_AUDIO_REPRESENTATION_ID,
DashTestData.WIDEVINE_H264_CDD_FIXED);
boolean useL1Widevine = DashHostedTest.isL1WidevineAvailable(MimeTypes.VIDEO_H264);
widevineManifestUrl = DashHostedTest
.getWidevineManifestUrl(DashTestData.WIDEVINE_H264_MANIFEST_PREFIX, useL1Widevine);
String widevineLicenseUrl = DashHostedTest.getWidevineLicenseUrl(useL1Widevine);
httpDataSourceFactory = new DefaultHttpDataSourceFactory(USER_AGENT);
offlineLicenseHelper = OfflineLicenseHelper.newWidevineInstance(widevineLicenseUrl,
offlineLicenseHelper = OfflineLicenseHelper.newWidevineInstance(widevineLicenseUrl,
httpDataSourceFactory);
}
@ -125,7 +123,7 @@ public final class DashWidevineOfflineTest extends ActivityInstrumentationTestCa
downloadLicense();
// Wait until the license expires
long licenseDuration =
long licenseDuration =
offlineLicenseHelper.getLicenseDurationRemainingSec(offlineLicenseKeySetId).first;
assertTrue("License duration should be less than 30 sec. "
+ "Server settings might have changed.", licenseDuration < 30);
@ -134,7 +132,7 @@ public final class DashWidevineOfflineTest extends ActivityInstrumentationTestCa
wait(licenseDuration * 1000 + 2000);
}
long previousDuration = licenseDuration;
licenseDuration =
licenseDuration =
offlineLicenseHelper.getLicenseDurationRemainingSec(offlineLicenseKeySetId).first;
assertTrue("License duration should be decreasing.", previousDuration > licenseDuration);
}
@ -150,7 +148,7 @@ public final class DashWidevineOfflineTest extends ActivityInstrumentationTestCa
downloadLicense();
// During playback pause until the license expires then continue playback
Pair<Long, Long> licenseDurationRemainingSec =
Pair<Long, Long> licenseDurationRemainingSec =
offlineLicenseHelper.getLicenseDurationRemainingSec(offlineLicenseKeySetId);
long licenseDuration = licenseDurationRemainingSec.first;
assertTrue("License duration should be less than 30 sec. "
@ -163,10 +161,10 @@ public final class DashWidevineOfflineTest extends ActivityInstrumentationTestCa
.setActionSchedule(schedule)
.runTest(getActivity(), getInstrumentation());
}
private void downloadLicense() throws InterruptedException, DrmSessionException, IOException {
offlineLicenseKeySetId = offlineLicenseHelper.download(
httpDataSourceFactory.createDataSource(), widevineManifestUrl);
httpDataSourceFactory.createDataSource(), DashTestData.WIDEVINE_H264_MANIFEST);
Assert.assertNotNull(offlineLicenseKeySetId);
Assert.assertTrue(offlineLicenseKeySetId.length > 0);
builder.setOfflineLicenseKeySetId(offlineLicenseKeySetId);