├── .gitignore ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE ├── LICENSE ├── README.md ├── RELEASENOTES.md ├── build.gradle ├── demo ├── README.md ├── assets │ └── ic_launcher.svg ├── build.gradle └── src │ └── main │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── google │ │ └── android │ │ └── exoplayer │ │ └── demo │ │ ├── EventLogger.java │ │ ├── PlayerActivity.java │ │ ├── SampleChooserActivity.java │ │ ├── Samples.java │ │ ├── SmoothStreamingTestMediaDrmCallback.java │ │ ├── WidevineTestMediaDrmCallback.java │ │ └── player │ │ ├── DashRendererBuilder.java │ │ ├── DemoPlayer.java │ │ ├── ExtractorRendererBuilder.java │ │ ├── HlsRendererBuilder.java │ │ └── SmoothStreamingRendererBuilder.java │ ├── project.properties │ └── res │ ├── drawable-hdpi │ └── ic_launcher.png │ ├── drawable-mdpi │ └── ic_launcher.png │ ├── drawable-xhdpi │ └── ic_launcher.png │ ├── drawable-xxhdpi │ └── ic_launcher.png │ ├── drawable-xxxhdpi │ └── ic_launcher.png │ ├── layout │ ├── player_activity.xml │ ├── sample_chooser_activity.xml │ └── sample_chooser_inline_header.xml │ └── values │ ├── constants.xml │ ├── strings.xml │ └── styles.xml ├── demo_ext ├── README.md ├── build.gradle └── src │ └── main │ ├── .classpath │ ├── .project │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── google │ │ └── android │ │ └── exoplayer │ │ └── demo │ │ └── ext │ │ ├── DashRendererBuilder.java │ │ ├── PlayerActivity.java │ │ └── SampleChooserActivity.java │ ├── project.properties │ └── res │ ├── drawable-hdpi │ └── ic_launcher.png │ ├── drawable-mdpi │ └── ic_launcher.png │ ├── drawable-xhdpi │ └── ic_launcher.png │ ├── drawable-xxhdpi │ └── ic_launcher.png │ ├── drawable-xxxhdpi │ └── ic_launcher.png │ ├── layout │ ├── activity_video_player.xml │ ├── rows.xml │ ├── sample_chooser_activity.xml │ └── sample_chooser_inline_header.xml │ ├── values-v11 │ └── styles.xml │ └── values │ ├── strings.xml │ └── styles.xml ├── extensions ├── README.md ├── flac │ ├── README.md │ ├── build.gradle │ └── src │ │ ├── androidTest │ │ ├── .classpath │ │ ├── .project │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ │ └── bear-flac.mka │ │ ├── java │ │ │ └── com │ │ │ │ └── google │ │ │ │ └── android │ │ │ │ └── exoplayer │ │ │ │ └── ext │ │ │ │ └── flac │ │ │ │ └── FlacPlaybackTest.java │ │ ├── project.properties │ │ └── res │ │ │ └── .README.txt │ │ └── main │ │ ├── .classpath │ │ ├── .project │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── google │ │ │ └── android │ │ │ └── exoplayer │ │ │ └── ext │ │ │ └── flac │ │ │ ├── FlacDecoder.java │ │ │ ├── FlacDecoderException.java │ │ │ ├── FlacExtractor.java │ │ │ ├── FlacJni.java │ │ │ ├── FlacOutputBuffer.java │ │ │ └── LibflacAudioTrackRenderer.java │ │ ├── jni │ │ ├── Android.mk │ │ ├── Application.mk │ │ ├── flac_jni.cc │ │ ├── flac_parser.cc │ │ ├── flac_sources.mk │ │ └── include │ │ │ ├── data_source.h │ │ │ └── flac_parser.h │ │ ├── proguard.cfg │ │ └── project.properties ├── okhttp │ ├── README.md │ ├── build.gradle │ └── src │ │ └── main │ │ ├── .classpath │ │ ├── .project │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── google │ │ │ └── android │ │ │ └── exoplayer │ │ │ └── ext │ │ │ └── okhttp │ │ │ └── OkHttpDataSource.java │ │ └── project.properties ├── opus │ ├── README.md │ ├── build.gradle │ └── src │ │ ├── androidTest │ │ ├── .classpath │ │ ├── .project │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ │ └── bear-opus.webm │ │ ├── java │ │ │ └── com │ │ │ │ └── google │ │ │ │ └── android │ │ │ │ └── exoplayer │ │ │ │ └── ext │ │ │ │ └── opus │ │ │ │ └── OpusPlaybackTest.java │ │ ├── project.properties │ │ └── res │ │ │ └── .README.txt │ │ └── main │ │ ├── .classpath │ │ ├── .cproject │ │ ├── .project │ │ ├── .settings │ │ └── org.eclipse.jdt.core.prefs │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── google │ │ │ └── android │ │ │ └── exoplayer │ │ │ └── ext │ │ │ └── opus │ │ │ ├── LibopusAudioTrackRenderer.java │ │ │ ├── OpusDecoder.java │ │ │ ├── OpusDecoderException.java │ │ │ └── OpusOutputBuffer.java │ │ ├── jni │ │ ├── Android.mk │ │ ├── Application.mk │ │ ├── convert_android_asm.sh │ │ ├── libopus.mk │ │ └── opus_jni.cc │ │ ├── proguard.cfg │ │ ├── project.properties │ │ └── res │ │ └── .README.txt └── vp9 │ ├── README.md │ ├── build.gradle │ └── src │ ├── androidTest │ ├── .classpath │ ├── .project │ ├── AndroidManifest.xml │ ├── assets │ │ ├── bear-vp9-odd-dimensions.webm │ │ ├── bear-vp9.webm │ │ └── invalid-bitstream.webm │ ├── java │ │ └── com │ │ │ └── google │ │ │ └── android │ │ │ └── exoplayer │ │ │ └── ext │ │ │ └── vp9 │ │ │ └── VpxPlaybackTest.java │ ├── project.properties │ └── res │ │ └── .README.txt │ └── main │ ├── .classpath │ ├── .cproject │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── google │ │ └── android │ │ └── exoplayer │ │ └── ext │ │ └── vp9 │ │ ├── LibvpxVideoTrackRenderer.java │ │ ├── VpxDecoder.java │ │ ├── VpxDecoderException.java │ │ ├── VpxInputBuffer.java │ │ ├── VpxOutputBuffer.java │ │ ├── VpxOutputBufferRenderer.java │ │ ├── VpxRenderer.java │ │ └── VpxVideoSurfaceView.java │ ├── jni │ ├── Android.mk │ ├── Application.mk │ ├── generate_libvpx_android_configs.sh │ ├── libvpx.mk │ └── vpx_jni.cc │ ├── proguard.cfg │ ├── project.properties │ └── res │ └── .README.txt ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── library ├── build.gradle └── src │ ├── androidTest │ ├── .classpath │ ├── .project │ ├── .settings │ │ └── org.eclipse.jdt.core.prefs │ ├── AndroidManifest.xml │ ├── assets │ │ ├── dash │ │ │ └── sample_mpd_1 │ │ ├── smoothstreaming │ │ │ ├── sample_ismc_1 │ │ │ └── sample_ismc_2 │ │ ├── subrip │ │ │ ├── empty │ │ │ ├── no_end_timecodes │ │ │ ├── typical │ │ │ ├── typical_extra_blank_line │ │ │ ├── typical_missing_sequence │ │ │ ├── typical_missing_timecode │ │ │ └── typical_with_byte_order_mark │ │ ├── ttml │ │ │ ├── chain_multiple_styles.xml │ │ │ ├── font_size.xml │ │ │ ├── font_size_empty.xml │ │ │ ├── font_size_invalid.xml │ │ │ ├── font_size_no_unit.xml │ │ │ ├── inherit_and_override_style.xml │ │ │ ├── inherit_global_and_parent.xml │ │ │ ├── inherit_multiple_styles.xml │ │ │ ├── inherit_style.xml │ │ │ ├── inline_style_attributes.xml │ │ │ ├── multiple_regions.xml │ │ │ └── no_underline_linethrough.xml │ │ ├── webm │ │ │ └── vorbis_codec_private │ │ └── webvtt │ │ │ ├── empty │ │ │ ├── typical │ │ │ ├── typical_with_comments │ │ │ ├── typical_with_identifiers │ │ │ ├── with_bad_cue_header │ │ │ ├── with_positioning │ │ │ └── with_tags │ ├── java │ │ └── com │ │ │ └── google │ │ │ └── android │ │ │ └── exoplayer │ │ │ ├── CTest.java │ │ │ ├── MediaFormatTest.java │ │ │ ├── TimeRangeTest.java │ │ │ ├── dash │ │ │ ├── DashChunkSourceTest.java │ │ │ └── mpd │ │ │ │ ├── MediaPresentationDescriptionParserTest.java │ │ │ │ ├── RangedUriTest.java │ │ │ │ ├── RepresentationTest.java │ │ │ │ └── UrlTemplateTest.java │ │ │ ├── extractor │ │ │ ├── DefaultExtractorInputTest.java │ │ │ ├── ExtractorTest.java │ │ │ ├── mp3 │ │ │ │ └── XingSeekerTest.java │ │ │ ├── mp4 │ │ │ │ └── Mp4ExtractorTest.java │ │ │ ├── ogg │ │ │ │ ├── OggExtractorTest.java │ │ │ │ ├── OggParserTest.java │ │ │ │ ├── OggSeekerTest.java │ │ │ │ ├── OggUtilTest.java │ │ │ │ ├── TestData.java │ │ │ │ ├── VorbisBitArrayTest.java │ │ │ │ ├── VorbisReaderTest.java │ │ │ │ └── VorbisUtilTest.java │ │ │ ├── ts │ │ │ │ └── AdtsReaderTest.java │ │ │ └── webm │ │ │ │ ├── DefaultEbmlReaderTest.java │ │ │ │ ├── StreamBuilder.java │ │ │ │ ├── VarintReaderTest.java │ │ │ │ └── WebmExtractorTest.java │ │ │ ├── hls │ │ │ ├── HlsMasterPlaylistParserTest.java │ │ │ └── HlsMediaPlaylistParserTest.java │ │ │ ├── metadata │ │ │ └── id3 │ │ │ │ └── Id3ParserTest.java │ │ │ ├── smoothstreaming │ │ │ └── SmoothStreamingManifestParserTest.java │ │ │ ├── testutil │ │ │ ├── FakeDataSource.java │ │ │ ├── FakeExtractorInput.java │ │ │ ├── FakeExtractorOutput.java │ │ │ ├── FakeTrackOutput.java │ │ │ └── TestUtil.java │ │ │ ├── text │ │ │ ├── subrip │ │ │ │ └── SubripParserTest.java │ │ │ ├── ttml │ │ │ │ ├── TtmlColorParserTest.java │ │ │ │ ├── TtmlParserTest.java │ │ │ │ ├── TtmlRenderUtilTest.java │ │ │ │ └── TtmlStyleTest.java │ │ │ └── webvtt │ │ │ │ ├── Mp4WebvttParserTest.java │ │ │ │ ├── WebvttCueParserTest.java │ │ │ │ ├── WebvttParserTest.java │ │ │ │ └── WebvttSubtitleTest.java │ │ │ ├── upstream │ │ │ └── ByteArrayDataSourceTest.java │ │ │ └── util │ │ │ ├── FakeClock.java │ │ │ ├── NalUnitUtilTest.java │ │ │ ├── ParsableByteArrayTest.java │ │ │ ├── UriUtilTest.java │ │ │ └── UtilTest.java │ ├── libs │ │ └── .README.txt │ ├── project.properties │ └── res │ │ └── .README.txt │ └── main │ ├── .classpath │ ├── .project │ ├── .settings │ └── org.eclipse.jdt.core.prefs │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── google │ │ └── android │ │ └── exoplayer │ │ ├── AspectRatioFrameLayout.java │ │ ├── BehindLiveWindowException.java │ │ ├── C.java │ │ ├── CodecCounters.java │ │ ├── CryptoInfo.java │ │ ├── DecoderInfo.java │ │ ├── DefaultLoadControl.java │ │ ├── DummyTrackRenderer.java │ │ ├── ExoPlaybackException.java │ │ ├── ExoPlayer.java │ │ ├── ExoPlayerImpl.java │ │ ├── ExoPlayerImplInternal.java │ │ ├── ExoPlayerLibraryInfo.java │ │ ├── FrameworkSampleSource.java │ │ ├── LoadControl.java │ │ ├── MediaClock.java │ │ ├── MediaCodecAudioTrackRenderer.java │ │ ├── MediaCodecSelector.java │ │ ├── MediaCodecTrackRenderer.java │ │ ├── MediaCodecUtil.java │ │ ├── MediaCodecVideoTrackRenderer.java │ │ ├── MediaFormat.java │ │ ├── MediaFormatHolder.java │ │ ├── ParserException.java │ │ ├── SampleHolder.java │ │ ├── SampleSource.java │ │ ├── SampleSourceTrackRenderer.java │ │ ├── SingleSampleSource.java │ │ ├── StandaloneMediaClock.java │ │ ├── TimeRange.java │ │ ├── TrackRenderer.java │ │ ├── VideoFrameReleaseTimeHelper.java │ │ ├── audio │ │ ├── AudioCapabilities.java │ │ ├── AudioCapabilitiesReceiver.java │ │ └── AudioTrack.java │ │ ├── chunk │ │ ├── BaseChunkSampleSourceEventListener.java │ │ ├── BaseMediaChunk.java │ │ ├── Chunk.java │ │ ├── ChunkExtractorWrapper.java │ │ ├── ChunkOperationHolder.java │ │ ├── ChunkSampleSource.java │ │ ├── ChunkSource.java │ │ ├── ContainerMediaChunk.java │ │ ├── DataChunk.java │ │ ├── Format.java │ │ ├── FormatEvaluator.java │ │ ├── FormatWrapper.java │ │ ├── InitializationChunk.java │ │ ├── MediaChunk.java │ │ ├── SingleSampleMediaChunk.java │ │ └── VideoFormatSelectorUtil.java │ │ ├── dash │ │ ├── DashChunkSource.java │ │ ├── DashSegmentIndex.java │ │ ├── DashTrackSelector.java │ │ ├── DashWrappingSegmentIndex.java │ │ ├── DefaultDashTrackSelector.java │ │ └── mpd │ │ │ ├── AdaptationSet.java │ │ │ ├── ContentProtection.java │ │ │ ├── DashSingleSegmentIndex.java │ │ │ ├── MediaPresentationDescription.java │ │ │ ├── MediaPresentationDescriptionParser.java │ │ │ ├── Period.java │ │ │ ├── RangedUri.java │ │ │ ├── Representation.java │ │ │ ├── SegmentBase.java │ │ │ ├── UrlTemplate.java │ │ │ ├── UtcTimingElement.java │ │ │ └── UtcTimingElementResolver.java │ │ ├── drm │ │ ├── DrmInitData.java │ │ ├── DrmSessionManager.java │ │ ├── KeysExpiredException.java │ │ ├── MediaDrmCallback.java │ │ ├── StreamingDrmSessionManager.java │ │ └── UnsupportedDrmException.java │ │ ├── extractor │ │ ├── ChunkIndex.java │ │ ├── DefaultExtractorInput.java │ │ ├── DefaultTrackOutput.java │ │ ├── DummyTrackOutput.java │ │ ├── Extractor.java │ │ ├── ExtractorInput.java │ │ ├── ExtractorOutput.java │ │ ├── ExtractorSampleSource.java │ │ ├── GaplessInfo.java │ │ ├── PositionHolder.java │ │ ├── RollingSampleBuffer.java │ │ ├── SeekMap.java │ │ ├── TrackOutput.java │ │ ├── flv │ │ │ ├── AudioTagPayloadReader.java │ │ │ ├── FlvExtractor.java │ │ │ ├── ScriptTagPayloadReader.java │ │ │ ├── TagPayloadReader.java │ │ │ └── VideoTagPayloadReader.java │ │ ├── mp3 │ │ │ ├── ConstantBitrateSeeker.java │ │ │ ├── Id3Util.java │ │ │ ├── Mp3Extractor.java │ │ │ ├── VbriSeeker.java │ │ │ └── XingSeeker.java │ │ ├── mp4 │ │ │ ├── Atom.java │ │ │ ├── AtomParsers.java │ │ │ ├── DefaultSampleValues.java │ │ │ ├── FixedSampleSizeRechunker.java │ │ │ ├── FragmentedMp4Extractor.java │ │ │ ├── Mp4Extractor.java │ │ │ ├── PsshAtomUtil.java │ │ │ ├── Sniffer.java │ │ │ ├── Track.java │ │ │ ├── TrackEncryptionBox.java │ │ │ ├── TrackFragment.java │ │ │ └── TrackSampleTable.java │ │ ├── ogg │ │ │ ├── FlacReader.java │ │ │ ├── OggExtractor.java │ │ │ ├── OggParser.java │ │ │ ├── OggSeeker.java │ │ │ ├── OggUtil.java │ │ │ ├── StreamReader.java │ │ │ ├── VorbisBitArray.java │ │ │ ├── VorbisReader.java │ │ │ └── VorbisUtil.java │ │ ├── ts │ │ │ ├── Ac3Reader.java │ │ │ ├── AdtsExtractor.java │ │ │ ├── AdtsReader.java │ │ │ ├── DtsReader.java │ │ │ ├── ElementaryStreamReader.java │ │ │ ├── H262Reader.java │ │ │ ├── H264Reader.java │ │ │ ├── H265Reader.java │ │ │ ├── Id3Reader.java │ │ │ ├── MpegAudioReader.java │ │ │ ├── NalUnitTargetBuffer.java │ │ │ ├── PsExtractor.java │ │ │ ├── PtsTimestampAdjuster.java │ │ │ ├── SeiReader.java │ │ │ └── TsExtractor.java │ │ ├── wav │ │ │ ├── WavExtractor.java │ │ │ ├── WavHeader.java │ │ │ └── WavHeaderReader.java │ │ └── webm │ │ │ ├── DefaultEbmlReader.java │ │ │ ├── EbmlReader.java │ │ │ ├── EbmlReaderOutput.java │ │ │ ├── Sniffer.java │ │ │ ├── VarintReader.java │ │ │ └── WebmExtractor.java │ │ ├── hls │ │ ├── Aes128DataSource.java │ │ ├── DefaultHlsTrackSelector.java │ │ ├── HlsChunkSource.java │ │ ├── HlsExtractorWrapper.java │ │ ├── HlsMasterPlaylist.java │ │ ├── HlsMediaPlaylist.java │ │ ├── HlsParserUtil.java │ │ ├── HlsPlaylist.java │ │ ├── HlsPlaylistParser.java │ │ ├── HlsSampleSource.java │ │ ├── HlsTrackSelector.java │ │ ├── PtsTimestampAdjusterProvider.java │ │ ├── TsChunk.java │ │ ├── Variant.java │ │ └── WebvttExtractor.java │ │ ├── metadata │ │ ├── MetadataParser.java │ │ ├── MetadataTrackRenderer.java │ │ └── id3 │ │ │ ├── ApicFrame.java │ │ │ ├── BinaryFrame.java │ │ │ ├── GeobFrame.java │ │ │ ├── Id3Frame.java │ │ │ ├── Id3Parser.java │ │ │ ├── PrivFrame.java │ │ │ ├── TextInformationFrame.java │ │ │ └── TxxxFrame.java │ │ ├── smoothstreaming │ │ ├── DefaultSmoothStreamingTrackSelector.java │ │ ├── SmoothStreamingChunkSource.java │ │ ├── SmoothStreamingManifest.java │ │ ├── SmoothStreamingManifestParser.java │ │ └── SmoothStreamingTrackSelector.java │ │ ├── text │ │ ├── CaptionStyleCompat.java │ │ ├── Cue.java │ │ ├── CuePainter.java │ │ ├── PlayableSubtitle.java │ │ ├── Subtitle.java │ │ ├── SubtitleLayout.java │ │ ├── SubtitleParser.java │ │ ├── SubtitleParserHelper.java │ │ ├── TextRenderer.java │ │ ├── TextTrackRenderer.java │ │ ├── eia608 │ │ │ ├── ClosedCaption.java │ │ │ ├── ClosedCaptionCtrl.java │ │ │ ├── ClosedCaptionList.java │ │ │ ├── ClosedCaptionText.java │ │ │ ├── Eia608Parser.java │ │ │ └── Eia608TrackRenderer.java │ │ ├── subrip │ │ │ ├── SubripParser.java │ │ │ └── SubripSubtitle.java │ │ ├── ttml │ │ │ ├── TtmlColorParser.java │ │ │ ├── TtmlNode.java │ │ │ ├── TtmlParser.java │ │ │ ├── TtmlRegion.java │ │ │ ├── TtmlRenderUtil.java │ │ │ ├── TtmlStyle.java │ │ │ └── TtmlSubtitle.java │ │ ├── tx3g │ │ │ ├── Tx3gParser.java │ │ │ └── Tx3gSubtitle.java │ │ └── webvtt │ │ │ ├── Mp4WebvttParser.java │ │ │ ├── Mp4WebvttSubtitle.java │ │ │ ├── WebvttCue.java │ │ │ ├── WebvttCueParser.java │ │ │ ├── WebvttParser.java │ │ │ ├── WebvttParserUtil.java │ │ │ └── WebvttSubtitle.java │ │ ├── upstream │ │ ├── Allocation.java │ │ ├── Allocator.java │ │ ├── AssetDataSource.java │ │ ├── BandwidthMeter.java │ │ ├── ByteArrayDataSink.java │ │ ├── ByteArrayDataSource.java │ │ ├── ContentDataSource.java │ │ ├── DataSink.java │ │ ├── DataSource.java │ │ ├── DataSourceInputStream.java │ │ ├── DataSpec.java │ │ ├── DefaultAllocator.java │ │ ├── DefaultBandwidthMeter.java │ │ ├── DefaultHttpDataSource.java │ │ ├── DefaultUriDataSource.java │ │ ├── FileDataSource.java │ │ ├── HttpDataSource.java │ │ ├── Loader.java │ │ ├── NetworkLock.java │ │ ├── PriorityDataSource.java │ │ ├── TeeDataSource.java │ │ ├── TransferListener.java │ │ ├── UdpDataSource.java │ │ ├── UriDataSource.java │ │ ├── UriLoadable.java │ │ └── cache │ │ │ ├── Cache.java │ │ │ ├── CacheDataSink.java │ │ │ ├── CacheDataSource.java │ │ │ ├── CacheEvictor.java │ │ │ ├── CacheSpan.java │ │ │ ├── LeastRecentlyUsedCacheEvictor.java │ │ │ ├── NoOpCacheEvictor.java │ │ │ └── SimpleCache.java │ │ └── util │ │ ├── Ac3Util.java │ │ ├── Assertions.java │ │ ├── Clock.java │ │ ├── CodecSpecificDataUtil.java │ │ ├── DebugTextViewHelper.java │ │ ├── DtsUtil.java │ │ ├── FlacSeekTable.java │ │ ├── FlacStreamInfo.java │ │ ├── FlacUtil.java │ │ ├── LongArray.java │ │ ├── ManifestFetcher.java │ │ ├── MimeTypes.java │ │ ├── MpegAudioHeader.java │ │ ├── NalUnitUtil.java │ │ ├── ParsableBitArray.java │ │ ├── ParsableByteArray.java │ │ ├── ParserUtil.java │ │ ├── PlayerControl.java │ │ ├── Predicate.java │ │ ├── PriorityHandlerThread.java │ │ ├── SlidingPercentile.java │ │ ├── SystemClock.java │ │ ├── TraceUtil.java │ │ ├── UriUtil.java │ │ ├── Util.java │ │ ├── VerboseLogUtil.java │ │ └── extensions │ │ ├── Buffer.java │ │ ├── Decoder.java │ │ ├── InputBuffer.java │ │ ├── OutputBuffer.java │ │ └── SimpleDecoder.java │ ├── project.properties │ └── res │ └── .README.txt ├── playbacktests ├── build.gradle └── src │ └── main │ ├── .classpath │ ├── .project │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── google │ │ └── android │ │ └── exoplayer │ │ └── playbacktests │ │ ├── gts │ │ └── DashTest.java │ │ └── util │ │ ├── Action.java │ │ ├── ActionSchedule.java │ │ ├── CodecCountersUtil.java │ │ ├── DebugMediaCodecVideoTrackRenderer.java │ │ ├── ExoHostedTest.java │ │ ├── HostActivity.java │ │ ├── LogcatLogger.java │ │ ├── LogcatMetricsLogger.java │ │ ├── MetricsLogger.java │ │ └── TestUtil.java │ ├── project.properties │ └── res │ └── layout │ └── host_activity.xml ├── settings.gradle └── third_party ├── dexmaker ├── LICENSE ├── dexmaker-1.2.jar └── dexmaker-mockito-1.2.jar ├── mockito ├── LICENSE └── mockito-all-1.9.5.jar ├── okhttp3 ├── LICENSE └── okhttp-3.2.0.jar └── okio ├── LICENSE └── okio-1.6.0.jar /.gitignore: -------------------------------------------------------------------------------- 1 | # Android generated 2 | bin 3 | gen 4 | libs 5 | obj 6 | lint.xml 7 | 8 | # IntelliJ IDEA 9 | .idea 10 | *.iml 11 | *.ipr 12 | *.iws 13 | classes 14 | gen-external-apklibs 15 | 16 | # Eclipse 17 | .project 18 | .classpath 19 | .settings 20 | .checkstyle 21 | .cproject 22 | 23 | # Gradle 24 | .gradle 25 | build 26 | out 27 | 28 | # Maven 29 | target 30 | release.properties 31 | pom.xml.* 32 | 33 | # Ant 34 | ant.properties 35 | local.properties 36 | proguard.cfg 37 | proguard-project.txt 38 | 39 | # Other 40 | .DS_Store 41 | dist 42 | tmp 43 | 44 | # VP9 extension 45 | extensions/vp9/src/main/jni/libvpx 46 | extensions/vp9/src/main/jni/libvpx_android_configs 47 | extensions/vp9/src/main/jni/libyuv 48 | 49 | # Opus extension 50 | extensions/opus/src/main/jni/libopus 51 | 52 | # FLAC extension 53 | extensions/flac/src/main/jni/flac 54 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to contribute # 2 | 3 | ## Reporting issues ## 4 | 5 | We use the [GitHub issue tracker](https://github.com/google/ExoPlayer/issues) 6 | to track bugs, feature requests and questions. 7 | 8 | Before filing a new issue, please search the tracker to check if it's already 9 | covered by an existing report. Avoiding duplicates helps us maximize the time we 10 | can spend fixing bugs and adding new features. 11 | 12 | If you're filing a bug, be sure to provide enough information for us to 13 | efficiently diagnose and reproduce the problem. 14 | [Reporting an issue](https://google.github.io/ExoPlayer/2015/10/01/reporting-issues.html) 15 | gives some examples of what to include. 16 | 17 | ## Pull requests ## 18 | 19 | We will also consider high quality pull requests. These should normally merge 20 | into the [dev][] branch rather than master. To contribute in this way you must 21 | first submit a Contributor License Agreement, as described below. 22 | 23 | [dev]: https://github.com/google/ExoPlayer/tree/dev 24 | 25 | ## Contributor license agreement ## 26 | 27 | Contributions to any Google project must be accompanied by a Contributor 28 | License Agreement. This is not a copyright **assignment**, it simply gives 29 | Google permission to use and redistribute your contributions as part of the 30 | project. 31 | 32 | * If you are an individual writing original source code and you're sure you 33 | own the intellectual property, then you'll need to sign an [individual 34 | CLA][]. 35 | 36 | * If you work for a company that wants to allow you to contribute your work, 37 | then you'll need to sign a [corporate CLA][]. 38 | 39 | You generally only need to submit a CLA once, so if you've already submitted 40 | one (even if it was for a different project), you probably don't need to do it 41 | again. 42 | 43 | [individual CLA]: https://developers.google.com/open-source/cla/individual 44 | [corporate CLA]: https://developers.google.com/open-source/cla/corporate 45 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE: -------------------------------------------------------------------------------- 1 | Please search the existing issues before filing a new one, including issues that 2 | are closed. When filing a new issue please include all of the following, unless 3 | you're certain that they're not useful for the particular issue being reported. 4 | 5 | - A description of the issue. 6 | - Steps describing how the issue can be reproduced, ideally in the ExoPlayer 7 | demo app. 8 | - A link to content that reproduces the issue. If you don't wish to post it 9 | publicly, please submit the issue, then email the link to 10 | dev.exoplayer@gmail.com including the issue number in the subject line. 11 | - The version of ExoPlayer being used. 12 | - The device(s) and version(s) of Android on which the issue can be reproduced, 13 | and how easily it reproduces. If possible, please test on multiple devices and 14 | Android versions. 15 | - A bug report taken from the device just after the issue occurs, attached as a 16 | file. A bug report can be captured using "adb bugreport". Output from "adb 17 | logcat" or a log snippet is not sufficient. 18 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2014 The Android Open Source Project 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 16 | 17 | buildscript { 18 | repositories { 19 | mavenCentral() 20 | jcenter() 21 | } 22 | dependencies { 23 | classpath 'com.android.tools.build:gradle:2.1.0' 24 | classpath 'com.novoda:bintray-release:0.3.4' 25 | } 26 | } 27 | 28 | allprojects { 29 | repositories { 30 | mavenCentral() 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /demo/README.md: -------------------------------------------------------------------------------- 1 | # Demo application # 2 | 3 | This folder contains a demo application that uses ExoPlayer to play a number 4 | of test streams. It can be used as a starting point or reference project when 5 | developing other applications that make use of the ExoPlayer library. 6 | -------------------------------------------------------------------------------- /demo/build.gradle: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2014 The Android Open Source Project 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | apply plugin: 'com.android.application' 15 | 16 | android { 17 | compileSdkVersion 23 18 | buildToolsVersion "23.0.1" 19 | 20 | defaultConfig { 21 | minSdkVersion 16 22 | targetSdkVersion 23 23 | } 24 | buildTypes { 25 | release { 26 | minifyEnabled false 27 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 28 | } 29 | } 30 | 31 | lintOptions { 32 | abortOnError false 33 | } 34 | } 35 | 36 | dependencies { 37 | compile project(':library') 38 | } 39 | -------------------------------------------------------------------------------- /demo/src/main/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /demo/src/main/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | ExoPlayerDemo 4 | 5 | 6 | 7 | 8 | 9 | com.android.ide.eclipse.adt.ResourceManagerBuilder 10 | 11 | 12 | 13 | 14 | com.android.ide.eclipse.adt.PreCompilerBuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.jdt.core.javabuilder 20 | 21 | 22 | 23 | 24 | com.android.ide.eclipse.adt.ApkBuilder 25 | 26 | 27 | 28 | 29 | 30 | com.android.ide.eclipse.adt.AndroidNature 31 | org.eclipse.jdt.core.javanature 32 | 33 | 34 | 35 | 1363908154650 36 | 37 | 22 38 | 39 | org.eclipse.ui.ide.multiFilter 40 | 1.0-name-matches-false-false-BUILD 41 | 42 | 43 | 44 | 1363908154652 45 | 46 | 10 47 | 48 | org.eclipse.ui.ide.multiFilter 49 | 1.0-name-matches-true-false-build 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /demo/src/main/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 3 | org.eclipse.jdt.core.compiler.compliance=1.7 4 | org.eclipse.jdt.core.compiler.source=1.7 5 | -------------------------------------------------------------------------------- /demo/src/main/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system use, 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | 10 | # Project target. 11 | target=android-23 12 | android.library=false 13 | android.library.reference.1=../../../library/src/main 14 | -------------------------------------------------------------------------------- /demo/src/main/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tresvecesseis/ExoPlayer/0c36295585e0d49ba4f102684c9aeadaa55e16d2/demo/src/main/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /demo/src/main/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tresvecesseis/ExoPlayer/0c36295585e0d49ba4f102684c9aeadaa55e16d2/demo/src/main/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /demo/src/main/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tresvecesseis/ExoPlayer/0c36295585e0d49ba4f102684c9aeadaa55e16d2/demo/src/main/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /demo/src/main/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tresvecesseis/ExoPlayer/0c36295585e0d49ba4f102684c9aeadaa55e16d2/demo/src/main/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /demo/src/main/res/drawable-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tresvecesseis/ExoPlayer/0c36295585e0d49ba4f102684c9aeadaa55e16d2/demo/src/main/res/drawable-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /demo/src/main/res/layout/sample_chooser_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 20 | 21 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /demo/src/main/res/layout/sample_chooser_inline_header.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 30 | -------------------------------------------------------------------------------- /demo/src/main/res/values/constants.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | 13sp 21 | 22 | 23 | -------------------------------------------------------------------------------- /demo/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 21 | 22 | 26 | 27 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /demo_ext/README.md: -------------------------------------------------------------------------------- 1 | # Extensions Demo # 2 | 3 | A demo app that shows how to use the ExoPlayer extensions in your app. 4 | 5 | The demo app depends on the VP9, Flac and Opus extensions being configured and 6 | built correctly. 7 | -------------------------------------------------------------------------------- /demo_ext/build.gradle: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2014 The Android Open Source Project 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | apply plugin: 'com.android.application' 15 | 16 | android { 17 | compileSdkVersion 23 18 | buildToolsVersion "23.0.1" 19 | 20 | defaultConfig { 21 | minSdkVersion 16 22 | targetSdkVersion 23 23 | } 24 | buildTypes { 25 | release { 26 | minifyEnabled false 27 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 28 | } 29 | debug { 30 | jniDebuggable = true 31 | debuggable = true 32 | } 33 | } 34 | 35 | lintOptions { 36 | abortOnError false 37 | } 38 | } 39 | 40 | dependencies { 41 | compile project(':library') 42 | compile project(':extension-opus') 43 | compile project(':extension-vp9') 44 | compile project(':extension-flac') 45 | } 46 | -------------------------------------------------------------------------------- /demo_ext/src/main/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /demo_ext/src/main/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | ExoPlayerDemoExt 4 | 5 | 6 | 7 | 8 | 9 | com.android.ide.eclipse.adt.ResourceManagerBuilder 10 | 11 | 12 | 13 | 14 | com.android.ide.eclipse.adt.PreCompilerBuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.jdt.core.javabuilder 20 | 21 | 22 | 23 | 24 | com.android.ide.eclipse.adt.ApkBuilder 25 | 26 | 27 | 28 | 29 | 30 | com.android.ide.eclipse.adt.AndroidNature 31 | org.eclipse.jdt.core.javanature 32 | 33 | 34 | -------------------------------------------------------------------------------- /demo_ext/src/main/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-23 15 | android.library.reference.1=../../../library/src/main 16 | android.library.reference.2=../../../extensions/opus/src/main 17 | android.library.reference.3=../../../extensions/vp9/src/main 18 | android.library.reference.4=../../../extensions/flac/src/main 19 | -------------------------------------------------------------------------------- /demo_ext/src/main/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tresvecesseis/ExoPlayer/0c36295585e0d49ba4f102684c9aeadaa55e16d2/demo_ext/src/main/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /demo_ext/src/main/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tresvecesseis/ExoPlayer/0c36295585e0d49ba4f102684c9aeadaa55e16d2/demo_ext/src/main/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /demo_ext/src/main/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tresvecesseis/ExoPlayer/0c36295585e0d49ba4f102684c9aeadaa55e16d2/demo_ext/src/main/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /demo_ext/src/main/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tresvecesseis/ExoPlayer/0c36295585e0d49ba4f102684c9aeadaa55e16d2/demo_ext/src/main/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /demo_ext/src/main/res/drawable-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tresvecesseis/ExoPlayer/0c36295585e0d49ba4f102684c9aeadaa55e16d2/demo_ext/src/main/res/drawable-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /demo_ext/src/main/res/layout/rows.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 21 | -------------------------------------------------------------------------------- /demo_ext/src/main/res/layout/sample_chooser_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 20 | 21 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /demo_ext/src/main/res/layout/sample_chooser_inline_header.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 26 | -------------------------------------------------------------------------------- /demo_ext/src/main/res/values-v11/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /extensions/README.md: -------------------------------------------------------------------------------- 1 | # Extensions # 2 | 3 | This folder contains optional ExoPlayer extensions. 4 | -------------------------------------------------------------------------------- /extensions/flac/README.md: -------------------------------------------------------------------------------- 1 | # ExoPlayer Flac Extension # 2 | 3 | ## Description ## 4 | 5 | The Flac Extension is a [TrackRenderer][] implementation that helps you bundle 6 | libFLAC (the Flac decoding library) into your app and use it along with 7 | ExoPlayer to play Flac audio on Android devices. 8 | 9 | [TrackRenderer]: https://google.github.io/ExoPlayer/doc/reference/com/google/android/exoplayer/TrackRenderer.html 10 | 11 | ## Build Instructions ## 12 | 13 | * Checkout ExoPlayer along with Extensions: 14 | 15 | ``` 16 | git clone https://github.com/google/ExoPlayer.git 17 | ``` 18 | 19 | * Set the following environment variables: 20 | 21 | ``` 22 | cd "" 23 | EXOPLAYER_ROOT="$(pwd)" 24 | FLAC_EXT_PATH="${EXOPLAYER_ROOT}/extensions/flac/src/main" 25 | ``` 26 | 27 | * Download the [Android NDK][] and set its location in an environment variable: 28 | 29 | [Android NDK]: https://developer.android.com/tools/sdk/ndk/index.html 30 | 31 | ``` 32 | NDK_PATH="" 33 | ``` 34 | 35 | * Download and extract flac-1.3.1 as "${FLAC_EXT_PATH}/jni/flac" folder: 36 | 37 | ``` 38 | cd "${FLAC_EXT_PATH}/jni" && \ 39 | curl http://downloads.xiph.org/releases/flac/flac-1.3.1.tar.xz | tar xJ && \ 40 | mv flac-1.3.1 flac 41 | ``` 42 | 43 | * Build the JNI native libraries from the command line: 44 | 45 | ``` 46 | cd "${FLAC_EXT_PATH}"/jni && \ 47 | ${NDK_PATH}/ndk-build APP_ABI=all -j4 48 | ``` 49 | 50 | * In your project, you can add a dependency to the Flac Extension by using a 51 | rule like this: 52 | 53 | ``` 54 | // in settings.gradle 55 | include ':..:ExoPlayer:library' 56 | include ':..:ExoPlayer:extension-flac' 57 | 58 | // in build.gradle 59 | dependencies { 60 | compile project(':..:ExoPlayer:library') 61 | compile project(':..:ExoPlayer:extension-flac') 62 | } 63 | ``` 64 | 65 | * Now, when you build your app, the Flac extension will be built and the native 66 | libraries will be packaged along with the APK. 67 | -------------------------------------------------------------------------------- /extensions/flac/build.gradle: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2016 The Android Open Source Project 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | apply plugin: 'com.android.library' 15 | 16 | android { 17 | compileSdkVersion 23 18 | buildToolsVersion "23.0.1" 19 | 20 | defaultConfig { 21 | minSdkVersion 9 22 | targetSdkVersion 23 23 | } 24 | 25 | buildTypes { 26 | release { 27 | minifyEnabled false 28 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 29 | } 30 | } 31 | 32 | lintOptions { 33 | abortOnError false 34 | } 35 | 36 | sourceSets.main { 37 | jniLibs.srcDir 'src/main/libs' 38 | jni.srcDirs = [] // Disable the automatic ndk-build call by Android Studio. 39 | } 40 | } 41 | 42 | dependencies { 43 | compile project(':library') 44 | } 45 | 46 | -------------------------------------------------------------------------------- /extensions/flac/src/androidTest/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /extensions/flac/src/androidTest/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | ExoPlayerExt-FlacTests 4 | 5 | 6 | ExoPlayerLib 7 | 8 | 9 | 10 | com.android.ide.eclipse.adt.ResourceManagerBuilder 11 | 12 | 13 | 14 | 15 | com.android.ide.eclipse.adt.PreCompilerBuilder 16 | 17 | 18 | 19 | 20 | org.eclipse.jdt.core.javabuilder 21 | 22 | 23 | 24 | 25 | com.android.ide.eclipse.adt.ApkBuilder 26 | 27 | 28 | 29 | 30 | 31 | com.android.ide.eclipse.adt.AndroidNature 32 | org.eclipse.jdt.core.javanature 33 | 34 | 35 | 36 | 0 37 | 38 | 14 39 | 40 | org.eclipse.ui.ide.multiFilter 41 | 1.0-name-matches-true-false-BUILD 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /extensions/flac/src/androidTest/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 20 | 21 | 22 | 23 | 26 | 27 | 28 | 29 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /extensions/flac/src/androidTest/assets/bear-flac.mka: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tresvecesseis/ExoPlayer/0c36295585e0d49ba4f102684c9aeadaa55e16d2/extensions/flac/src/androidTest/assets/bear-flac.mka -------------------------------------------------------------------------------- /extensions/flac/src/androidTest/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-23 15 | -------------------------------------------------------------------------------- /extensions/flac/src/androidTest/res/.README.txt: -------------------------------------------------------------------------------- 1 | This file is needed to make sure the res directory is present. 2 | The file is ignored by the Android toolchain because its name starts with a dot. 3 | -------------------------------------------------------------------------------- /extensions/flac/src/main/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /extensions/flac/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /extensions/flac/src/main/java/com/google/android/exoplayer/ext/flac/FlacDecoderException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.google.android.exoplayer.ext.flac; 17 | 18 | /** 19 | * Thrown when an Flac decoder error occurs. 20 | */ 21 | public final class FlacDecoderException extends Exception { 22 | 23 | /* package */ FlacDecoderException(String message) { 24 | super(message); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /extensions/flac/src/main/java/com/google/android/exoplayer/ext/flac/FlacOutputBuffer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.google.android.exoplayer.ext.flac; 17 | 18 | import com.google.android.exoplayer.util.extensions.OutputBuffer; 19 | 20 | import java.nio.ByteBuffer; 21 | 22 | /** 23 | * Buffer for {@link FlacDecoder} output. 24 | */ 25 | public final class FlacOutputBuffer extends OutputBuffer { 26 | 27 | private final FlacDecoder owner; 28 | 29 | public ByteBuffer data; 30 | 31 | /* package */ FlacOutputBuffer(FlacDecoder owner) { 32 | this.owner = owner; 33 | } 34 | 35 | /* package */ void init(int size) { 36 | if (data == null || data.capacity() < size) { 37 | data = ByteBuffer.allocateDirect(size); 38 | } 39 | data.position(0); 40 | data.limit(size); 41 | } 42 | 43 | @Override 44 | public void reset() { 45 | super.reset(); 46 | if (data != null) { 47 | data.clear(); 48 | } 49 | } 50 | 51 | @Override 52 | public void release() { 53 | owner.releaseOutputBuffer(this); 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /extensions/flac/src/main/jni/Android.mk: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2016 The Android Open Source Project 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | WORKING_DIR := $(call my-dir) 18 | 19 | # build libflacJNI.so 20 | include $(CLEAR_VARS) 21 | include $(WORKING_DIR)/flac_sources.mk 22 | 23 | LOCAL_PATH := $(WORKING_DIR) 24 | LOCAL_MODULE := libflacJNI 25 | LOCAL_ARM_MODE := arm 26 | LOCAL_CPP_EXTENSION := .cc 27 | 28 | LOCAL_C_INCLUDES := \ 29 | $(LOCAL_PATH)/flac/include \ 30 | $(LOCAL_PATH)/flac/src/libFLAC/include 31 | LOCAL_SRC_FILES := $(FLAC_SOURCES) 32 | 33 | LOCAL_CFLAGS += '-DVERSION="1.3.1"' -DFLAC__NO_MD5 -DFLAC__INTEGER_ONLY_LIBRARY -DFLAC__NO_ASM 34 | LOCAL_CFLAGS += -D_REENTRANT -DPIC -DU_COMMON_IMPLEMENTATION -fPIC 35 | LOCAL_CFLAGS += -O3 -funroll-loops -finline-functions 36 | 37 | LOCAL_LDLIBS := -llog -lz -lm 38 | include $(BUILD_SHARED_LIBRARY) 39 | -------------------------------------------------------------------------------- /extensions/flac/src/main/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2016 The Android Open Source Project 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | APP_OPTIM := release 18 | APP_STL := gnustl_static 19 | APP_CPPFLAGS := -frtti 20 | APP_PLATFORM := android-9 21 | -------------------------------------------------------------------------------- /extensions/flac/src/main/jni/include/data_source.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef INCLUDE_DATA_SOURCE_H_ 18 | #define INCLUDE_DATA_SOURCE_H_ 19 | 20 | #include 21 | #include 22 | 23 | class DataSource { 24 | public: 25 | // Returns the number of bytes read, or -1 on failure. It's not an error if 26 | // this returns zero; it just means the given offset is equal to, or 27 | // beyond, the end of the source. 28 | virtual ssize_t readAt(off64_t offset, void* const data, size_t size) = 0; 29 | }; 30 | 31 | #endif // INCLUDE_DATA_SOURCE_H_ 32 | -------------------------------------------------------------------------------- /extensions/flac/src/main/proguard.cfg: -------------------------------------------------------------------------------- 1 | # Proguard rules specific to the Flac extension. 2 | 3 | # This prevents the names of native methods from being obfuscated. 4 | -keepclasseswithmembernames class * { 5 | native ; 6 | } 7 | 8 | # Some members of this class are being accessed from native methods. Keep them unobfuscated. 9 | -keep class com.google.android.exoplayer.ext.flac.FlacJni { 10 | *; 11 | } 12 | -------------------------------------------------------------------------------- /extensions/flac/src/main/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-23 15 | android.library=true 16 | android.library.reference.1=../../../../library/src/main 17 | -------------------------------------------------------------------------------- /extensions/okhttp/README.md: -------------------------------------------------------------------------------- 1 | # ExoPlayer OkHttp Extension # 2 | 3 | ## Description ## 4 | 5 | The OkHttp Extension is an [HttpDataSource][] implementation using Square's 6 | [OkHttp][]. 7 | 8 | [HttpDataSource]: https://google.github.io/ExoPlayer/doc/reference/com/google/android/exoplayer/upstream/HttpDataSource.html 9 | [OkHttp]: https://square.github.io/okhttp/ 10 | -------------------------------------------------------------------------------- /extensions/okhttp/build.gradle: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2014 The Android Open Source Project 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | apply plugin: 'com.android.library' 15 | 16 | android { 17 | compileSdkVersion 23 18 | buildToolsVersion "23.0.1" 19 | 20 | defaultConfig { 21 | minSdkVersion 9 22 | targetSdkVersion 23 23 | } 24 | 25 | buildTypes { 26 | release { 27 | minifyEnabled false 28 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 29 | } 30 | } 31 | 32 | lintOptions { 33 | abortOnError false 34 | } 35 | } 36 | 37 | dependencies { 38 | compile project(':library') 39 | compile('com.squareup.okhttp3:okhttp:+') { 40 | exclude group: 'org.json' 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /extensions/okhttp/src/main/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /extensions/okhttp/src/main/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | ExoPlayerExt-OkHttp 4 | 5 | 6 | 7 | 8 | 9 | com.android.ide.eclipse.adt.ResourceManagerBuilder 10 | 11 | 12 | 13 | 14 | com.android.ide.eclipse.adt.PreCompilerBuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.jdt.core.javabuilder 20 | 21 | 22 | 23 | 24 | com.android.ide.eclipse.adt.ApkBuilder 25 | 26 | 27 | 28 | 29 | 30 | com.android.ide.eclipse.adt.AndroidNature 31 | org.eclipse.jdt.core.javanature 32 | 33 | 34 | 35 | libs/okhttp-3.2.0.jar 36 | 1 37 | $%7BPARENT-4-PROJECT_LOC%7D/third_party/okhttp3/okhttp-3.2.0.jar 38 | 39 | 40 | libs/okio-1.6.0.jar 41 | 1 42 | $%7BPARENT-4-PROJECT_LOC%7D/third_party/okio/okio-1.6.0.jar 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /extensions/okhttp/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /extensions/okhttp/src/main/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-23 15 | android.library=true 16 | android.library.reference.1=../../../../library/src/main 17 | -------------------------------------------------------------------------------- /extensions/opus/build.gradle: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2014 The Android Open Source Project 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | apply plugin: 'com.android.library' 15 | 16 | android { 17 | compileSdkVersion 23 18 | buildToolsVersion "23.0.1" 19 | 20 | defaultConfig { 21 | minSdkVersion 9 22 | targetSdkVersion 23 23 | } 24 | 25 | buildTypes { 26 | release { 27 | minifyEnabled false 28 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 29 | } 30 | } 31 | 32 | lintOptions { 33 | abortOnError false 34 | } 35 | 36 | sourceSets.main { 37 | jniLibs.srcDir 'src/main/libs' 38 | jni.srcDirs = [] // Disable the automatic ndk-build call by Android Studio. 39 | } 40 | } 41 | 42 | dependencies { 43 | compile project(':library') 44 | } 45 | 46 | -------------------------------------------------------------------------------- /extensions/opus/src/androidTest/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /extensions/opus/src/androidTest/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | ExoPlayerExt-OpusTests 4 | 5 | 6 | ExoPlayerLib 7 | 8 | 9 | 10 | com.android.ide.eclipse.adt.ResourceManagerBuilder 11 | 12 | 13 | 14 | 15 | com.android.ide.eclipse.adt.PreCompilerBuilder 16 | 17 | 18 | 19 | 20 | org.eclipse.jdt.core.javabuilder 21 | 22 | 23 | 24 | 25 | com.android.ide.eclipse.adt.ApkBuilder 26 | 27 | 28 | 29 | 30 | 31 | com.android.ide.eclipse.adt.AndroidNature 32 | org.eclipse.jdt.core.javanature 33 | 34 | 35 | 36 | 0 37 | 38 | 14 39 | 40 | org.eclipse.ui.ide.multiFilter 41 | 1.0-name-matches-true-false-BUILD 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /extensions/opus/src/androidTest/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 20 | 21 | 22 | 23 | 26 | 27 | 28 | 29 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /extensions/opus/src/androidTest/assets/bear-opus.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tresvecesseis/ExoPlayer/0c36295585e0d49ba4f102684c9aeadaa55e16d2/extensions/opus/src/androidTest/assets/bear-opus.webm -------------------------------------------------------------------------------- /extensions/opus/src/androidTest/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-23 15 | -------------------------------------------------------------------------------- /extensions/opus/src/androidTest/res/.README.txt: -------------------------------------------------------------------------------- 1 | This file is needed to make sure the res directory is present. 2 | The file is ignored by the Android toolchain because its name starts with a dot. 3 | -------------------------------------------------------------------------------- /extensions/opus/src/main/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /extensions/opus/src/main/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate 4 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 5 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 6 | org.eclipse.jdt.core.compiler.compliance=1.7 7 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 8 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 9 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 10 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 11 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 12 | org.eclipse.jdt.core.compiler.source=1.7 13 | -------------------------------------------------------------------------------- /extensions/opus/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /extensions/opus/src/main/java/com/google/android/exoplayer/ext/opus/OpusDecoderException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2014 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.google.android.exoplayer.ext.opus; 17 | 18 | /** 19 | * Thrown when an Opus decoder error occurs. 20 | */ 21 | public final class OpusDecoderException extends Exception { 22 | 23 | /* package */ OpusDecoderException(String message) { 24 | super(message); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /extensions/opus/src/main/java/com/google/android/exoplayer/ext/opus/OpusOutputBuffer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2014 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.google.android.exoplayer.ext.opus; 17 | 18 | import com.google.android.exoplayer.util.extensions.OutputBuffer; 19 | 20 | import java.nio.ByteBuffer; 21 | 22 | /** 23 | * Buffer for {@link OpusDecoder} output. 24 | */ 25 | public final class OpusOutputBuffer extends OutputBuffer { 26 | 27 | private final OpusDecoder owner; 28 | 29 | public ByteBuffer data; 30 | 31 | /* package */ OpusOutputBuffer(OpusDecoder owner) { 32 | this.owner = owner; 33 | } 34 | 35 | /* package */ void init(int size) { 36 | if (data == null || data.capacity() < size) { 37 | data = ByteBuffer.allocateDirect(size); 38 | } 39 | data.position(0); 40 | data.limit(size); 41 | } 42 | 43 | @Override 44 | public void reset() { 45 | super.reset(); 46 | if (data != null) { 47 | data.clear(); 48 | } 49 | } 50 | 51 | @Override 52 | public void release() { 53 | owner.releaseOutputBuffer(this); 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /extensions/opus/src/main/jni/Android.mk: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2014 The Android Open Source Project 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | WORKING_DIR := $(call my-dir) 18 | include $(CLEAR_VARS) 19 | 20 | # build libopus.so 21 | LOCAL_PATH := $(WORKING_DIR) 22 | include libopus.mk 23 | 24 | # build libopusJNI.so 25 | include $(CLEAR_VARS) 26 | LOCAL_PATH := $(WORKING_DIR) 27 | LOCAL_MODULE := libopusJNI 28 | LOCAL_ARM_MODE := arm 29 | LOCAL_CPP_EXTENSION := .cc 30 | LOCAL_SRC_FILES := opus_jni.cc 31 | LOCAL_LDLIBS := -llog -lz -lm 32 | LOCAL_SHARED_LIBRARIES := libopus 33 | include $(BUILD_SHARED_LIBRARY) 34 | -------------------------------------------------------------------------------- /extensions/opus/src/main/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2014 The Android Open Source Project 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | APP_OPTIM := release 18 | APP_STL := gnustl_static 19 | APP_CPPFLAGS := -frtti 20 | APP_PLATFORM := android-9 21 | -------------------------------------------------------------------------------- /extensions/opus/src/main/jni/convert_android_asm.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Copyright (C) 2014 The Android Open Source Project 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | set -e 19 | ASM_CONVERTER="./libopus/celt/arm/arm2gnu.pl" 20 | 21 | if [[ ! -x "${ASM_CONVERTER}" ]]; then 22 | echo "Please make sure you have checked out libopus." 23 | exit 24 | fi 25 | 26 | while read file; do 27 | # This check is required because the ASM conversion script doesn't seem to be 28 | # idempotent. 29 | if [[ ! "${file}" =~ .*_gnu\.s$ ]]; then 30 | gnu_file="${file%.s}_gnu.s" 31 | ${ASM_CONVERTER} "${file}" > "${gnu_file}" 32 | # The ASM conversion script replaces includes with *_gnu.S. So, replace 33 | # occurences of "*-gnu.S" with "*_gnu.s". 34 | perl -pi -e "s/-gnu\.S/_gnu\.s/g" "${gnu_file}" 35 | rm -f "${file}" 36 | fi 37 | done < <(find . -iname '*.s') 38 | 39 | # Generate armopts.s from armopts.s.in 40 | sed \ 41 | -e "s/@OPUS_ARM_MAY_HAVE_EDSP@/1/g" \ 42 | -e "s/@OPUS_ARM_MAY_HAVE_MEDIA@/1/g" \ 43 | -e "s/@OPUS_ARM_MAY_HAVE_NEON@/1/g" \ 44 | libopus/celt/arm/armopts.s.in > libopus/celt/arm/armopts.s.temp 45 | ${ASM_CONVERTER} "libopus/celt/arm/armopts.s.temp" > "libopus/celt/arm/armopts_gnu.s" 46 | rm "libopus/celt/arm/armopts.s.temp" 47 | echo "Converted all ASM files and generated armopts.s successfully." 48 | -------------------------------------------------------------------------------- /extensions/opus/src/main/proguard.cfg: -------------------------------------------------------------------------------- 1 | # Proguard rules specific to the Opus extension. 2 | 3 | # This prevents the names of native methods from being obfuscated. 4 | -keepclasseswithmembernames class * { 5 | native ; 6 | } 7 | -------------------------------------------------------------------------------- /extensions/opus/src/main/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-23 15 | android.library=true 16 | android.library.reference.1=../../../../library/src/main 17 | -------------------------------------------------------------------------------- /extensions/opus/src/main/res/.README.txt: -------------------------------------------------------------------------------- 1 | This file is needed to make sure the res directory is present. 2 | The file is ignored by the Android toolchain because its name starts with a dot. 3 | -------------------------------------------------------------------------------- /extensions/vp9/build.gradle: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2014 The Android Open Source Project 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | apply plugin: 'com.android.library' 15 | 16 | android { 17 | compileSdkVersion 23 18 | buildToolsVersion "23.0.1" 19 | 20 | defaultConfig { 21 | minSdkVersion 9 22 | targetSdkVersion 23 23 | } 24 | 25 | buildTypes { 26 | release { 27 | minifyEnabled false 28 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 29 | } 30 | } 31 | 32 | lintOptions { 33 | abortOnError false 34 | } 35 | 36 | sourceSets.main { 37 | jniLibs.srcDir 'src/main/libs' 38 | jni.srcDirs = [] // Disable the automatic ndk-build call by Android Studio. 39 | } 40 | } 41 | 42 | dependencies { 43 | compile project(':library') 44 | } 45 | 46 | -------------------------------------------------------------------------------- /extensions/vp9/src/androidTest/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /extensions/vp9/src/androidTest/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | ExoPlayerExt-VP9Tests 4 | 5 | 6 | ExoPlayerLib 7 | 8 | 9 | 10 | com.android.ide.eclipse.adt.ResourceManagerBuilder 11 | 12 | 13 | 14 | 15 | com.android.ide.eclipse.adt.PreCompilerBuilder 16 | 17 | 18 | 19 | 20 | org.eclipse.jdt.core.javabuilder 21 | 22 | 23 | 24 | 25 | com.android.ide.eclipse.adt.ApkBuilder 26 | 27 | 28 | 29 | 30 | 31 | com.android.ide.eclipse.adt.AndroidNature 32 | org.eclipse.jdt.core.javanature 33 | 34 | 35 | 36 | 0 37 | 38 | 14 39 | 40 | org.eclipse.ui.ide.multiFilter 41 | 1.0-name-matches-true-false-BUILD 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /extensions/vp9/src/androidTest/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 20 | 21 | 22 | 23 | 26 | 27 | 28 | 29 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /extensions/vp9/src/androidTest/assets/bear-vp9-odd-dimensions.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tresvecesseis/ExoPlayer/0c36295585e0d49ba4f102684c9aeadaa55e16d2/extensions/vp9/src/androidTest/assets/bear-vp9-odd-dimensions.webm -------------------------------------------------------------------------------- /extensions/vp9/src/androidTest/assets/bear-vp9.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tresvecesseis/ExoPlayer/0c36295585e0d49ba4f102684c9aeadaa55e16d2/extensions/vp9/src/androidTest/assets/bear-vp9.webm -------------------------------------------------------------------------------- /extensions/vp9/src/androidTest/assets/invalid-bitstream.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tresvecesseis/ExoPlayer/0c36295585e0d49ba4f102684c9aeadaa55e16d2/extensions/vp9/src/androidTest/assets/invalid-bitstream.webm -------------------------------------------------------------------------------- /extensions/vp9/src/androidTest/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-23 15 | -------------------------------------------------------------------------------- /extensions/vp9/src/androidTest/res/.README.txt: -------------------------------------------------------------------------------- 1 | This file is needed to make sure the res directory is present. 2 | The file is ignored by the Android toolchain because its name starts with a dot. 3 | -------------------------------------------------------------------------------- /extensions/vp9/src/main/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /extensions/vp9/src/main/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate 4 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 5 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 6 | org.eclipse.jdt.core.compiler.compliance=1.7 7 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 8 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 9 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 10 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 11 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 12 | org.eclipse.jdt.core.compiler.source=1.7 13 | -------------------------------------------------------------------------------- /extensions/vp9/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /extensions/vp9/src/main/java/com/google/android/exoplayer/ext/vp9/VpxDecoderException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2014 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.google.android.exoplayer.ext.vp9; 17 | 18 | /** 19 | * Thrown when a libvpx decoder error occurs. 20 | */ 21 | public class VpxDecoderException extends Exception { 22 | 23 | /* package */ VpxDecoderException(String message) { 24 | super(message); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /extensions/vp9/src/main/java/com/google/android/exoplayer/ext/vp9/VpxInputBuffer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2014 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.google.android.exoplayer.ext.vp9; 17 | 18 | import com.google.android.exoplayer.util.extensions.InputBuffer; 19 | 20 | /** 21 | * Input buffer to a {@link VpxDecoder}. 22 | */ 23 | /* package */ final class VpxInputBuffer extends InputBuffer { 24 | 25 | public int width; 26 | public int height; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /extensions/vp9/src/main/java/com/google/android/exoplayer/ext/vp9/VpxOutputBufferRenderer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2015 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.google.android.exoplayer.ext.vp9; 17 | 18 | /** 19 | * Renders the {@link VpxOutputBuffer}. 20 | */ 21 | public interface VpxOutputBufferRenderer { 22 | 23 | /** 24 | * Sets the output buffer to be rendered. The renderer is responsible for releasing the buffer. 25 | */ 26 | void setOutputBuffer(VpxOutputBuffer outputBuffer); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /extensions/vp9/src/main/java/com/google/android/exoplayer/ext/vp9/VpxVideoSurfaceView.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2014 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.google.android.exoplayer.ext.vp9; 17 | 18 | import android.annotation.TargetApi; 19 | import android.content.Context; 20 | import android.opengl.GLSurfaceView; 21 | import android.util.AttributeSet; 22 | 23 | /** 24 | * A GLSurfaceView extension that scales itself to the given aspect ratio. 25 | */ 26 | @TargetApi(11) 27 | public class VpxVideoSurfaceView extends GLSurfaceView implements VpxOutputBufferRenderer { 28 | 29 | private final VpxRenderer renderer; 30 | 31 | public VpxVideoSurfaceView(Context context) { 32 | this(context, null); 33 | } 34 | 35 | public VpxVideoSurfaceView(Context context, AttributeSet attrs) { 36 | super(context, attrs); 37 | renderer = new VpxRenderer(); 38 | setPreserveEGLContextOnPause(true); 39 | setEGLContextClientVersion(2); 40 | setRenderer(renderer); 41 | setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); 42 | } 43 | 44 | @Override 45 | public void setOutputBuffer(VpxOutputBuffer outputBuffer) { 46 | renderer.setFrame(outputBuffer); 47 | requestRender(); 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /extensions/vp9/src/main/jni/Android.mk: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2014 The Android Open Source Project 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | WORKING_DIR := $(call my-dir) 18 | include $(CLEAR_VARS) 19 | LIBVPX_ROOT := $(WORKING_DIR)/libvpx 20 | LIBYUV_ROOT := $(WORKING_DIR)/libyuv 21 | 22 | # build libyuv_static.a 23 | LOCAL_PATH := $(WORKING_DIR) 24 | include $(LIBYUV_ROOT)/Android.mk 25 | 26 | # build libvpx.so 27 | LOCAL_PATH := $(WORKING_DIR) 28 | include libvpx.mk 29 | 30 | # build libvpxJNI.so 31 | include $(CLEAR_VARS) 32 | LOCAL_PATH := $(WORKING_DIR) 33 | LOCAL_MODULE := libvpxJNI 34 | LOCAL_ARM_MODE := arm 35 | LOCAL_CPP_EXTENSION := .cc 36 | LOCAL_SRC_FILES := vpx_jni.cc 37 | LOCAL_LDLIBS := -llog -lz -lm 38 | LOCAL_SHARED_LIBRARIES := libvpx 39 | LOCAL_STATIC_LIBRARIES := libyuv_static cpufeatures 40 | include $(BUILD_SHARED_LIBRARY) 41 | 42 | $(call import-module,android/cpufeatures) 43 | -------------------------------------------------------------------------------- /extensions/vp9/src/main/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2014 The Android Open Source Project 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | APP_OPTIM := release 18 | APP_STL := gnustl_static 19 | APP_CPPFLAGS := -frtti 20 | APP_PLATFORM := android-9 21 | -------------------------------------------------------------------------------- /extensions/vp9/src/main/proguard.cfg: -------------------------------------------------------------------------------- 1 | # Proguard rules specific to the VP9 extension. 2 | 3 | # This prevents the names of native methods from being obfuscated. 4 | -keepclasseswithmembernames class * { 5 | native ; 6 | } 7 | 8 | # Some members of this class are being accessed from native methods. Keep them unobfuscated. 9 | -keep class com.google.android.exoplayer.ext.vp9.VpxOutputBuffer { 10 | *; 11 | } 12 | -------------------------------------------------------------------------------- /extensions/vp9/src/main/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-23 15 | android.library=true 16 | android.library.reference.1=../../../../library/src/main 17 | -------------------------------------------------------------------------------- /extensions/vp9/src/main/res/.README.txt: -------------------------------------------------------------------------------- 1 | This file is needed to make sure the res directory is present. 2 | The file is ignored by the Android toolchain because its name starts with a dot. 3 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | ## Project-wide Gradle settings. 2 | # 3 | # For more details on how to configure your build environment visit 4 | # http://www.gradle.org/docs/current/userguide/build_environment.html 5 | # 6 | # Specifies the JVM arguments used for the daemon process. 7 | # The setting is particularly useful for tweaking memory settings. 8 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 9 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 10 | # 11 | # When configured, Gradle will run in incubating parallel mode. 12 | # This option should only be used with decoupled projects. More details, visit 13 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 14 | # org.gradle.parallel=true 15 | #Thu Feb 04 15:49:07 GMT 2016 16 | android.useDeprecatedNdk=true 17 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tresvecesseis/ExoPlayer/0c36295585e0d49ba4f102684c9aeadaa55e16d2/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Tue Feb 23 12:44:36 GMT 2016 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip 7 | -------------------------------------------------------------------------------- /library/src/androidTest/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /library/src/androidTest/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | ExoPlayerLibTests 4 | 5 | 6 | ExoPlayerLib 7 | 8 | 9 | 10 | com.android.ide.eclipse.adt.ResourceManagerBuilder 11 | 12 | 13 | 14 | 15 | com.android.ide.eclipse.adt.PreCompilerBuilder 16 | 17 | 18 | 19 | 20 | org.eclipse.jdt.core.javabuilder 21 | 22 | 23 | 24 | 25 | com.android.ide.eclipse.adt.ApkBuilder 26 | 27 | 28 | 29 | 30 | 31 | com.android.ide.eclipse.adt.AndroidNature 32 | org.eclipse.jdt.core.javanature 33 | 34 | 35 | 36 | libs/dexmaker-1.2.jar 37 | 1 38 | $%7BPARENT-3-PROJECT_LOC%7D/third_party/dexmaker/dexmaker-1.2.jar 39 | 40 | 41 | libs/dexmaker-mockito-1.2.jar 42 | 1 43 | $%7BPARENT-3-PROJECT_LOC%7D/third_party/dexmaker/dexmaker-mockito-1.2.jar 44 | 45 | 46 | libs/mockito-all-1.9.5.jar 47 | 1 48 | $%7BPARENT-3-PROJECT_LOC%7D/third_party/mockito/mockito-all-1.9.5.jar 49 | 50 | 51 | 52 | 53 | 1425657306619 54 | 55 | 14 56 | 57 | org.eclipse.ui.ide.multiFilter 58 | 1.0-name-matches-true-false-BUILD 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /library/src/androidTest/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 3 | org.eclipse.jdt.core.compiler.compliance=1.7 4 | org.eclipse.jdt.core.compiler.source=1.7 5 | -------------------------------------------------------------------------------- /library/src/androidTest/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 20 | 21 | 22 | 23 | 26 | 27 | 28 | 29 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /library/src/androidTest/assets/smoothstreaming/sample_ismc_1: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 21 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /library/src/androidTest/assets/smoothstreaming/sample_ismc_2: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 21 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /library/src/androidTest/assets/subrip/empty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tresvecesseis/ExoPlayer/0c36295585e0d49ba4f102684c9aeadaa55e16d2/library/src/androidTest/assets/subrip/empty -------------------------------------------------------------------------------- /library/src/androidTest/assets/subrip/no_end_timecodes: -------------------------------------------------------------------------------- 1 | 1 2 | 00:00:00,000 --> 3 | SubRip doesn't technically allow missing end timecodes. 4 | 5 | 2 6 | 00:00:02,345 --> 7 | We interpret it to mean that a subtitle extends to the start of the next one. 8 | 9 | 3 10 | 00:00:03,456 --> 11 | Or to the end of the media. -------------------------------------------------------------------------------- /library/src/androidTest/assets/subrip/typical: -------------------------------------------------------------------------------- 1 | 1 2 | 00:00:00,000 --> 00:00:01,234 3 | This is the first subtitle. 4 | 5 | 2 6 | 00:00:02,345 --> 00:00:03,456 7 | This is the second subtitle. 8 | Second subtitle with second line. 9 | 10 | 3 11 | 00:00:04,567 --> 00:00:08,901 12 | This is the third subtitle. -------------------------------------------------------------------------------- /library/src/androidTest/assets/subrip/typical_extra_blank_line: -------------------------------------------------------------------------------- 1 | 1 2 | 00:00:00,000 --> 00:00:01,234 3 | This is the first subtitle. 4 | 5 | 6 | 2 7 | 00:00:02,345 --> 00:00:03,456 8 | This is the second subtitle. 9 | Second subtitle with second line. 10 | 11 | 3 12 | 00:00:04,567 --> 00:00:08,901 13 | This is the third subtitle. -------------------------------------------------------------------------------- /library/src/androidTest/assets/subrip/typical_missing_sequence: -------------------------------------------------------------------------------- 1 | 1 2 | 00:00:00,000 --> 00:00:01,234 3 | This is the first subtitle. 4 | 5 | 00:00:02,345 --> 00:00:03,456 6 | This is the second subtitle. 7 | Second subtitle with second line. 8 | 9 | 3 10 | 00:00:04,567 --> 00:00:08,901 11 | This is the third subtitle. -------------------------------------------------------------------------------- /library/src/androidTest/assets/subrip/typical_missing_timecode: -------------------------------------------------------------------------------- 1 | 1 2 | 00:00:00,000 --> 00:00:01,234 3 | This is the first subtitle. 4 | 5 | 2 6 | This is the second subtitle. 7 | Second subtitle with second line. 8 | 9 | 3 10 | 00:00:04,567 --> 00:00:08,901 11 | This is the third subtitle. -------------------------------------------------------------------------------- /library/src/androidTest/assets/subrip/typical_with_byte_order_mark: -------------------------------------------------------------------------------- 1 | 1 2 | 00:00:00,000 --> 00:00:01,234 3 | This is the first subtitle. 4 | 5 | 2 6 | 00:00:02,345 --> 00:00:03,456 7 | This is the second subtitle. 8 | Second subtitle with second line. 9 | 10 | 3 11 | 00:00:04,567 --> 00:00:08,901 12 | This is the third subtitle. -------------------------------------------------------------------------------- /library/src/androidTest/assets/ttml/chain_multiple_styles.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 |