- 15 Jan, 2019 3 commits
-
-
The buffered position is currently based on the mimimum queued timestamp of all AV tracks. If the tracks have unequal lengths, one track continues loading without bounds as the "buffered position" will always stay at the shorter track's duration. This change adds an optional buffer flag to mark the last sample of the stream. This is set in the Mp4Extractor only so far. ExtractorMediaSource uses this flag to ignore AV streams in the buffered duration calculation if they already finished loading. Issue:#3670 PiperOrigin-RevId: 229359899
tonihei committed -
That was previously handled by the player. But since we switched to Handler messages instead of player messages, we should do that manually. PiperOrigin-RevId: 229341747
tonihei committed -
This is not necessary as the track selection needs to be updated with updateSelectedTrack anyway. It's also error-prone as the selection code calls into a protected method of a not fully initialized class. PiperOrigin-RevId: 229331669
tonihei committed
-
- 14 Jan, 2019 11 commits
-
-
Issue: #5378 PiperOrigin-RevId: 229261658
olly committed -
PiperOrigin-RevId: 229253065
olly committed -
DataSpec.FLAG_ALLOW_CACHE_FRAGMENTATION is added to indicate to the cache when fragmentation is allowed. This flag is set for progressive requests only. To avoid breaking changes, CacheDataSink defaults to ignoring the flag (and enabling fragmentation) for now. Respecting the flag can be enabled manually. DownloaderConstructorHelper enables respecting of the flag. Issue: #4253 PiperOrigin-RevId: 229176835
olly committed -
We currently forget whether a source is seekable at re-preparation. This was implemented intentionally this way under the assumption that we really can't seek until we have loaded the seek map again. However, seek operations are only allowed after a media period is prepared. So there is no harm in remembering whether a source is seekable. This problem currently prevents reusing ClippingMediaSources with ExtractorMediaSource and a non-zero start clip position. Issue: #5351 PiperOrigin-RevId: 229169441
tonihei committed -
Issue: #4519 PiperOrigin-RevId: 229145790
andrewlewis committed -
ExoMediaCrypto.requiresSecureDecoderComponent() is removed, and FrameworkMediaCrypto.forceAllowInsecureDecoderComponents is made public to allow determining whether a secure decoder is required to be implemented in MediaCodecRenderer. PiperOrigin-RevId: 228909771
olly committed -
There were some edge cases in which we'd forget to release DRM sessions. For example if we read a format and acquired a pendingDrmSession (in onInputFormatChanged), then immediately read another format and overwrote pendingDrmSession, we'd forget to release the one that's been overwritten. This change hopefully makes release much clearer. We keep a list of all drm sessions we're currently holding. Whenever we update either drmSession or pendingDrmSession, we release any other sessions that are in the list. PiperOrigin-RevId: 228905465
olly committed -
PiperOrigin-RevId: 228701917
eguven committed -
DownloadIndex will be used to store and query DownloadStates. PiperOrigin-RevId: 228673766
eguven committed -
The window object is used without being filled with data. This used to work well for most cases as the same live stream is sending regular updates and the first update is almost never used if it's not the first item in a playlist. It causes problems when the first timeline update of a live stream is actually used for playback (e.g. when the live stream is lazily prepared in a playlist and played first). PiperOrigin-RevId: 228530232
tonihei committed -
Setting the target conpatibility only seems to work for Java. Added the equivalent Kotlin config options to the docs. Issue:#5276 PiperOrigin-RevId: 228482496
tonihei committed
-
- 08 Jan, 2019 26 commits
-
-
PiperOrigin-RevId: 228341073
Oliver Woodman committed -
PiperOrigin-RevId: 228324452
eguven committed -
PiperOrigin-RevId: 228309236
olly committed -
This is the initialization part of mitigating issue #4253. The remaining work is on the writing side, and is simply a case of having startFile return File instances that are sharded into sub-directories. We still need to decide what scheme we want to use for doing that. Issue: #4253 PiperOrigin-RevId: 228306327
olly committed -
PiperOrigin-RevId: 228296962
olly committed -
Calls to File.length() can be O(N) where N is the number of files in the containing folder. This is believed to be true for at least FAT32. Repeated calls for the same file tend to be faster, presumably due to caching in the file system, however are still surprisingly expensive. Hence minimizing the number of calls is preferable. Issue: #4253 PiperOrigin-RevId: 228179921
olly committed -
Issue:#5313 PiperOrigin-RevId: 228155222
aquilescanta committed -
Issue:#5320 PiperOrigin-RevId: 228142567
aquilescanta committed -
They are not longer needed anywhere, are error-prone (because of threading requirements), and complicate testing and using MediaSources without a player. PiperOrigin-RevId: 227871157
tonihei committed -
We currently either use the app thread returned by the player or the thread the commands are called on depending on whether the media source is already prepared or not. This change lets the application decide which callback thread to use. As a side effect, we also don't longer need access the player instance passed to MediaSource.prepare. PiperOrigin-RevId: 227871111
tonihei committed -
These are part of published IMA SDK 3.10.2. PiperOrigin-RevId: 227861713
andrewlewis committed -
Also configure the FFmpeg context to ignore errors as far as possible (this appears to have an effect only for certain decoders). Issue: #5293 PiperOrigin-RevId: 227851397
andrewlewis committed -
PiperOrigin-RevId: 227822937
andrewlewis committed -
PiperOrigin-RevId: 227813461
andrewlewis committed -
Also support preparation without a player, in line with PlayerView. PiperOrigin-RevId: 227735260
olly committed -
If a negative value is read, sniffing should just fail. PiperOrigin-RevId: 227689568
aquilescanta committed -
PiperOrigin-RevId: 227682600
eguven committed -
PiperOrigin-RevId: 227682159
eguven committed -
The top level requirement only tried to ensure that the entire timeline only has one period. This is already asserted by ImaAdsLoader. AdsMediaSource itself works fine as long as the wrapped timeline has one period only. This is now asserted instead. PiperOrigin-RevId: 227682141
tonihei committed -
Passing the player through MediaSource.prepare is only needed for the AdsLoader and complicates other usages of MediaSource. Providing the player directly to the AdsLoader is also in line with the usage pattern of PlayerView and other components. Also rename methods to start/stop to better reflect their usage. PiperOrigin-RevId: 227682112
tonihei committed -
Issue:#5312 PiperOrigin-RevId: 227673949
aquilescanta committed -
PiperOrigin-RevId: 227668426
aquilescanta committed -
Made DownloadState top level class. Replaced action field DownloadAction fields. Added removing, removed and restarting states. Renamed started state to downloading. PiperOrigin-RevId: 227664735
eguven committed -
ExoPlayer methods must not be called from any thread besides the specified app thread. Therefore we shouldn't use them here. Using a regular Handler instead is fully equivalent. Issue:#5240 PiperOrigin-RevId: 227650489
tonihei committed -
PiperOrigin-RevId: 227646358
andrewlewis committed -
- Increase the default cache file size to 5MB - Recommended a minimum cache file size of 2MB to discourage applications from specifying values small enough such that unreasonably large numbers of cache files are generated - Allow maxCacheFileSize=C.LENGTH_UNSET, equivalent to setting it to MAX_VALUE. This is just for API consistency with other APIs we have that accept LENGTH_UNSET Issue: #4253 PiperOrigin-RevId: 227524233
olly committed
-