- 14 Jan, 2019 7 commits
-
-
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 33 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 -
PiperOrigin-RevId: 227520168
olly committed -
Issue: #4114 PiperOrigin-RevId: 227516509
andrewlewis committed -
CacheEvictor.onStartFile currently receives a length, which is the maximum size of the content that might be written. The LRU cache evictor will make sure there's sufficient space for the specified size. If the actual size of the content is unknown, CacheDataSink passes maxCacheFileSize. The current behavior isn't ideal. It seems valid for a developer to specify maxCacheFileSize=Long.MAX_VALUE if they don't want any file fragmentation in the cache. However if they then attempt to cache something with unknown length, LRU cache will try and make room for content of length Long.MAX_VALUE, and end up evicting the entire cache to do so. This change alters the logic so a length is only passed if the actual size of the content is known. In other cases C.LENGTH_UNSET is now passed. The LRU evictor will not evict until after the file is committed. Note a custom LRU evictor could still opt to evict to ensure some application specified amount of space, if that's the desired behavior. PiperOrigin-RevId: 227509525
olly committed -
PiperOrigin-RevId: 227500707
olly committed -
See also https://github.com/Matroska-Org/matroska-specification/issues/269. PiperOrigin-RevId: 226758584
andrewlewis committed -
This also applies when seeking or transitioning to unprepared media, which isn't clear from the current documentation. Issue:#5267 PiperOrigin-RevId: 226486685
tonihei committed -
PiperOrigin-RevId: 226460891
eguven committed
-