Bug 1341990 - Part 3: Include ExoPlayer in Firefox for Android builds. r?sebastian draft
authorNick Alexander <nalexander@mozilla.com>
Fri, 24 Feb 2017 11:13:20 -0800
changeset 489322 91f3617688d528ba1efc3d1081a76dd998d8850e
parent 489321 c7739fc5a3975df34f9364338a11354231764946
child 546985 f4ae0c8ee90d394de82cef20c130afdb7c6bc79f
push id46805
push usernalexander@mozilla.com
push dateFri, 24 Feb 2017 19:18:22 +0000
reviewerssebastian
bugs1341990
milestone54.0a1
Bug 1341990 - Part 3: Include ExoPlayer in Firefox for Android builds. r?sebastian This should not land as is; it should be guarded by a feature flag. But this will unblock investigations right now. MozReview-Commit-ID: BejqpiY4sDH
mobile/android/base/Makefile.in
mobile/android/base/moz.build
--- a/mobile/android/base/Makefile.in
+++ b/mobile/android/base/Makefile.in
@@ -146,16 +146,17 @@ endif
 # uniq purloined from http://stackoverflow.com/a/16151140.
 uniq = $(if $1,$(firstword $1) $(call uniq,$(filter-out $(firstword $1),$1)))
 
 java_bundled_libs := $(call uniq,$(java_bundled_libs))
 java_bundled_libs := $(subst $(NULL) ,:,$(strip $(java_bundled_libs)))
 
 GECKOVIEW_JARS = \
   constants.jar \
+  exoplayer2.jar \
   gecko-R.jar \
   gecko-mozglue.jar \
   gecko-util.jar \
   gecko-view.jar \
   sync-thirdparty.jar \
   $(NULL)
 
 ifdef MOZ_INSTALL_TRACKING
--- a/mobile/android/base/moz.build
+++ b/mobile/android/base/moz.build
@@ -1180,8 +1180,376 @@ gbjar.sources += ['generated/org/mozilla
     'media/IMediaDrmBridge.java',
     'media/IMediaDrmBridgeCallbacks.java',
     'media/IMediaManager.java',
 ]]
 
 gvjar.sources += ['generated/org/mozilla/gecko/' + x for x in [
     'process/IChildProcess.java',
 ]]
+
+exoplayer2_jar = add_java_jar('exoplayer2')
+
+exoplayer2_jar.javac_flags += [
+    '-Xlint:all,-serial,-rawtypes,-unchecked,-fallthrough',
+]
+
+exoplayer2_jar.extra_jars += [
+    CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
+]
+
+exoplayer2_jar.sources += [thirdparty_source_dir + 'com/google/android/exoplayer2/' + x for x in [
+    'audio/Ac3Util.java',
+    'audio/AudioCapabilities.java',
+    'audio/AudioCapabilitiesReceiver.java',
+    'audio/AudioDecoderException.java',
+    'audio/AudioRendererEventListener.java',
+    'audio/AudioTrack.java',
+    'audio/DtsUtil.java',
+    'audio/MediaCodecAudioRenderer.java',
+    'audio/SimpleDecoderAudioRenderer.java',
+    'BaseRenderer.java',
+    'C.java',
+    'decoder/Buffer.java',
+    'decoder/CryptoInfo.java',
+    'decoder/Decoder.java',
+    'decoder/DecoderCounters.java',
+    'decoder/DecoderInputBuffer.java',
+    'decoder/OutputBuffer.java',
+    'decoder/SimpleDecoder.java',
+    'decoder/SimpleOutputBuffer.java',
+    'DefaultLoadControl.java',
+    'drm/DecryptionException.java',
+    'drm/DefaultDrmSessionManager.java',
+    'drm/DrmInitData.java',
+    'drm/DrmSession.java',
+    'drm/DrmSessionManager.java',
+    'drm/ExoMediaCrypto.java',
+    'drm/ExoMediaDrm.java',
+    'drm/FrameworkMediaCrypto.java',
+    'drm/FrameworkMediaDrm.java',
+    'drm/HttpMediaDrmCallback.java',
+    'drm/KeysExpiredException.java',
+    'drm/MediaDrmCallback.java',
+    'drm/OfflineLicenseHelper.java',
+    'drm/UnsupportedDrmException.java',
+    'drm/WidevineUtil.java',
+    'ExoPlaybackException.java',
+    'ExoPlayer.java',
+    'ExoPlayerFactory.java',
+    'ExoPlayerImpl.java',
+    'ExoPlayerImplInternal.java',
+    'ExoPlayerLibraryInfo.java',
+    'extractor/ChunkIndex.java',
+    'extractor/DefaultExtractorInput.java',
+    'extractor/DefaultExtractorsFactory.java',
+    'extractor/DefaultTrackOutput.java',
+    'extractor/DummyTrackOutput.java',
+    'extractor/Extractor.java',
+    'extractor/ExtractorInput.java',
+    'extractor/ExtractorOutput.java',
+    'extractor/ExtractorsFactory.java',
+    'extractor/flv/AudioTagPayloadReader.java',
+    'extractor/flv/FlvExtractor.java',
+    'extractor/flv/ScriptTagPayloadReader.java',
+    'extractor/flv/TagPayloadReader.java',
+    'extractor/flv/VideoTagPayloadReader.java',
+    'extractor/GaplessInfoHolder.java',
+    'extractor/mkv/DefaultEbmlReader.java',
+    'extractor/mkv/EbmlReader.java',
+    'extractor/mkv/EbmlReaderOutput.java',
+    'extractor/mkv/MatroskaExtractor.java',
+    'extractor/mkv/Sniffer.java',
+    'extractor/mkv/VarintReader.java',
+    'extractor/mp3/ConstantBitrateSeeker.java',
+    'extractor/mp3/Mp3Extractor.java',
+    'extractor/mp3/VbriSeeker.java',
+    'extractor/mp3/XingSeeker.java',
+    'extractor/mp4/Atom.java',
+    'extractor/mp4/AtomParsers.java',
+    'extractor/mp4/DefaultSampleValues.java',
+    'extractor/mp4/FixedSampleSizeRechunker.java',
+    'extractor/mp4/FragmentedMp4Extractor.java',
+    'extractor/mp4/MetadataUtil.java',
+    'extractor/mp4/Mp4Extractor.java',
+    'extractor/mp4/PsshAtomUtil.java',
+    'extractor/mp4/Sniffer.java',
+    'extractor/mp4/Track.java',
+    'extractor/mp4/TrackEncryptionBox.java',
+    'extractor/mp4/TrackFragment.java',
+    'extractor/mp4/TrackSampleTable.java',
+    'extractor/MpegAudioHeader.java',
+    'extractor/ogg/DefaultOggSeeker.java',
+    'extractor/ogg/FlacReader.java',
+    'extractor/ogg/OggExtractor.java',
+    'extractor/ogg/OggPacket.java',
+    'extractor/ogg/OggPageHeader.java',
+    'extractor/ogg/OggSeeker.java',
+    'extractor/ogg/OpusReader.java',
+    'extractor/ogg/StreamReader.java',
+    'extractor/ogg/VorbisBitArray.java',
+    'extractor/ogg/VorbisReader.java',
+    'extractor/ogg/VorbisUtil.java',
+    'extractor/PositionHolder.java',
+    'extractor/rawcc/RawCcExtractor.java',
+    'extractor/SeekMap.java',
+    'extractor/TrackOutput.java',
+    'extractor/ts/Ac3Extractor.java',
+    'extractor/ts/Ac3Reader.java',
+    'extractor/ts/AdtsExtractor.java',
+    'extractor/ts/AdtsReader.java',
+    'extractor/ts/DefaultTsPayloadReaderFactory.java',
+    'extractor/ts/DtsReader.java',
+    'extractor/ts/ElementaryStreamReader.java',
+    'extractor/ts/H262Reader.java',
+    'extractor/ts/H264Reader.java',
+    'extractor/ts/H265Reader.java',
+    'extractor/ts/Id3Reader.java',
+    'extractor/ts/MpegAudioReader.java',
+    'extractor/ts/NalUnitTargetBuffer.java',
+    'extractor/ts/PesReader.java',
+    'extractor/ts/PsExtractor.java',
+    'extractor/ts/SectionPayloadReader.java',
+    'extractor/ts/SectionReader.java',
+    'extractor/ts/SeiReader.java',
+    'extractor/ts/SpliceInfoSectionReader.java',
+    'extractor/ts/TsExtractor.java',
+    'extractor/ts/TsPayloadReader.java',
+    'extractor/wav/WavExtractor.java',
+    'extractor/wav/WavHeader.java',
+    'extractor/wav/WavHeaderReader.java',
+    'Format.java',
+    'FormatHolder.java',
+    'IllegalSeekPositionException.java',
+    'LoadControl.java',
+    'mediacodec/MediaCodecInfo.java',
+    'mediacodec/MediaCodecRenderer.java',
+    'mediacodec/MediaCodecSelector.java',
+    'mediacodec/MediaCodecUtil.java',
+    'metadata/emsg/EventMessage.java',
+    'metadata/emsg/EventMessageDecoder.java',
+    'metadata/id3/ApicFrame.java',
+    'metadata/id3/BinaryFrame.java',
+    'metadata/id3/ChapterFrame.java',
+    'metadata/id3/ChapterTocFrame.java',
+    'metadata/id3/CommentFrame.java',
+    'metadata/id3/GeobFrame.java',
+    'metadata/id3/Id3Decoder.java',
+    'metadata/id3/Id3Frame.java',
+    'metadata/id3/PrivFrame.java',
+    'metadata/id3/TextInformationFrame.java',
+    'metadata/id3/UrlLinkFrame.java',
+    'metadata/Metadata.java',
+    'metadata/MetadataDecoder.java',
+    'metadata/MetadataDecoderException.java',
+    'metadata/MetadataDecoderFactory.java',
+    'metadata/MetadataInputBuffer.java',
+    'metadata/MetadataRenderer.java',
+    'metadata/scte35/PrivateCommand.java',
+    'metadata/scte35/SpliceCommand.java',
+    'metadata/scte35/SpliceInfoDecoder.java',
+    'metadata/scte35/SpliceInsertCommand.java',
+    'metadata/scte35/SpliceNullCommand.java',
+    'metadata/scte35/SpliceScheduleCommand.java',
+    'metadata/scte35/TimeSignalCommand.java',
+    'ParserException.java',
+    'Renderer.java',
+    'RendererCapabilities.java',
+    'RendererConfiguration.java',
+    'SimpleExoPlayer.java',
+    'source/AdaptiveMediaSourceEventListener.java',
+    'source/BehindLiveWindowException.java',
+    'source/chunk/BaseMediaChunk.java',
+    'source/chunk/Chunk.java',
+    'source/chunk/ChunkedTrackBlacklistUtil.java',
+    'source/chunk/ChunkExtractorWrapper.java',
+    'source/chunk/ChunkHolder.java',
+    'source/chunk/ChunkSampleStream.java',
+    'source/chunk/ChunkSource.java',
+    'source/chunk/ContainerMediaChunk.java',
+    'source/chunk/DataChunk.java',
+    'source/chunk/InitializationChunk.java',
+    'source/chunk/MediaChunk.java',
+    'source/chunk/SingleSampleMediaChunk.java',
+    'source/ClippingMediaPeriod.java',
+    'source/ClippingMediaSource.java',
+    'source/CompositeSequenceableLoader.java',
+    'source/ConcatenatingMediaSource.java',
+    'source/dash/DashChunkSource.java',
+    'source/dash/DashMediaPeriod.java',
+    'source/dash/DashMediaSource.java',
+    'source/dash/DashSegmentIndex.java',
+    'source/dash/DashWrappingSegmentIndex.java',
+    'source/dash/DefaultDashChunkSource.java',
+    'source/dash/manifest/AdaptationSet.java',
+    'source/dash/manifest/DashManifest.java',
+    'source/dash/manifest/DashManifestParser.java',
+    'source/dash/manifest/Period.java',
+    'source/dash/manifest/RangedUri.java',
+    'source/dash/manifest/Representation.java',
+    'source/dash/manifest/SchemeValuePair.java',
+    'source/dash/manifest/SegmentBase.java',
+    'source/dash/manifest/SingleSegmentIndex.java',
+    'source/dash/manifest/UrlTemplate.java',
+    'source/dash/manifest/UtcTimingElement.java',
+    'source/ExtractorMediaPeriod.java',
+    'source/ExtractorMediaSource.java',
+    'source/hls/Aes128DataSource.java',
+    'source/hls/HlsChunkSource.java',
+    'source/hls/HlsMediaChunk.java',
+    'source/hls/HlsMediaPeriod.java',
+    'source/hls/HlsMediaSource.java',
+    'source/hls/HlsSampleStream.java',
+    'source/hls/HlsSampleStreamWrapper.java',
+    'source/hls/playlist/HlsMasterPlaylist.java',
+    'source/hls/playlist/HlsMediaPlaylist.java',
+    'source/hls/playlist/HlsPlaylist.java',
+    'source/hls/playlist/HlsPlaylistParser.java',
+    'source/hls/playlist/HlsPlaylistTracker.java',
+    'source/hls/TimestampAdjusterProvider.java',
+    'source/hls/WebvttExtractor.java',
+    'source/LoopingMediaSource.java',
+    'source/MediaPeriod.java',
+    'source/MediaSource.java',
+    'source/MergingMediaPeriod.java',
+    'source/MergingMediaSource.java',
+    'source/SampleStream.java',
+    'source/SequenceableLoader.java',
+    'source/SinglePeriodTimeline.java',
+    'source/SingleSampleMediaPeriod.java',
+    'source/SingleSampleMediaSource.java',
+    'source/smoothstreaming/DefaultSsChunkSource.java',
+    'source/smoothstreaming/manifest/SsManifest.java',
+    'source/smoothstreaming/manifest/SsManifestParser.java',
+    'source/smoothstreaming/SsChunkSource.java',
+    'source/smoothstreaming/SsMediaPeriod.java',
+    'source/smoothstreaming/SsMediaSource.java',
+    'source/TrackGroup.java',
+    'source/TrackGroupArray.java',
+    'source/UnrecognizedInputFormatException.java',
+    'text/CaptionStyleCompat.java',
+    'text/cea/Cea608Decoder.java',
+    'text/cea/Cea708Cue.java',
+    'text/cea/Cea708Decoder.java',
+    'text/cea/CeaDecoder.java',
+    'text/cea/CeaOutputBuffer.java',
+    'text/cea/CeaSubtitle.java',
+    'text/cea/CeaUtil.java',
+    'text/Cue.java',
+    'text/SimpleSubtitleDecoder.java',
+    'text/SimpleSubtitleOutputBuffer.java',
+    'text/subrip/SubripDecoder.java',
+    'text/subrip/SubripSubtitle.java',
+    'text/Subtitle.java',
+    'text/SubtitleDecoder.java',
+    'text/SubtitleDecoderException.java',
+    'text/SubtitleDecoderFactory.java',
+    'text/SubtitleInputBuffer.java',
+    'text/SubtitleOutputBuffer.java',
+    'text/TextRenderer.java',
+    'text/ttml/TtmlDecoder.java',
+    'text/ttml/TtmlNode.java',
+    'text/ttml/TtmlRegion.java',
+    'text/ttml/TtmlRenderUtil.java',
+    'text/ttml/TtmlStyle.java',
+    'text/ttml/TtmlSubtitle.java',
+    'text/tx3g/Tx3gDecoder.java',
+    'text/tx3g/Tx3gSubtitle.java',
+    'text/webvtt/CssParser.java',
+    'text/webvtt/Mp4WebvttDecoder.java',
+    'text/webvtt/Mp4WebvttSubtitle.java',
+    'text/webvtt/WebvttCssStyle.java',
+    'text/webvtt/WebvttCue.java',
+    'text/webvtt/WebvttCueParser.java',
+    'text/webvtt/WebvttDecoder.java',
+    'text/webvtt/WebvttParserUtil.java',
+    'text/webvtt/WebvttSubtitle.java',
+    'Timeline.java',
+    'trackselection/AdaptiveVideoTrackSelection.java',
+    'trackselection/BaseTrackSelection.java',
+    'trackselection/DefaultTrackSelector.java',
+    'trackselection/FixedTrackSelection.java',
+    'trackselection/MappingTrackSelector.java',
+    'trackselection/RandomTrackSelection.java',
+    'trackselection/TrackSelection.java',
+    'trackselection/TrackSelectionArray.java',
+    'trackselection/TrackSelector.java',
+    'trackselection/TrackSelectorResult.java',
+    'upstream/Allocation.java',
+    'upstream/Allocator.java',
+    'upstream/AssetDataSource.java',
+    'upstream/BandwidthMeter.java',
+    'upstream/ByteArrayDataSink.java',
+    'upstream/ByteArrayDataSource.java',
+    'upstream/cache/Cache.java',
+    'upstream/cache/CacheDataSink.java',
+    'upstream/cache/CacheDataSinkFactory.java',
+    'upstream/cache/CacheDataSource.java',
+    'upstream/cache/CacheDataSourceFactory.java',
+    'upstream/cache/CachedContent.java',
+    'upstream/cache/CachedContentIndex.java',
+    'upstream/cache/CachedRegionTracker.java',
+    'upstream/cache/CacheEvictor.java',
+    'upstream/cache/CacheSpan.java',
+    'upstream/cache/LeastRecentlyUsedCacheEvictor.java',
+    'upstream/cache/NoOpCacheEvictor.java',
+    'upstream/cache/SimpleCache.java',
+    'upstream/cache/SimpleCacheSpan.java',
+    'upstream/ContentDataSource.java',
+    'upstream/crypto/AesCipherDataSink.java',
+    'upstream/crypto/AesCipherDataSource.java',
+    'upstream/crypto/AesFlushingCipher.java',
+    'upstream/crypto/CryptoUtil.java',
+    'upstream/DataSink.java',
+    'upstream/DataSource.java',
+    'upstream/DataSourceException.java',
+    'upstream/DataSourceInputStream.java',
+    'upstream/DataSpec.java',
+    'upstream/DefaultAllocator.java',
+    'upstream/DefaultBandwidthMeter.java',
+    'upstream/DefaultDataSource.java',
+    'upstream/DefaultDataSourceFactory.java',
+    'upstream/DefaultHttpDataSource.java',
+    'upstream/DefaultHttpDataSourceFactory.java',
+    'upstream/FileDataSource.java',
+    'upstream/FileDataSourceFactory.java',
+    'upstream/HttpDataSource.java',
+    'upstream/Loader.java',
+    'upstream/LoaderErrorThrower.java',
+    'upstream/ParsingLoadable.java',
+    'upstream/PriorityDataSource.java',
+    'upstream/RawResourceDataSource.java',
+    'upstream/TeeDataSource.java',
+    'upstream/TransferListener.java',
+    'upstream/UdpDataSource.java',
+    'util/Assertions.java',
+    'util/AtomicFile.java',
+    'util/Clock.java',
+    'util/CodecSpecificDataUtil.java',
+    'util/ColorParser.java',
+    'util/ConditionVariable.java',
+    'util/FlacStreamInfo.java',
+    'util/LibraryLoader.java',
+    'util/LongArray.java',
+    'util/MediaClock.java',
+    'util/MimeTypes.java',
+    'util/NalUnitUtil.java',
+    'util/ParsableBitArray.java',
+    'util/ParsableByteArray.java',
+    'util/ParsableNalUnitBitArray.java',
+    'util/Predicate.java',
+    'util/PriorityHandlerThread.java',
+    'util/PriorityTaskManager.java',
+    'util/ReusableBufferedOutputStream.java',
+    'util/SlidingPercentile.java',
+    'util/StandaloneMediaClock.java',
+    'util/SystemClock.java',
+    'util/TimestampAdjuster.java',
+    'util/TraceUtil.java',
+    'util/UriUtil.java',
+    'util/Util.java',
+    'util/XmlPullParserUtil.java',
+    'video/AvcConfig.java',
+    'video/HevcConfig.java',
+    'video/MediaCodecVideoRenderer.java',
+    'video/VideoFrameReleaseTimeHelper.java',
+    'video/VideoRendererEventListener.java',
+]]