- 17 Jan, 2019 4 commits
-
-
This class includes helper methods to upgrade ActionFiles and custom download records to DownloadIndex. PiperOrigin-RevId: 229744441
eguven committed -
Issue: #5301 Issue: #4988 Issue: #4813 Issue: #5344 Issue: #5117 PiperOrigin-RevId: 229603354
bachinger committed -
PiperOrigin-RevId: 229544734
eguven committed -
Issue: #5344 PiperOrigin-RevId: 229527963
bachinger committed
-
- 15 Jan, 2019 7 commits
-
-
When the extra adaptation set of a switch group isn't defined in the manifest, we currently assume it's the first adaptation group. This either leads to wrong grouping or duplicate track groups. Such a case may easily happen if the manifest is filtered such that only one of the switch adaptation sets will be present in the manifest. PiperOrigin-RevId: 229365379
tonihei committed -
PiperOrigin-RevId: 229365333
tonihei committed -
PiperOrigin-RevId: 229364563
olly committed -
PiperOrigin-RevId: 229364147
Oliver Woodman committed -
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
-
- 10 Jan, 2019 1 commit
-
-
Reported in https://github.com/google/ExoPlayer/issues/3860 For failing examples see the github link above. [Problem] We drop matching control codes even if they are not received on consecutive frames. The specification says "(4) If the first transmission of a control code pair passes parity, it is acted upon within one video frame. If the NEXT frame contains a perfect repeat of the same pair, the redundant code is ignored." Keyword is the NEXT. The frames must arrive immediately after each other. See https://www.law.cornell.edu/cfr/text/47/79.101 [Solution] Set an additional flag when any data is processed. Control code duplication checks should be limited only for the first control byte pairs processed after any control code. [Test] Sarnoff tests have equivalent CEA708 and CEA608 Streams.
Zsolt Matyas committed
-
- 08 Jan, 2019 17 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
-