From cf2e539a31f8b2bd82f1fc85c05aed082f30049e Mon Sep 17 00:00:00 2001 From: ood_tsen Date: Wed, 22 Jul 2015 21:08:38 +0800 Subject: [PATCH] add support s263 --- .../com/google/android/exoplayer/extractor/mp4/Atom.java | 2 ++ .../google/android/exoplayer/extractor/mp4/AtomParsers.java | 6 +++++- .../exoplayer/extractor/mp4/FragmentedMp4Extractor.java | 2 +- .../android/exoplayer/extractor/mp4/Mp4Extractor.java | 3 ++- .../java/com/google/android/exoplayer/util/MimeTypes.java | 1 + 5 files changed, 11 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/mp4/Atom.java b/library/src/main/java/com/google/android/exoplayer/extractor/mp4/Atom.java index 3a4a114a82..d1d14e5efe 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/mp4/Atom.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/mp4/Atom.java @@ -92,6 +92,8 @@ import java.util.List; public static final int TYPE_stco = Util.getIntegerCodeForString("stco"); public static final int TYPE_co64 = Util.getIntegerCodeForString("co64"); public static final int TYPE_tx3g = Util.getIntegerCodeForString("tx3g"); + public static final int TYPE_s263 = Util.getIntegerCodeForString("s263"); + public static final int TYPE_d263 = Util.getIntegerCodeForString("d263"); public final int type; diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/mp4/AtomParsers.java b/library/src/main/java/com/google/android/exoplayer/extractor/mp4/AtomParsers.java index 37ed98d3cc..10b94e5007 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/mp4/AtomParsers.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/mp4/AtomParsers.java @@ -336,7 +336,8 @@ import java.util.List; int childAtomType = stsd.readInt(); if (childAtomType == Atom.TYPE_avc1 || childAtomType == Atom.TYPE_avc3 || childAtomType == Atom.TYPE_encv || childAtomType == Atom.TYPE_mp4v - || childAtomType == Atom.TYPE_hvc1 || childAtomType == Atom.TYPE_hev1) { + || childAtomType == Atom.TYPE_hvc1 || childAtomType == Atom.TYPE_hev1 + || childAtomType == Atom.TYPE_s263) { parseVideoSampleEntry(stsd, childStartPosition, childAtomSize, durationUs, holder, i); } else if (childAtomType == Atom.TYPE_mp4a || childAtomType == Atom.TYPE_enca || childAtomType == Atom.TYPE_ac_3) { @@ -387,6 +388,9 @@ import java.util.List; Pair, Integer> hvcCData = parseHvcCFromParent(parent, childStartPosition); initializationData = hvcCData.first; out.nalUnitLengthFieldLength = hvcCData.second; + } else if (childAtomType == Atom.TYPE_d263) { + Assertions.checkState(mimeType == null); + mimeType = MimeTypes.VIDEO_H263; } else if (childAtomType == Atom.TYPE_esds) { Assertions.checkState(mimeType == null); Pair mimeTypeAndInitializationData = diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/mp4/FragmentedMp4Extractor.java b/library/src/main/java/com/google/android/exoplayer/extractor/mp4/FragmentedMp4Extractor.java index 31b8bc691a..a6b957bd02 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/mp4/FragmentedMp4Extractor.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/mp4/FragmentedMp4Extractor.java @@ -697,7 +697,7 @@ public final class FragmentedMp4Extractor implements Extractor { || atom == Atom.TYPE_trun || atom == Atom.TYPE_mvex || atom == Atom.TYPE_mdia || atom == Atom.TYPE_minf || atom == Atom.TYPE_stbl || atom == Atom.TYPE_pssh || atom == Atom.TYPE_saiz || atom == Atom.TYPE_uuid || atom == Atom.TYPE_senc - || atom == Atom.TYPE_pasp; + || atom == Atom.TYPE_pasp || atom == Atom.TYPE_s263; } /** Returns whether the extractor should parse a container atom with type {@code atom}. */ diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/mp4/Mp4Extractor.java b/library/src/main/java/com/google/android/exoplayer/extractor/mp4/Mp4Extractor.java index 8a30a9bcac..368b09561d 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/mp4/Mp4Extractor.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/mp4/Mp4Extractor.java @@ -365,7 +365,8 @@ public final class Mp4Extractor implements Extractor, SeekMap { || atom == Atom.TYPE_avc1 || atom == Atom.TYPE_avcC || atom == Atom.TYPE_mp4a || atom == Atom.TYPE_esds || atom == Atom.TYPE_stts || atom == Atom.TYPE_stss || atom == Atom.TYPE_ctts || atom == Atom.TYPE_stsc || atom == Atom.TYPE_stsz - || atom == Atom.TYPE_stco || atom == Atom.TYPE_co64 || atom == Atom.TYPE_tkhd; + || atom == Atom.TYPE_stco || atom == Atom.TYPE_co64 || atom == Atom.TYPE_tkhd + || atom == Atom.TYPE_s263; } /** Returns whether the extractor should parse a container atom with type {@code atom}. */ 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 66e44b905a..cc6db55533 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 @@ -37,6 +37,7 @@ public class MimeTypes { 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"; + public static final String VIDEO_H263 = BASE_TYPE_VIDEO + "/3gpp"; public static final String AUDIO_MP4 = BASE_TYPE_AUDIO + "/mp4"; public static final String AUDIO_AAC = BASE_TYPE_AUDIO + "/mp4a-latm";