7262 Commits

Author SHA1 Message Date
andrewlewis
d30b0285a3 Fix audio processor draining for reconfiguration
When transitioning to a new stream in a different format, the audio
processors are reconfigured. After this, they are drained and then
flushed so that they are ready to handle data in updated formats for the
new stream.

Before this change, some audio processors made the assumption that after
reconfiguration no more input would be queued in their old input format,
but this assumption is not correct: during draining more input may be
queued. Fix this behavior so that the new configuration is not referred
to while draining and only becomes active once flushed.

Issue: #6601
PiperOrigin-RevId: 282515359
2019-11-27 22:40:13 +00:00
andrewlewis
b9f79b40f8 Remove redundant flush() calls from AudioProcessors
flush() is guaranteed to be called in all these cases anyway.

Also clarify documentation for AudioProcessor-specific methods that can
change the 'active' flag.

Issue: #6601
PiperOrigin-RevId: 282515255
2019-11-27 22:34:17 +00:00
andrewlewis
07b3cbc361 Add AudioProcessor.AudioFormat
Issue: #6601
PiperOrigin-RevId: 282515179
2019-11-27 22:34:12 +00:00
andrewlewis
a2b3ad863d Always drain/flush AudioProcessors after configuration
This simplifies the contract of configure and is in preparation for
fixing a bug where more input can't be queued when draining audio
processors for a configuration change.

Issue: #6601
PiperOrigin-RevId: 282514367
2019-11-27 22:34:05 +00:00
olly
e899e0ea81 Clean up 2.11.0 release notes
PiperOrigin-RevId: 282227866
2019-11-24 16:04:31 +00:00
olly
bd0fbd0c89 Fix incorrect Javadoc
PiperOrigin-RevId: 281976465
2019-11-22 16:59:36 +00:00
andrewlewis
25b6a02026 Fix check for E-AC3 JOC in DASH
Issue: #6636
PiperOrigin-RevId: 281972403
2019-11-22 16:59:31 +00:00
olly
ff19262a5e Make placeholder sessions report their true state
Note that the renderer changes will all disappear when we remove
legacy injection of DrmSessionManager into renderers.

PiperOrigin-RevId: 281952601
2019-11-22 15:39:15 +00:00
olly
de641380df Improve WakeLock/AudioBecomingNoisy Javadoc
PiperOrigin-RevId: 281764207
2019-11-22 15:39:10 +00:00
olly
d82da93ec4 Simplify checking whether a sample can be read
PiperOrigin-RevId: 281763672
2019-11-22 15:39:05 +00:00
olly
cc520a670e Simplify playback of clear samples without keys
- Move property to DrmSession; it feels like a more natural place
  for it to go (and provides greater flexibility).
- Change flags to a boolean.

PiperOrigin-RevId: 281758729
2019-11-22 15:39:00 +00:00
andrewlewis
9be09b35e2 Add AV1 to supported formats
PiperOrigin-RevId: 281724630
2019-11-22 15:38:53 +00:00
olly
b0eea31391 Fix broken Enc/Clear playlist in media.exolist.json
- DRM properties need to be on individual playlist items.

PiperOrigin-RevId: 281718153
2019-11-22 15:38:48 +00:00
tonihei
8becf02c30 Replace all database.beginTransaction with beginTransactionNonExclusive
This ensures other database readers can continue reading while we do our
write transaction.

PiperOrigin-RevId: 281520758
2019-11-22 15:38:16 +00:00
olly
704bd8af09 Remove stray word in logging
PiperOrigin-RevId: 281510703
2019-11-22 15:38:10 +00:00
tonihei
febfeca2c6 Mark all methods accessing SQLite databases as potentially blocking.
They are all marked with a JavaDoc comment and the @WorkerThread annotation
which is useful if apps are using threading annotations. All other public
methods in the same classes are marked with @AnyThread to avoid the impression
we forgot to annotate them.

PiperOrigin-RevId: 281490301
2019-11-22 15:38:05 +00:00
ibaker
fc0aa08d79 Add testutils as test dep of library-core module
The current workaround seems to cause compilation errors inside the
testutils module in Android Studio. This seems to fix them.

This doesn't introduce a circular dependency because it's only
the tests in library-core depending on testutils.

PiperOrigin-RevId: 281318192
2019-11-22 15:37:59 +00:00
andrewlewis
1730b6bb51 Reconfigure audio sink when PCM encoding changes
Note:
- Fixing this uncovers another bug in how audio processor draining
  works, so the test playlist still doesn't play correctly after this
  change.
- Once we reconfigure the audio sink based on the ExoPlayer Format
  rather than the codec MediaFormat in a later change, this change can
  be reverted.

Issue: #6601
PiperOrigin-RevId: 281264149
2019-11-22 15:37:51 +00:00
Oliver Woodman
3023bb4d91 Remove future release notes 2019-11-22 15:35:20 +00:00
aquilescanta
b5d9935361 Deprecate public renderer constructors that take a DrmSessionManager
PiperOrigin-RevId: 281086336
2019-11-19 15:10:42 +00:00
olly
654b7aa12b Release notes for 2.10.8
PiperOrigin-RevId: 281084720
2019-11-19 15:10:34 +00:00
olly
d99b2c3509 Cleanup key request parameters
- Make NonNull, which is already the case when using the manager builder.
- Better document PLAYREADY_CUSTOM_DATA_KEY, now that newPlayReadyInstance
  is no more.

PiperOrigin-RevId: 281079288
2019-11-19 15:10:10 +00:00
aquilescanta
6158b2fa2a Allow user to pick which track types to create placeholder sessions for
Issue:#4867
PiperOrigin-RevId: 281064793
2019-11-19 15:10:04 +00:00
olly
8c3e6663d3 Clean up non-trivial track selection deprecation
PiperOrigin-RevId: 281051893
2019-11-19 15:09:57 +00:00
andrewlewis
da9c985cce Fix byte order for HDR10+ static metadata
The implementation of writing HDR10+ static metadata assumed that the
application would use default (big endian) byte order for this metadata but
MediaCodec expects the order to match the specification CTA-861.3.

PiperOrigin-RevId: 281050806
2019-11-19 15:09:52 +00:00
olly
7f19b88506 Make some listener methods default
PiperOrigin-RevId: 281050034
2019-11-19 15:09:46 +00:00
olly
6b03ce8f12 Remove SimpleCache hacks that are no longer used
PiperOrigin-RevId: 281049383
2019-11-19 15:09:21 +00:00
olly
09df3a013c Don't check rotated resolution for HEVC on LG Q7
Issue: #6612
PiperOrigin-RevId: 281048324
2019-11-19 15:09:08 +00:00
andrewlewis
8c848a2a53 Remove option to disable loop filter for VP9
PiperOrigin-RevId: 281039634
2019-11-19 15:08:53 +00:00
aquilescanta
35d9bdea09 Add Util.linearSearch
PiperOrigin-RevId: 281037183
2019-11-19 15:08:37 +00:00
bachinger
07bfab8e4c document media button handling prior to API level 21
ISSUE: #6545
PiperOrigin-RevId: 281032120
2019-11-19 15:07:30 +00:00
Oliver Woodman
21957bf783 Revert "add default methods isSingleWindow and getInitialTimeline to MediaSource interface"
This reverts commit 01a4cf98d551bdac161f1b845fe00aa1ccffda47.
2019-11-18 05:41:30 +00:00
Oliver Woodman
30ed83ecef Revert "Playlist API: Add setMediaItem() and prepare()"
This reverts commit cd2c1f2f24c3a17ffa59f0c5ba9d17d55f141793.
2019-11-18 05:41:20 +00:00
Oliver Woodman
c9cc147fb9 Revert "Playlist API: add Playlist and PlaylistTest"
This reverts commit 5c2806eccabcdeb8817b1ccb20bffeb087259f42.
2019-11-18 05:38:22 +00:00
Oliver Woodman
71dd3fe54e Revert "Add a parameter object for LoadErrorHandlingPolicy methods"
This reverts commit b84a9bed2caade60a06ac5b91bd66a5f3af6449d.
2019-11-18 05:37:44 +00:00
Oliver Woodman
a91ffdd4d1 Revert "Fix parameter name mismatch in Playlist"
This reverts commit 65b49a49f7ab6f70b37eedfce7c6cc057441198f.
2019-11-17 05:08:24 +00:00
Oliver Woodman
cedada0988 Revert "Merge consecutive segments for downloading."
This reverts commit c8e7ecd36794e4030ff1d0a56d25e5e0e6e0a216.
2019-11-17 05:07:57 +00:00
ibaker
79b7af656b Rollback of <unknown commit>
*** Original commit ***

Disable test coverage again

https://issuetracker.google.com/issues/37019591 causes local variables can't be found while debugging.

***

PiperOrigin-RevId: 280666758
2019-11-17 00:33:26 +00:00
olly
c0d3930816 Parse channel count and sample rate from ALAC initialization data
Also remove the "do we really need to do this" comment for AAC.
Parsing from codec specific data is likely to be more robust, so
I think we should continue to do it for formats where we've seen
this problem.

Issue: #6648
PiperOrigin-RevId: 280575466
2019-11-15 05:16:39 +00:00
Oliver Woodman
c613e502aa Merge pull request #6650 from stanionascu:dev-v2-dv
PiperOrigin-RevId: 280573887
2019-11-15 05:16:29 +00:00
krocard
5579cc89c6 Propagate end of stream received from OnFrameRenderedListener
Previously the renderer EOS (aka last frame rendered), was reported as soon
as the last encoded frame was queued in the codec renderer.
This leaded to EOS reported too early.

PiperOrigin-RevId: 280456277
2019-11-15 05:16:19 +00:00
tonihei
c8e7ecd367 Merge consecutive segments for downloading.
This speeds up downloads where segments have the same URL with different
byte ranges. We limit the merged segments to 20 seconds to ensure the download
progress of demuxed streams is roughly in line with the playable media duration.

Issue:#5978
PiperOrigin-RevId: 280410761
2019-11-15 05:16:11 +00:00
aquilescanta
51711a0c97 Fix MediaDrm leaks in OfflineLicenseHelper
PiperOrigin-RevId: 280176216
2019-11-15 05:16:03 +00:00
ibaker
65b49a49f7 Fix parameter name mismatch in Playlist
PiperOrigin-RevId: 280167223
2019-11-15 05:15:56 +00:00
olly
0ff79c0e02 Support switching between Surface and VideoDecoderOutputBufferRenderer
Clear state for one mode when entering the other in both SimpleExoPlayer
and SimpleDecoderVideoRenderer. The latter is redundant for the case of
renderers that are used inside SimpleExoPlayer, but seems nice to have.

- Entering Surface mode means receiving a non-null Surface, SurfaceHolder
  or TextureView in SimpleExoPlayer, or a non-null Surface in
  SimpleDecoderVideoRenderer.
- Entering VideoDecoderOutputBufferRenderer means receiving a non-null
  VideoDecoderOutputBufferRenderer in SimpleExoPlayer and
  SimpleDecoderVideoRenderer.

PiperOrigin-RevId: 280155151
2019-11-15 05:15:48 +00:00
olly
bee6294813 Add clear methods for VideoDecoderOutputBufferRenderer
Also add some missing Nullable annotations.

PiperOrigin-RevId: 280150512
2019-11-15 05:15:40 +00:00
olly
7ca77c6002 Make DrmSession acquire/release consistent with ExoMediaDrm
This aligns the method naming and Javadoc. The only remaining
inconsistency I can see is that the initial reference count for
DrmSession is 0 rather than 1. Unfortunately I think it's not
trivial to get these aligned, because DefaultDrmSessionManager
relies on being able to do something between instantiation and
the DrmSession starting to open the session. In practice this
doesn't really matter, since DrmSessions will be obtained via the
manager, which does increment thee reference count to 1 to be
consistent with how ExoMediaDrm acquisition works.

PiperOrigin-RevId: 280136574
2019-11-15 05:15:32 +00:00
olly
9b4a3701d4 Clean up ExoMediaDrm reference counting documentation
PiperOrigin-RevId: 280106092
2019-11-15 05:15:24 +00:00
olly
20ab05103b First pass at finalizing 2.11.0 release notes
PiperOrigin-RevId: 280056790
2019-11-15 05:15:16 +00:00
bachinger
69e51505e4 use getPeriodByUid when searching for subsequent period of seek timeline
Issue: #6641
PiperOrigin-RevId: 279963739
2019-11-15 05:15:08 +00:00