11299 Commits

Author SHA1 Message Date
ibaker
b87a4c04e0 Don't restore DRM keys before releasing them
PiperOrigin-RevId: 375436117
2021-06-06 23:32:01 +01:00
samrobinson
81b8bb671c Add an extras bundle to MediaMetadata.
#minor-release

PiperOrigin-RevId: 375435339
2021-06-06 23:31:29 +01:00
samrobinson
ae400176b2 Add a mediaType field to MediaMetadata.
#minor-release

PiperOrigin-RevId: 375097412
2021-06-06 23:31:23 +01:00
krocard
7a6a9b0d48 Add to realease note DefaultDrmSessionEventListener's rename.
Its absence seems to have caused
https://github.com/google/ExoPlayer/issues/8969.

#minor-release

PiperOrigin-RevId: 375058222
2021-06-06 23:31:16 +01:00
olly
95ea818b66 Replace internal dependencies on monolithic module
PiperOrigin-RevId: 375054051
2021-06-06 23:31:09 +01:00
tonihei
6d6efed6d4 Fix issue where getFirstSampleIndex was called on spliced in chunks.
We need to avoid reading and skipping into preload chunks as they
may need to be discarded. The current code iterates over all chunks,
but this can be simplified by just checking the last chunk knowing
that the preload chunk must always be the last one.

As a result, we avoid calling getFirstSampleIndex on all chunks. This
is a bug since the method is not allowed to be called for chunks
that have been spliced in. This still leaves the smaller issue of
potentially calling this method for spliced-in preload chunks, which
will be solved separately.

Issue: #8937

PiperOrigin-RevId: 375053638
2021-06-06 23:30:59 +01:00
tonihei
10c19afa35 Don't allow spliced-in preload chunks.
Preload chunks may still need to be discarded. However, we don't
currently support discarding spliced-in chunks. Thus, we need to
avoid loadng a preload chunk that needs to be spliced-in.

Issue: #8937

#minor-release

PiperOrigin-RevId: 374851661
2021-06-06 23:30:03 +01:00
claincly
5fc6b2ff9d Define the default RTSP character set.
#minor-release

PiperOrigin-RevId: 374433331
2021-06-06 23:29:53 +01:00
ibaker
617267bfcf Fix core_settings.gradle to not assume exoplayerRoot is absolute
Gradle warns against passing a relative path to `new File(String)`:
https://docs.gradle.org/current/userguide/working_with_files.html#sec:single_file_paths

This change fixes all usages of `exoplayerRoot` to pass it to Gradle's
`Project.file()` first, which returns an absolute `File`.

To reproduce the problem in Issue: #8927:
1. Checkout ExoPlayer git project, to e.g. `~/ExoPlayer/exoplayer-git`
2. Create a new Android Studio project in e.g. `~/AndroidStudioProjects/exoplayer-test`
3. Edit the new project's `settings.gradle` file as described in
   https://github.com/google/ExoPlayer/blob/release-v2/README.md
   using a relative path for `exoplayerRoot`:
   ```
   gradle.ext.exoplayerRoot = '../../ExoPlayer/exoplayer-git'
   ```
4. In a shell:
   ```bash
   $ cd ~/AndroidStudioProjects/exoplayer-test/app
   $ ../gradlew build
   ```

(Step 4 is important, it seems running `./gradlew` from the project root
doesn't trigger the relative path problem)

This change fixes the problem, and also works with `exoplayerRoot` as a
`File` or `Path` object. `String`, `File` and `Path` all work with relative or
absolute paths:
```
gradle.ext.exoplayerRoot = '/home/ibaker/ExoPlayer/exoplayer-git'
gradle.ext.exoplayerRoot = '../../ExoPlayer/exoplayer-git'
gradle.ext.exoplayerRoot = new File('/home/ibaker/ExoPlayer/exoplayer-git')
gradle.ext.exoplayerRoot = new File('../../ExoPlayer/exoplayer-git')
gradle.ext.exoplayerRoot = Paths.get('/home/ibaker/ExoPlayer/exoplayer-git')
gradle.ext.exoplayerRoot = Paths.get('../../ExoPlayer/exoplayer-git')
```

Note: The Path versions above require importing `java.nio.file.Paths`
and changing the `apply from:` line in the project's settings.gradle
file to something like:
```
apply from: file(gradle.ext.exoplayerRoot.resolve('core_settings.gradle'))
```
It's assumed that a project wanting to pass a `Path` will make these
changes.

Issue: #8927
PiperOrigin-RevId: 374421627
2021-06-06 23:29:37 +01:00
samrobinson
941a71ae28 Add track number & total to MediaMetadata
#minor-release

PiperOrigin-RevId: 374235979
2021-06-06 23:28:41 +01:00
samrobinson
6bba218e72 Add an artwork field to MediaMetadata
#minor-release

PiperOrigin-RevId: 373410795
2021-06-06 23:28:08 +01:00
olly
795594f862 Update avcLevelToMaxFrameSize for AVCLevel6, 61 and 62
PiperOrigin-RevId: 374161340
2021-06-06 23:23:33 +01:00
kim-vde
cfe2811091 Merge pull request #8860 from KeiMurayamaS:dev-v2-add-mpegh-parser
PiperOrigin-RevId: 373142159
2021-06-06 23:15:12 +01:00
Oliver Woodman
9be5ece83f
Update SECURITY.md 2021-06-03 14:03:19 +01:00
Oliver Woodman
bff65c6bf3
Create SECURITY.md 2021-06-03 14:02:33 +01:00
ibaker
d5d7823877 Remove reference to Issue #4133 in exoplayer.dev/drm
The issue is fixed in 2.14.0 - keys are fetched ahead of playback

#minor-release

PiperOrigin-RevId: 374159998
2021-05-17 18:23:44 +01:00
olly
b882ba0f37 Update links for new Javadoc
PiperOrigin-RevId: 374216724
2021-05-17 18:23:33 +01:00
olly
936fa7cc15 Update Javadoc for 2.14.0
#minor-release

PiperOrigin-RevId: 373351935
2021-05-17 16:37:39 +01:00
Oliver Woodman
92e05bcd66 Remove dev release notes from release 2021-05-14 11:36:34 +01:00
Oliver Woodman
bd54394391
Merge pull request #8939 from google/dev-v2-r2.14.0
r2.14.0
2021-05-14 11:32:30 +01:00
ibaker
637c58d9de Clarify the exoplayerRoot path must be absolute in README.md#locally
Issue: #8927

#minor-release

PiperOrigin-RevId: 373752448
2021-05-14 11:28:22 +01:00
olly
0318023bf1 Include MediaSource deps in all demo apps
This is mainly so that developers can try out RTSP with
the main demo app without having to change the build.gradle
file.

The change also aligns what media can be played across the
different demo apps.

#minor-release

PiperOrigin-RevId: 373591974
2021-05-13 17:30:29 +01:00
olly
cc77298dfc Correctly remove package-info.java from empty packages
#minor-release

PiperOrigin-RevId: 373550935
2021-05-13 12:10:50 +01:00
olly
34428b699a Minor translation updates
#minor-release

PiperOrigin-RevId: 373543587
2021-05-13 11:08:06 +01:00
olly
d38edcc949 Minor copy edits for RTSP docs
#minor-release

PiperOrigin-RevId: 373402932
2021-05-12 18:59:19 +01:00
claincly
d608254ab0 Remove RTSP message logging.
#minor-release

PiperOrigin-RevId: 373336127
2021-05-12 13:02:54 +01:00
claincly
77008e16fe Allow RTSP streaming using TCP.
NAT will block off incoming UDP connection because the router has no knowledge
of the necessary port mapping (the mapping is never set up because UDP is
connectionless).

The end result is, the UDP socket to receive RTP data will timeout. After the
`SocketTimeoutException` is caught, the following takes place to try streaming
with TCP (or, RTP over RTSP).

- `RtspClient` sends TEARDOWN to tear down the current session.
- `RtspClient` re-connect to the RTSP server.
- `RtspMediaPeriod` cancels all loading `RtpDataLoadables` (that are using UDP)
- `RtspMediaPeriod` constructs new `RtpDataLoadables` that use
    `TransferRtpDataChannel`, and starts loading.
- Once the `RtpDataLoadables` are up and running, we are ready to receive.
  `RtspClient` sends the SETUP requests.

- The rest of the flow is unchanged.

#minor-release

PiperOrigin-RevId: 373310774
2021-05-12 13:02:48 +01:00
claincly
2fc7b9c79b Move misplaced RTSP doc.
#minor-release

PiperOrigin-RevId: 373175041
2021-05-12 13:02:36 +01:00
claincly
373855b30c Add dev guide for RTSP.
#minor-release

PiperOrigin-RevId: 373173075
2021-05-12 13:02:30 +01:00
kim-vde
ef61fa5244 Merge pull request #8894 from cdongieux:fix/issue-8847
PiperOrigin-RevId: 373128118
2021-05-12 13:01:18 +01:00
claincly
0ea6c8998d Enable reading interleaved message in RtspMessageChannel.
RTSP interleaving enables RTP packets to be sent using RTSP's TCP connection.
The interleaving RTSP messages contain binary data only and always start with a
'$'. Normal RTSP messages contain line breaks (CRLFs) that indicate complete
lines.

#minor-release

PiperOrigin-RevId: 372990181
2021-05-10 23:50:18 +01:00
olly
923ba5138b Include RTSP module in gradle project
#minor-release

PiperOrigin-RevId: 372981022
2021-05-10 23:50:13 +01:00
olly
a7919a87f6 Minor guide cleanup for 2.14
#minor-release

PiperOrigin-RevId: 372980349
2021-05-10 23:50:08 +01:00
tonihei
d55c68807e Remove reference to deprecated Player.EventListener.
PiperOrigin-RevId: 372925409
2021-05-10 23:49:46 +01:00
olly
eb195eff36 Fix Javadoc references to deprecated EventListener
#minor-release

PiperOrigin-RevId: 372919342
2021-05-10 23:49:20 +01:00
olly
2ff4e5a657 Clean up RtspMediaSource.Factory
- Don't deprecate methods not deprecated in the base class and that
  could one day be useful.
- Better document deprecation of other methods.

#minor-release

PiperOrigin-RevId: 372919080
2021-05-10 23:49:15 +01:00
olly
90fc24c900 Bump version to 2.14.0 and tidy release notes
PiperOrigin-RevId: 372910834
2021-05-10 23:49:01 +01:00
ibaker
207825fbec Swallow exceptions in TestContentProvider when writing to a pipe fails
The existing code results in flaky tests, where sometimes the write
fails (with "EPIPE (broken pipe)") and the exception propagates out
and causes the test to never complete and time out.

Swallowing the exception resolves this flakiness.

#minor-release

PiperOrigin-RevId: 372909415
2021-05-10 23:47:52 +01:00
kimvde
2145261dda Deprecate ExoPlayer.Builder.
Apps should migrate from ExoPlayerImpl to SimpleExoPlayer.

#minor-release

PiperOrigin-RevId: 372562923
2021-05-10 23:47:44 +01:00
samrobinson
e295a15d2d Add javadoc to the MediaMetadata setters.
#minor-release

PiperOrigin-RevId: 372549185
2021-05-10 23:47:37 +01:00
samrobinson
1c8f91c130 Rename MediaMetadata trackTitle and trackArtist to title and artist.
#minor-release

PiperOrigin-RevId: 372537414
2021-05-07 14:59:09 +01:00
samrobinson
07cd8d101d Add fields to MediaMetadata requested by MediaAPIs
#minor-release

PiperOrigin-RevId: 372448985
2021-05-07 11:00:53 +01:00
bachinger
31897af14b Avoid media item transitions for auto discontinuities when ads involved
#minor-release

PiperOrigin-RevId: 372433555
2021-05-07 11:00:23 +01:00
samrobinson
c97956ea29 Use getters in Rating subclasses rather than direct field access.
#minor-release

PiperOrigin-RevId: 372368685
2021-05-07 10:59:51 +01:00
gyumin
3be50b26a0 Revise javadoc for Rating classes
PiperOrigin-RevId: 371625281
2021-05-07 10:59:05 +01:00
jaewan
54440261b0 Move Rating class to library-common
Rating class should be in the same module as MediaMetadata.

Tested:
  $ ./gradlew --stacktrace :exo-library-common:tDUT
  $ ./gradlew --stacktrace :media2-session:tDUT
  $ ./gradlew --stacktrace :media2-session-vct-current:cAT
PiperOrigin-RevId: 370902917
2021-05-07 10:52:40 +01:00
tonihei
309fd20a11 Clarify timebase of media times in MediaLoadData.
Also fix unncessary adjustment done in ClippingMediaSource.

#minor-release

PiperOrigin-RevId: 372080724
2021-05-06 13:46:31 +01:00
olly
bfcf8736cd Use correct Log class
#minor-release

PiperOrigin-RevId: 372314890
2021-05-06 13:44:28 +01:00
tonihei
1a06f3c855 Add missing isPlaceholder forwarding in SinglePeriodAdTimeline
Also make future similar issues less likely by adding isPlaceholder
to the set method of Period (in case forwarding Timeline
implementations use this instead of just updating values selectively)

#minor-release

PiperOrigin-RevId: 372138523
2021-05-06 13:43:47 +01:00
samrobinson
734e1abb99 Update retrieving-metadata on ExoPlayer.dev
#minor-release

PiperOrigin-RevId: 371939159
2021-05-04 18:46:46 +01:00