From 6cb46e454905f704067409f1a682dd5b8a625c95 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 1 May 2015 20:23:33 +0100 Subject: [PATCH] webm_extractor: Add VP8 to the list of codecs. VP8 can be decoded by MediaCodec (since very early versions of android). Now that we want WebmExtractor to be general purpose, adding VP8 makes sense as it is a common use case. --- .../exoplayer/extractor/webm/WebmExtractor.java | 10 ++++++++-- .../com/google/android/exoplayer/util/MimeTypes.java | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/webm/WebmExtractor.java b/library/src/main/java/com/google/android/exoplayer/extractor/webm/WebmExtractor.java index 081d6bca60..f0ed882255 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/webm/WebmExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/webm/WebmExtractor.java @@ -55,6 +55,7 @@ public final class WebmExtractor implements Extractor { private static final int CUES_STATE_BUILT = 2; private static final String DOC_TYPE_WEBM = "webm"; + private static final String CODEC_ID_VP8 = "V_VP8"; private static final String CODEC_ID_VP9 = "V_VP9"; private static final String CODEC_ID_VORBIS = "A_VORBIS"; private static final String CODEC_ID_OPUS = "A_OPUS"; @@ -136,6 +137,7 @@ public final class WebmExtractor implements Extractor { private int seekEntryId; private long seekEntryPosition; + // Cue related elements. private boolean seekForCues; private long cuesContentPosition = UNKNOWN; private long seekPositionAfterBuildingCues = UNKNOWN; @@ -640,7 +642,10 @@ public final class WebmExtractor implements Extractor { * @throws ParserException If the codec is unsupported. */ private MediaFormat buildVideoFormat() throws ParserException { - if (videoTrackFormat != null && CODEC_ID_VP9.equals(videoTrackFormat.codecId)) { + if (videoTrackFormat != null && CODEC_ID_VP8.equals(videoTrackFormat.codecId)) { + return MediaFormat.createVideoFormat(MimeTypes.VIDEO_VP8, MediaFormat.NO_VALUE, durationUs, + videoTrackFormat.pixelWidth, videoTrackFormat.pixelHeight, null); + } else if (videoTrackFormat != null && CODEC_ID_VP9.equals(videoTrackFormat.codecId)) { return MediaFormat.createVideoFormat(MimeTypes.VIDEO_VP9, MediaFormat.NO_VALUE, durationUs, videoTrackFormat.pixelWidth, videoTrackFormat.pixelHeight, null); } else { @@ -793,7 +798,8 @@ public final class WebmExtractor implements Extractor { } private boolean isCodecSupported(String codecId) { - return CODEC_ID_VP9.equals(codecId) + return CODEC_ID_VP8.equals(codecId) + || CODEC_ID_VP9.equals(codecId) || CODEC_ID_OPUS.equals(codecId) || CODEC_ID_VORBIS.equals(codecId); } diff --git a/library/src/main/java/com/google/android/exoplayer/util/MimeTypes.java b/library/src/main/java/com/google/android/exoplayer/util/MimeTypes.java index 43473b7af2..8ed514174a 100644 --- a/library/src/main/java/com/google/android/exoplayer/util/MimeTypes.java +++ b/library/src/main/java/com/google/android/exoplayer/util/MimeTypes.java @@ -28,6 +28,7 @@ public class MimeTypes { public static final String VIDEO_MP4 = BASE_TYPE_VIDEO + "/mp4"; public static final String VIDEO_WEBM = BASE_TYPE_VIDEO + "/webm"; public static final String VIDEO_H264 = BASE_TYPE_VIDEO + "/avc"; + public static final String VIDEO_VP8 = BASE_TYPE_VIDEO + "/x-vnd.on2.vp8"; public static final String VIDEO_VP9 = BASE_TYPE_VIDEO + "/x-vnd.on2.vp9"; public static final String VIDEO_MP4V = BASE_TYPE_VIDEO + "/mp4v-es";