From 9e0ca9e7f00d2b5bb288577a6a0b3df5af1d378c Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Thu, 23 Jul 2015 14:50:57 +0100 Subject: [PATCH] Add support for reading MPEG 4 SP in matroska streams. Issue: #641 --- .../exoplayer/extractor/webm/WebmExtractor.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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 94eea8a4cd..e540067606 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 @@ -65,6 +65,9 @@ public final class WebmExtractor implements Extractor { private static final String DOC_TYPE_MATROSKA = "matroska"; private static final String CODEC_ID_VP8 = "V_VP8"; private static final String CODEC_ID_VP9 = "V_VP9"; + private static final String CODEC_ID_MPEG4_SP = "V_MPEG4/ISO/SP"; + private static final String CODEC_ID_MPEG4_ASP = "V_MPEG4/ISO/ASP"; + private static final String CODEC_ID_MPEG4_AP = "V_MPEG4/ISO/AP"; private static final String CODEC_ID_H264 = "V_MPEG4/ISO/AVC"; private static final String CODEC_ID_H265 = "V_MPEGH/ISO/HEVC"; private static final String CODEC_ID_VORBIS = "A_VORBIS"; @@ -962,6 +965,9 @@ public final class WebmExtractor implements Extractor { private static boolean isCodecSupported(String codecId) { return CODEC_ID_VP8.equals(codecId) || CODEC_ID_VP9.equals(codecId) + || CODEC_ID_MPEG4_SP.equals(codecId) + || CODEC_ID_MPEG4_ASP.equals(codecId) + || CODEC_ID_MPEG4_AP.equals(codecId) || CODEC_ID_H264.equals(codecId) || CODEC_ID_H265.equals(codecId) || CODEC_ID_OPUS.equals(codecId) @@ -1067,6 +1073,13 @@ public final class WebmExtractor implements Extractor { case CODEC_ID_VP9: mimeType = MimeTypes.VIDEO_VP9; break; + case CODEC_ID_MPEG4_SP: + case CODEC_ID_MPEG4_ASP: + case CODEC_ID_MPEG4_AP: + mimeType = MimeTypes.VIDEO_MP4V; + initializationData = + codecPrivate == null ? null : Collections.singletonList(codecPrivate); + break; case CODEC_ID_H264: mimeType = MimeTypes.VIDEO_H264; Pair, Integer> h264Data = parseAvcCodecPrivate(