From fb36f85e0d5e4c9f7c5e0d92586b004b71f43496 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Thu, 12 Mar 2015 19:42:00 +0000 Subject: [PATCH] Simplify encryption handling in HLS. --- .../android/exoplayer/hls/HlsChunkSource.java | 2 +- .../android/exoplayer/hls/HlsMediaPlaylist.java | 9 +++++---- .../android/exoplayer/hls/HlsPlaylistParser.java | 6 +++++- .../exoplayer/hls/HlsMediaPlaylistParserTest.java | 14 +++++++------- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java index cd46f11052..f1be4678b3 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java @@ -306,7 +306,7 @@ public class HlsChunkSource { Uri chunkUri = UriUtil.resolveToUri(mediaPlaylist.baseUri, segment.url); // Check if encryption is specified. - if (HlsMediaPlaylist.ENCRYPTION_METHOD_AES_128.equals(segment.encryptionMethod)) { + if (segment.isEncrypted) { Uri keyUri = UriUtil.resolveToUri(mediaPlaylist.baseUri, segment.encryptionKeyUri); if (!keyUri.equals(encryptionKeyUri)) { // Encryption is specified and the key has changed. diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsMediaPlaylist.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsMediaPlaylist.java index 16e90083d0..ec4c538155 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsMediaPlaylist.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsMediaPlaylist.java @@ -28,24 +28,25 @@ public final class HlsMediaPlaylist extends HlsPlaylist { * Media segment reference. */ public static final class Segment implements Comparable { + public final boolean discontinuity; public final double durationSecs; public final String url; public final long startTimeUs; - public final String encryptionMethod; + public final boolean isEncrypted; public final String encryptionKeyUri; public final String encryptionIV; public final int byterangeOffset; public final int byterangeLength; public Segment(String uri, double durationSecs, boolean discontinuity, long startTimeUs, - String encryptionMethod, String encryptionKeyUri, String encryptionIV, - int byterangeOffset, int byterangeLength) { + boolean isEncrypted, String encryptionKeyUri, String encryptionIV, int byterangeOffset, + int byterangeLength) { this.url = uri; this.durationSecs = durationSecs; this.discontinuity = discontinuity; this.startTimeUs = startTimeUs; - this.encryptionMethod = encryptionMethod; + this.isEncrypted = isEncrypted; this.encryptionKeyUri = encryptionKeyUri; this.encryptionIV = encryptionIV; this.byterangeOffset = byterangeOffset; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java index 5c7b23f865..95453eb103 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java @@ -64,6 +64,9 @@ public final class HlsPlaylistParser implements NetworkLoadable.Parser