- 25 Jan, 2022 25 commits
-
-
This was resolved in https://github.com/google/ExoPlayer/commit/081700f72b2a43e1e0d01a0130cf283c7d59b9bc where the Video/AudioSamplePipeline call this method before calling the FallbackListener. PiperOrigin-RevId: 423284258
hschlueter committed -
Issue: google/ExoPlayer#9619 (and a few other GH issues related to invalid RTP-Info header) PiperOrigin-RevId: 423283017
claincly committed -
Issue: google/ExoPlayer#9775 We got a few issues for this on GH already. Some RTSP servers do not provide track timing in PLAY responses, or the timings are invalid. Missing timing means the RTSP stream is not seekable. Added method to 1. Update the timeline that seek is not possible 2. Report read discontinuity so that playback can start from the beginning. PiperOrigin-RevId: 423281439
claincly committed -
If the output sample MIME type is inferred from the input but is not supported by the muxer, we fallback to transcoding to a supported sample MIME type. The audio and video renderers need to make sure not to select the PassthroughSamplePipeline for this case. Which sample MIME type to choose is decided by the EncoderFactory. PiperOrigin-RevId: 423272812
hschlueter committed -
To avoid the `MediaPeriodQueue`to discard the reading period, we can set the next ad of an ad group early and then (possibly) only change it's duration once we receive the actual duration. This way we avoid a rebuffering as a result of the reading period being discarded. The change also takes care to properly set ad break and their durations when we join the live stream at the moment when an ad is playing. PiperOrigin-RevId: 423163467
bachinger committed -
We currently only end sessions on Timeline updates if the associated media is no longer in the playlist. But we should also end all sessions that are finished as a result of the timeline update (similar to how this is done for discontinuities). This issue was introduced by https://github.com/google/ExoPlayer/commit/394ab7bcfd53bc8ffb8d2e37a5aeb71fef04d13c PiperOrigin-RevId: 423075855
tonihei committed -
Links should use []() instead of ()[]. PiperOrigin-RevId: 423073748
tonihei committed -
We currently don't check which session is causing a network transfer (it could be a preloaded item in a playlist). To clearly associate network transfer data with sessions, we need to keep track of transferred bytes and transfer time per session. PiperOrigin-RevId: 422867845
tonihei committed -
We may fall back to a different sample MIME type because a) the sample MIME type inferred from the input is not supported by the muxer or b) no encoders are available for the the requested sample MIME type. PiperOrigin-RevId: 422849036
hschlueter committed -
With this change, the MediaCodecAudioRenderer configures the MediaCodec to not downmix audio only if spatialization can be applied. This way, decoders who are downmixing by default are left doing so when spatialization cannot be applied. The renderer re-initializes the codec when spatialization properties change mid-playback. PiperOrigin-RevId: 422822952
christosts committed -
TransformationRequest is otherwise immutable, so if we modify the transformationMatrix in place (done before this cl) this may cause confusing behaviour for apps when they reuse a TransformationRequest. PiperOrigin-RevId: 422822916
hschlueter committed -
Currently, we keep the values for dropped/played frames, audio underruns and current formats from the last session, causing double reporting of counters and wrong track change reasons for formats. All these values should be reset when the active session is finished, so that the new session can start from scratch. PiperOrigin-RevId: 422798406
tonihei committed -
Currently, we always end the current session if onSessionFinished is called. However, the finished session may not be the active one (for example when discarding prebuffered items in a playlist). To make this code more robust, we can save the active session id explicitly and only end this session. PiperOrigin-RevId: 422788542
tonihei committed -
After implementing fallback, it won't always be possible to differentiate between muxer and encoder as the cause of an output format not being supported. PiperOrigin-RevId: 422780443
hschlueter committed -
This change adds more standard metadata fields to Cast metadata including the artwork URL that makes the cast device show the artwork in the Cast route dialog (https://screenshot.googleplex.com/uj4n4Jqd7it9bob) and the Cast device. This change also discriminates between media with an audio MIME type and others. For audio MIME type the Cast metadata is set to MEDIA_TYPE_MUSIC_TRACK which changes the layout and shows artwork and additional audio meta data to be displayed (https://screenshot.googleplex.com/ASy3KDcsTdJDM2T). Issue: google/ExoPlayer#9663 PiperOrigin-RevId: 422589957
bachinger committed -
PiperOrigin-RevId: 422585277
claincly committed -
PiperOrigin-RevId: 422550627
claincly committed -
This change enables the ImaServerSideAdInsertionMediaSource for multi-period content. The global ad playback state is split into pieces for each period and the window and period durations are calculated accordingly in the ServerSideAdInsertionTimeline. For multi-period live content (DASH), the ad playback state is not set with this change. This is deferred to a follow up CL. Splitting is very tricky. For each timeline update the windowStartTimeUs may vary for some milliseconds relative to the start of the period.positionInWindowUs. This requires to either introduce some fuzzy logic or to choose a different approach than for multi-period VOD. Because mistakes within the playback states of subsequent moving live windows produces crashes, it seems sensible to defer this for now and keep this change in a separate future CL (unblock further work, easy to rollback). In this state, live DASH stream are working and the ad overlay is placed over the player correctly bu the SDK. However, ads are not reported by the position discontinuity event. Similarly, the player.isPlayingAd() does never returns true when a ad period is playing. PiperOrigin-RevId: 422539770
bachinger committed -
PiperOrigin-RevId: 422515892
andrewlewis committed -
This CL implements fixing the input format to the encoder spec. Fixed parameters include: - MIME type - Profile & level - Resolution - frame rate, and - bitrate PiperOrigin-RevId: 422513738
claincly committed -
By making AllocationNode fields non-final PiperOrigin-RevId: 422403816
aquilescanta committed -
PiperOrigin-RevId: 422392959
huangdarwin committed -
Rotation, translation, and scale tests on a normal video. PiperOrigin-RevId: 422383176
huangdarwin committed -
The MediaMetricsListener currently just looks at the mime type and doesn't use the inference based on the URI if no mime type is set. Also change default type to OTHER to avoid classifying streams from URLs without clear file extension as progressive. PiperOrigin-RevId: 422373381
tonihei committed -
PiperOrigin-RevId: 422349626
andrewlewis committed
-
- 17 Jan, 2022 11 commits
-
-
Adaptive video and audio selections will be limited to formats with the same level of DecoderSupport and HardwareAccelatationSupport, unless specifically allowed by new flags. If different levels of decoder support are available, prefer primary over fallback decoders and hardware-accelerated over software decoders (in this order). For video, also prefer more efficient codecs, if both are supported by hardware-accelerated primary decoders. Issue: google/ExoPlayer#4835 Issue: google/ExoPlayer#9565 PiperOrigin-RevId: 422345048
tonihei committed -
PiperOrigin-RevId: 422333929
hschlueter committed -
PiperOrigin-RevId: 422325859
hschlueter committed -
The naked URL is not hyperlinked by the javadoc compiler, meaning a user is forced to awkwardly copy it into the address bar of their browser: https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/ext/ima/ImaAdsLoader.html #minor-release PiperOrigin-RevId: 422320571
ibaker committed -
This change moves the video track selection to the generic selection method introcuced for audio and text. This ensures we can apply the same criteria for fixed and adaptive video track selections. Implicitly, this reorders the preferences for adaptive tracks to give non-quality preferences (like preferred MIME type or preferred role flags) a higher priority than number of tracks in the selection. Issue: google/ExoPlayer#9519 PiperOrigin-RevId: 422310902
tonihei committed -
This does currently only happen by chance in replaceStream (called from enable) if the stream previosly played read until C.TIME_END_OF_SOURCE. enable already makes all changes done in resetPosition (except resetting the reading position), so it's less error-prone and makes the intention clearer if the same code is called from both enable and resetPosition. The effect of this bug was quite limited because the numerical value of readingPositionUs was only relevant for periods with changing durations and server-side inserted ads. PiperOrigin-RevId: 422300690
tonihei committed -
PiperOrigin-RevId: 421855453
olly committed -
Issue: google/ExoPlayer#9856 PiperOrigin-RevId: 421842579
bachinger committed -
The app will be notified about fallback using a callback on Transformer.Listener. Fallback may be applied separately for the audio and video options, so an intermediate internal FallbackListener is needed to accumulate and merge the track-specific changes to the TransformationRequest. PiperOrigin-RevId: 421839991
hschlueter committed -
To be more readable and consistent with Transformer GL. Tested by running gl-demo with no crash. PiperOrigin-RevId: 421815519
huangdarwin committed -
We currently run (almost) the same code for all track types. De-duplicate this by using a single method that takes functional interfaces for track-type dependent logic. This has the benefit that all track-type dependent logic is contained within their subclasses and the generic logic doesn't need to make any assumption about the eligibility of tracks for selection or adaptation, and doesn't need to access Parameters. Make this change for audio and text only for now. Video can be updated in a subsequent change. PiperOrigin-RevId: 421811411
tonihei committed
-
- 14 Jan, 2022 4 commits
-
-
Simplifying and clarifying variables, and adding comments. Tested by confirming demo-gl and demo-transformer both correctly display videos PiperOrigin-RevId: 421792079
huangdarwin committed -
This value is the default used by widevine_test at proxy.uat.widevine.com, but it's not easy to find that info so it's clearer to document it explicitly here for consistency with the "policy tests" section below where all the URLs contain a video_id parameter. Issue: google/ExoPlayer#9852 PiperOrigin-RevId: 421781663
ibaker committed -
This string is case-sensitive. PiperOrigin-RevId: 421781437
ibaker committed -
The existing wording would be correct if prefixed with "Returns false if [...]", but it seems confusing to a document a boolean method in terms the condition it returns false - so I reworded it in terms of when it returns true. #minor-release PiperOrigin-RevId: 421682584
ibaker committed
-