--- a/mobile/android/base/moz.build
+++ b/mobile/android/base/moz.build
@@ -329,16 +329,17 @@ gvjar.sources += [geckoview_thirdparty_s
'java/com/googlecode/eyesfree/braille/selfbraille/WriteData.java',
]]
gvjar.extra_jars += [
CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
CONFIG['ANDROID_SUPPORT_V4_AAR_LIB'],
CONFIG['ANDROID_SUPPORT_V4_AAR_INTERNAL_LIB'],
'constants.jar',
+ 'exoplayer2.jar',
'gecko-mozglue.jar',
'gecko-util.jar',
]
gvjar.javac_flags += [
'-Xlint:all,-deprecation,-fallthrough',
'-J-Xmx512m',
'-J-Xms128m'
@@ -1194,8 +1195,376 @@ gvjar.sources += ['generated/org/mozilla
'media/ICodec.java',
'media/ICodecCallbacks.java',
'media/IMediaDrmBridge.java',
'media/IMediaDrmBridgeCallbacks.java',
'media/IMediaManager.java',
'process/IChildProcess.java',
'process/IProcessManager.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',
+]]