Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Impr/doris 1730 migrate exo 2.18.4 #77

Merged
merged 2,085 commits into from
Mar 21, 2023
This pull request is big! We’re only showing the most recent 250 commits.

Commits on Oct 6, 2022

  1. Provide access to original media timestamps in AudioSink.

    * Add `setOutputStreamOffsetUs(long)` method in `AudioSink`.
    * Add private methods `setOutputStreamOffsetUs(long)` method in `MediaCodecRenderer` and `DecoderAudioRenderer`.
    * Add protected method `onOutputStreamOffsetUs(long)` method in `MediaCodecRenderer`, in which:
      * `MediaCodecRenderer` itself will be no-op for this method.
      * `MediaCodecAudioRenderer` will propagate this value to its `audioSink`.
    * Add logics in `DecoderAudioRenderer` to calculate `outputStreamOffsetUs`.
    
    PiperOrigin-RevId: 479265429
    (cherry picked from commit 4c73241)
    tianyif authored and microkatz committed Oct 6, 2022
    Configuration menu
    Copy the full SHA
    d2f7fb1 View commit details
    Browse the repository at this point in the history
  2. Add a FrameProcessor flag to drop the processed frame

    This mode is supported by using `C.TIME_UNSET` (which is a negative value). The
    new logic decouples the value of `C.TIME_UNSET` and the frame dropping
    behaviour.
    
    PiperOrigin-RevId: 479368880
    (cherry picked from commit ccab9fb)
    claincly authored and microkatz committed Oct 6, 2022
    Configuration menu
    Copy the full SHA
    8081804 View commit details
    Browse the repository at this point in the history

Commits on Oct 7, 2022

  1. Document the allowed values of TsPayloadReader.Flags IntDef

    PiperOrigin-RevId: 479569806
    (cherry picked from commit 7c68b8d)
    icbaker authored and microkatz committed Oct 7, 2022
    Configuration menu
    Copy the full SHA
    ee9bff0 View commit details
    Browse the repository at this point in the history
  2. HDR: Disable tone mapping on unsupported pixel build ID.

    Also, update tests to allow AnyOf error codes, and no longer check exception messages, which caused quite a bit of churn.
    
    PiperOrigin-RevId: 479570861
    (cherry picked from commit faa796d)
    dway123 authored and microkatz committed Oct 7, 2022
    Configuration menu
    Copy the full SHA
    15e316d View commit details
    Browse the repository at this point in the history
  3. Bump dexmaker version

    PiperOrigin-RevId: 479579252
    (cherry picked from commit a6b9772)
    christosts authored and microkatz committed Oct 7, 2022
    Configuration menu
    Copy the full SHA
    bd616e1 View commit details
    Browse the repository at this point in the history
  4. Remove late frame dropping in FrameProcessor

    Currently, a frame is dropped if it's requested release time is in the past.
    This mode was added to support previewing. However, in normal ExoPlayer
    playback, slightly late frames (<30ms late) are also rendered. On MediaCodec
    side, this means calling `releaseOutputBuffer` with a release time in the
    past.
    
    PiperOrigin-RevId: 479615291
    (cherry picked from commit 2188685)
    claincly authored and microkatz committed Oct 7, 2022
    Configuration menu
    Copy the full SHA
    efb7bf2 View commit details
    Browse the repository at this point in the history

Commits on Oct 10, 2022

  1. Adjust track selection with Dolby Vision if display does not support

    If the sample type is Dolby Vision and the display does not support Dolby Vision, then the capabilities DecoderSupport flag is set to DECODER_SUPPORT_FALLBACK_MIMETYPE. This denotes that the renderer will use a decoder for a fallback mimetype if possible. This alters track selection as tracks with DecoderSupport DECODER_SUPPORT_PRIMARY are preferred.
    
    UnitTests included
    -DefaultTrackSelector test that checks track selection reordering with DECODER_SUPPORT_FALLBACK_MIMETYPE
    -MediaCodecVideoRenderer test that checks setting of DecoderSupport flag based on Display's Dolby Vision support
    
    Issue: google#8944
    PiperOrigin-RevId: 480040876
    (cherry picked from commit a366590)
    microkatz committed Oct 10, 2022
    Configuration menu
    Copy the full SHA
    e8a5ac9 View commit details
    Browse the repository at this point in the history
  2. Treat NO_VALUE as zero when adding up total required bitrate

    We currently use the literal -1 (=NO_VALUE) when adding up the
    total. Tracks without known bitrate can be ignored in the
    calculation, but we should use an explicit value of 0.
    
    #minor-release
    
    Issue: google#10664
    PiperOrigin-RevId: 480048126
    (cherry picked from commit af19e0e)
    tonihei authored and microkatz committed Oct 10, 2022
    Configuration menu
    Copy the full SHA
    dc80523 View commit details
    Browse the repository at this point in the history

Commits on Oct 11, 2022

  1. Add local file picker to ConfigurationActivity

    PiperOrigin-RevId: 480349627
    (cherry picked from commit 225d0dc)
    Googler authored and microkatz committed Oct 11, 2022
    Configuration menu
    Copy the full SHA
    5d8daba View commit details
    Browse the repository at this point in the history
  2. Demo: Read long values from trim slider.

    Before, slider values were read as `floor()`'ed `longValue()`s, so that trimming to
    intervals less than one second would be interpreted as a request for a zero-
    duration trim.
    
    Also, rename `radiusRange` references here to `trimRange`, since this is not a
    radius range.
    
    PiperOrigin-RevId: 480401556
    (cherry picked from commit 6c59f9e)
    dway123 authored and microkatz committed Oct 11, 2022
    Configuration menu
    Copy the full SHA
    abefef9 View commit details
    Browse the repository at this point in the history

Commits on Oct 12, 2022

  1. Demo: Hide player controls by default.

    Player controls are somewhat distracting when showing the difference between the
    input and output video, as they obscure and darken the video players.
    
    PiperOrigin-RevId: 480597804
    (cherry picked from commit 91a61ce)
    dway123 authored and microkatz committed Oct 12, 2022
    Configuration menu
    Copy the full SHA
    2244549 View commit details
    Browse the repository at this point in the history
  2. Demo: Shorten trim range from 60 seconds to 10 seconds.

    Most demo videos aren't very long, and the default demo video is only 10 seconds.
    
    Shorten the maximum trim duration to 10 seconds, to demonstrate transformer functionality more easily, and allow this to be used more easily when trimming short sections of a longer video (ex. to make test clips)
    
    PiperOrigin-RevId: 480602037
    (cherry picked from commit 3142a21)
    dway123 authored and microkatz committed Oct 12, 2022
    Configuration menu
    Copy the full SHA
    4198dde View commit details
    Browse the repository at this point in the history
  3. Add Cea608DecoderTest

    When debugging and fixing Issue: google#10666 I wanted to write a regression
    test, but needed to add a test first... This is just a small bit of
    coverage to start with. It checks the field/channel filtering works
    correctly, but doesn't check any styling info. It also doesn't test
    'pop on' subtitles (i.e. when the subtitle isn't shown until a 'end of
    subtitle' signal is received).
    
    PiperOrigin-RevId: 480644568
    (cherry picked from commit 6052212)
    icbaker authored and microkatz committed Oct 12, 2022
    Configuration menu
    Copy the full SHA
    3aca9bc View commit details
    Browse the repository at this point in the history

Commits on Oct 13, 2022

  1. Remove supportsSampleMimeType from Muxer.Factory

    - This method is redundant with getSupportedSampleMimeTypes().
    - This is to prepare the Muxer class to become public.
    
    PiperOrigin-RevId: 480840902
    (cherry picked from commit 8962f5a)
    kim-vde authored and microkatz committed Oct 13, 2022
    Configuration menu
    Copy the full SHA
    267725c View commit details
    Browse the repository at this point in the history
  2. Fix blank toast in Transformer Demo

    PiperOrigin-RevId: 480847967
    (cherry picked from commit 446c994)
    Googler authored and microkatz committed Oct 13, 2022
    Configuration menu
    Copy the full SHA
    a8921b7 View commit details
    Browse the repository at this point in the history
  3. Migrate media constants from androidx.media.util.MediaConstants

    Adds root extras and metadata extras to MockMediaLibraryService and MockMediaBrowserCompatService and completed test cases for asserting
    interoperability with a media1 or Media3 browser.
    
    PiperOrigin-RevId: 480854842
    (cherry picked from commit f95406e)
    marcbaechinger authored and microkatz committed Oct 13, 2022
    Configuration menu
    Copy the full SHA
    1bea506 View commit details
    Browse the repository at this point in the history
  4. Ensure sessions without MediaPeriodId are ended after seek to new item

    We already have logic to end all session except the current one if the
    current one doesn't have a MediaPeriodId yet. This is assuming that this
    only happens after a seek on the app side where the player doesn't have
    detailled knowledge about the MediaPeriodIds yet.
    
    Currently this logic isn't triggered if the window we are coming from
    doesn't have its MediaPeriodId either as we run into another check that
    keeps sessions around until we have a valid windowSequenceNumber.
    
    Swapping both conditions fixes this case without breaking any of the
    other known transition scenarios.
    
    Issue: androidx/media#180
    PiperOrigin-RevId: 480866465
    (cherry picked from commit 6070d91)
    tonihei authored and microkatz committed Oct 13, 2022
    Configuration menu
    Copy the full SHA
    b362736 View commit details
    Browse the repository at this point in the history

Commits on Oct 14, 2022

  1. Mark effectively-final PlayerControlView fields as actually final

    This means the null checker can be more sure that these fields don't
    get reassigned between a null-check and a usage.
    
    PiperOrigin-RevId: 481142004
    (cherry picked from commit 248ee46)
    icbaker authored and microkatz committed Oct 14, 2022
    Configuration menu
    Copy the full SHA
    8ffdc3a View commit details
    Browse the repository at this point in the history
  2. Effect: Remove unused private int ouptutTexId in pixel tests.

    PiperOrigin-RevId: 481143798
    (cherry picked from commit 026699b)
    dway123 authored and microkatz committed Oct 14, 2022
    Configuration menu
    Copy the full SHA
    d9c60dc View commit details
    Browse the repository at this point in the history
  3. Fix the position of IntDef annotations on fields in the UI module

    PiperOrigin-RevId: 481150758
    (cherry picked from commit 871a5e6)
    icbaker authored and microkatz committed Oct 14, 2022
    Configuration menu
    Copy the full SHA
    12314ab View commit details
    Browse the repository at this point in the history
  4. Fix display settings window UI bug for foldable devices.

    PiperOrigin-RevId: 481215581
    (cherry picked from commit 6cdaf2c)
    Googler authored and microkatz committed Oct 14, 2022
    Configuration menu
    Copy the full SHA
    e3d0ee9 View commit details
    Browse the repository at this point in the history
  5. Use static import for Assertions in MCVR

    PiperOrigin-RevId: 481122795
    (cherry picked from commit 12f7174)
    claincly authored and microkatz committed Oct 14, 2022
    Configuration menu
    Copy the full SHA
    df15f9c View commit details
    Browse the repository at this point in the history

Commits on Oct 17, 2022

  1. Add copybara annotated import statement for special cases

    PiperOrigin-RevId: 481605567
    (cherry picked from commit fd315da)
    marcbaechinger authored and microkatz committed Oct 17, 2022
    Configuration menu
    Copy the full SHA
    fbc8019 View commit details
    Browse the repository at this point in the history
  2. Add manifest to make gradle build work

    PiperOrigin-RevId: 481606248
    (cherry picked from commit 325e973)
    marcbaechinger authored and microkatz committed Oct 17, 2022
    Configuration menu
    Copy the full SHA
    7cc3f11 View commit details
    Browse the repository at this point in the history

Commits on Oct 18, 2022

  1. Add DefaultMuxer forwarding to FrameworkMuxer

    - The naming DefaultMuxer is more consistent with the rest of
    Transformer codebase (e.g. DefaultEncoderFactory).
    - By hiding the implementation details of DefaultMuxer, the transition
    to in-app Muxer will be seamless for apps using DefaultMuxer.
    - The current plan is that DefaultMuxer will become the in-app muxer.
    
    PiperOrigin-RevId: 481838790
    (cherry picked from commit b4d7f06)
    kim-vde authored and microkatz committed Oct 18, 2022
    Configuration menu
    Copy the full SHA
    1c6cea8 View commit details
    Browse the repository at this point in the history
  2. Remove more references to overriding layouts from Player(Control)View

    In exoplayer2 this affects StyledPlayer(Control)View
    
    #minor-release
    
    PiperOrigin-RevId: 481878940
    (cherry picked from commit a5583c0)
    icbaker authored and microkatz committed Oct 18, 2022
    Configuration menu
    Copy the full SHA
    fb1c9de View commit details
    Browse the repository at this point in the history
  3. Fix parameter comment block.

    #cleanup
    
    PiperOrigin-RevId: 481882181
    (cherry picked from commit b6bd358)
    Samrobbo authored and microkatz committed Oct 18, 2022
    Configuration menu
    Copy the full SHA
    5de37d2 View commit details
    Browse the repository at this point in the history
  4. Remove deprecated setOutputMimeType

    This is to prepare Muxer to become public
    
    PiperOrigin-RevId: 481893842
    (cherry picked from commit bd9181e)
    kim-vde authored and microkatz committed Oct 18, 2022
    Configuration menu
    Copy the full SHA
    66d56be View commit details
    Browse the repository at this point in the history
  5. GL: Move loadAsset to GlProgram, where it's used.

    (Also, make some public methods private)
    
    PiperOrigin-RevId: 481912071
    (cherry picked from commit a404fde)
    dway123 authored and microkatz committed Oct 18, 2022
    Configuration menu
    Copy the full SHA
    66bae60 View commit details
    Browse the repository at this point in the history
  6. Ensure onMediaItemTransition is sent for repeats of the same item

    Currently, repeating the same item (via seekNext/Previous) implicitly
    results in a seek to the default position of the current item, which
    looks exactly the same as a direct seek. As a result, we don't send
    onMediaItemTransition as we would for every other seekNext/Previous
    call.
    
    This can be fixed by explicitly marking the repeat case in the internal
    BasePlayer/ExoPlayerImpl methods, so that the callback can be triggered.
    
    Issue: google#10667
    PiperOrigin-RevId: 481951788
    (cherry picked from commit 76ce0cc)
    tonihei authored and microkatz committed Oct 18, 2022
    Configuration menu
    Copy the full SHA
    ed9bc9a View commit details
    Browse the repository at this point in the history
  7. Test: Update MatrixProcessorPixelTest to use input width and height.

    Before, they used `width` and `height`, which was inconsistent with other pixel tests, and less descriptive.
    
    Refactoring change only. No functional change intended.
    
    PiperOrigin-RevId: 481970243
    (cherry picked from commit 620d8c9)
    dway123 authored and microkatz committed Oct 18, 2022
    Configuration menu
    Copy the full SHA
    e54127c View commit details
    Browse the repository at this point in the history

Commits on Oct 19, 2022

  1. Remove ForwardingPlayer special case from PlayerControlView.setPlayer

    This was originally added in google@4fd7d77, but it hasn't done anything
    since google@98ee159 (when the instanceof ExoPlayer check was removed).
    
    PiperOrigin-RevId: 482161662
    (cherry picked from commit 7d5f1a2)
    icbaker authored and microkatz committed Oct 19, 2022
    Configuration menu
    Copy the full SHA
    f56d714 View commit details
    Browse the repository at this point in the history
  2. Effect: Remove unnecessary "this" qualifier

    `transformationMatrix` is not ambiguous, as there's no other local
    transformationMatrix variable nearby.
    
    PiperOrigin-RevId: 482184602
    (cherry picked from commit c698ec5)
    dway123 authored and microkatz committed Oct 19, 2022
    Configuration menu
    Copy the full SHA
    5c0175e View commit details
    Browse the repository at this point in the history
  3. Make Muxer public

    The reason for making the Muxer public is that we want to add an option
    to disable or configure the timer that will throw when the muxer doesn't
    receive any data for a given period of time.
    
    PiperOrigin-RevId: 482199360
    (cherry picked from commit d213b93)
    kim-vde authored and microkatz committed Oct 19, 2022
    Configuration menu
    Copy the full SHA
    f42d18f View commit details
    Browse the repository at this point in the history
  4. HDR: Support RGBA_1010102 in GlUtil as a parameter.

    Make it easier to support use of RGBA_101012 rather than RGBA_8888 for EGL
    contexts, displays, and surfaces.
    
    This tangentially supports adding HDR tests, by slightly simplifying the color
    selection logic we'd have to add in HDR tests.
    
    PiperOrigin-RevId: 482219428
    (cherry picked from commit 9e1adee)
    dway123 authored and microkatz committed Oct 19, 2022
    Configuration menu
    Copy the full SHA
    0b0101e View commit details
    Browse the repository at this point in the history
  5. Corrected ordering of javadoc params

    PiperOrigin-RevId: 482231370
    (cherry picked from commit 8977220)
    Googler authored and microkatz committed Oct 19, 2022
    Configuration menu
    Copy the full SHA
    1b6bef0 View commit details
    Browse the repository at this point in the history
  6. Map lib-effect from androidx to exoplayer2

    PiperOrigin-RevId: 482179761
    (cherry picked from commit 28c4be2)
    marcbaechinger authored and microkatz committed Oct 19, 2022
    Configuration menu
    Copy the full SHA
    6f94b8e View commit details
    Browse the repository at this point in the history

Commits on Oct 20, 2022

  1. Merge pull request google#10578 from thucngv:release-v2

    PiperOrigin-RevId: 481115402
    (cherry picked from commit 9861f88)
    marcbaechinger authored and microkatz committed Oct 20, 2022
    Configuration menu
    Copy the full SHA
    e13bbbc View commit details
    Browse the repository at this point in the history
  2. Merge pull request google#183 from jasper-apps:bugfix/make-download-n…

    …otification-appear-immediately
    
    PiperOrigin-RevId: 482165983
    (cherry picked from commit 405455b)
    marcbaechinger authored and microkatz committed Oct 20, 2022
    Configuration menu
    Copy the full SHA
    fc32f0d View commit details
    Browse the repository at this point in the history
  3. Remove muxerFactory dependency on playerListener

    This listener will need to be passed to the MuxerWrapper to throw when
    the Transformer is stuck.
    
    PiperOrigin-RevId: 482433552
    (cherry picked from commit e3f2842)
    kim-vde authored and microkatz committed Oct 20, 2022
    Configuration menu
    Copy the full SHA
    dc8098a View commit details
    Browse the repository at this point in the history
  4. Change areSizeAndRateSupported to use PerfomancePoint.covers

    PiperOrigin-RevId: 482461219
    (cherry picked from commit 0eb30ea)
    microkatz committed Oct 20, 2022
    Configuration menu
    Copy the full SHA
    b97a959 View commit details
    Browse the repository at this point in the history

Commits on Oct 21, 2022

  1. Add DAI specific methods to AdPlaybackState

    PiperOrigin-RevId: 482755468
    (cherry picked from commit a8e6894)
    marcbaechinger authored and microkatz committed Oct 21, 2022
    Configuration menu
    Copy the full SHA
    b20752f View commit details
    Browse the repository at this point in the history

Commits on Oct 24, 2022

  1. Fix some incorrect comments in Cea608DecoderTest

    Also used all-caps consistently
    
    PiperOrigin-RevId: 483317405
    (cherry picked from commit 6dcb9aa)
    icbaker authored and microkatz committed Oct 24, 2022
    Configuration menu
    Copy the full SHA
    84375a4 View commit details
    Browse the repository at this point in the history
  2. Merge pull request google#10618 from vishnuchilakala:fix/do_not_send_…

    …content_complete_if_midroll_skipped
    
    PiperOrigin-RevId: 482481703
    (cherry picked from commit a413b47)
    rohitjoins authored and microkatz committed Oct 24, 2022
    Configuration menu
    Copy the full SHA
    d2c4f74 View commit details
    Browse the repository at this point in the history
  3. Merge pull request google#162 from ittiam-systems:rtp-mp4a-latm

    PiperOrigin-RevId: 482490230
    (cherry picked from commit fd2ba37)
    rohitjoins authored and microkatz committed Oct 24, 2022
    Configuration menu
    Copy the full SHA
    23b070d View commit details
    Browse the repository at this point in the history
  4. Add CanIgnoreReturnValue to AudioProcessor#configure + implementations

    Although it can be useful to check the output format, it's not required or needed.
    
    For some AudioProcessor implementations, it is stated/obvious that
    the output format will match the input, in which case there is no
    a need to check the return value.
    
    #cleanup
    
    PiperOrigin-RevId: 483403679
    (cherry picked from commit a7bfa12)
    Samrobbo authored and microkatz committed Oct 24, 2022
    Configuration menu
    Copy the full SHA
    154cd42 View commit details
    Browse the repository at this point in the history
  5. Use int for an unsigned byte value in Cea608Decoder

    This is a no-op, but it's more 'correct' because it avoids any potential
    sign mix-ups that come from storing an unsigned byte (with a
    potentially set MSB) in a signed java byte variable.
    
    PiperOrigin-RevId: 483409798
    (cherry picked from commit 3d0f43a)
    icbaker authored and microkatz committed Oct 24, 2022
    Configuration menu
    Copy the full SHA
    0f5245f View commit details
    Browse the repository at this point in the history

Commits on Oct 25, 2022

  1. Clarify sideloaded subtitle example

    #minor-release
    
    PiperOrigin-RevId: 483633564
    (cherry picked from commit eaf1f21)
    icbaker authored and microkatz committed Oct 25, 2022
    Configuration menu
    Copy the full SHA
    f7f371f View commit details
    Browse the repository at this point in the history
  2. Add GL utility methods to get 4x4 identity and set identity

    PiperOrigin-RevId: 483671580
    (cherry picked from commit f5ad4e0)
    claincly authored and microkatz committed Oct 25, 2022
    Configuration menu
    Copy the full SHA
    053e14a View commit details
    Browse the repository at this point in the history
  3. Move AudioProcessor to common.

    PiperOrigin-RevId: 483699606
    (cherry picked from commit dda17db)
    Samrobbo authored and microkatz committed Oct 25, 2022
    Configuration menu
    Copy the full SHA
    8debe79 View commit details
    Browse the repository at this point in the history
  4. Move DefaultAudioSink.AudioProcessorChain to AudioProcessorChain

    Split inner interface into separate file, which will go in common
    module. The old interface will be deprecated and extends the new.
    
    #cleanup
    
    PiperOrigin-RevId: 483732226
    (cherry picked from commit ad52b68)
    Samrobbo authored and microkatz committed Oct 25, 2022
    Configuration menu
    Copy the full SHA
    fe9bad1 View commit details
    Browse the repository at this point in the history

Commits on Oct 26, 2022

  1. Fix Cea608Decoder handling of service switch commands in field 2

    From ANSI-CTA-608-E R-2014 section 8.4:
    > When closed captioning is used on line 21, field 2, it shall conform
    > to all of the applicable specifications and recommended practices as
    > defined for field 1 services with the following differences:
    > 1. The non-printing character of the miscellaneous control-character
    >    pairs that fall in the range of 0x14, 0x20 to 0x14, 0x2F in field 1,
    >    shall be replaced with 0x15, 0x20 to 0x15, 0x2F when used in field
    >    2.
    > 2. The non-printing character of the miscellaneous control-character
    >    pairs that fall in the range of 0x1C, 0x20 to 0x1C, 0x2F in field
    >    1, shall be replaced with 0x1D, 0x20 to 0x1D, 0x2F when used in
    >    field 2.
    
    This basically means that `cc1=0x15` in field 2 should be interpreted as
    `cc1=0x14` in field 1, and same for `0x1D -> 0x1C`.
    
    The `isMiscCode`  method above already handles this by ignoring the LSB
    (the only difference between `0x14` and `0x15`, and `0x1C` and `0x1D`)
    by AND-ing with `0xF6` instead of `0xF7`. This change uses the same
    trick in `isServiceSwitchCommand`.
    
    Issue: google#10666
    #minor-release
    PiperOrigin-RevId: 483927506
    (cherry picked from commit 7c6d492)
    icbaker authored and microkatz committed Oct 26, 2022
    Configuration menu
    Copy the full SHA
    6b3bec8 View commit details
    Browse the repository at this point in the history
  2. Mute input video player in transformer demo

    PiperOrigin-RevId: 483969411
    (cherry picked from commit 8181b3c)
    Googler authored and microkatz committed Oct 26, 2022
    Configuration menu
    Copy the full SHA
    81b3e40 View commit details
    Browse the repository at this point in the history
  3. Add AudioProcessor.AudioFormat equals method.

    PiperOrigin-RevId: 483983486
    (cherry picked from commit c9585d0)
    Samrobbo authored and microkatz committed Oct 26, 2022
    Configuration menu
    Copy the full SHA
    861cd9a View commit details
    Browse the repository at this point in the history

Commits on Oct 27, 2022

  1. Add muxer timer to detect when generating an output sample is too slow

    This allows to throw when the Transformer is stuck or is too slow.
    
    PiperOrigin-RevId: 484179037
    (cherry picked from commit 376ee77)
    kim-vde authored and microkatz committed Oct 27, 2022
    Configuration menu
    Copy the full SHA
    94f3b1b View commit details
    Browse the repository at this point in the history
  2. Make adding ad live breaks more robust

    This change makes adding ad events in live streams more robust by allowing ad
    groups to grow in number of ads if more ad events are received than initially
    announced by the SDK.
    
    With the IMA prefetch feature, an AdPod can grow in size in certain conditions
    like from initially 2 ads to 4 ads being part of the ad group. With this change,
    if an additional ad event arrives while the ad group is still being played,
    the ad group is expanded. If the event arrives late and the ad group is already
    completed, a new group is created for the remaining ads.
    
    This also covers the case where we join the live stream while an ad is being
    played and we missed at least one LOADED event from the SDK. Ads of the group
    before the first LOADED event are ignored in such a case.
    
    PiperOrigin-RevId: 484214760
    (cherry picked from commit 136addf)
    marcbaechinger authored and microkatz committed Oct 27, 2022
    Configuration menu
    Copy the full SHA
    f06e8ee View commit details
    Browse the repository at this point in the history
  3. Add test for muxer watchdog timer

    PiperOrigin-RevId: 484298261
    (cherry picked from commit 42057cc)
    kim-vde authored and microkatz committed Oct 27, 2022
    Configuration menu
    Copy the full SHA
    d652020 View commit details
    Browse the repository at this point in the history

Commits on Oct 28, 2022

  1. Upgrade dackka and fix some generation errors

    #minor-release
    
    PiperOrigin-RevId: 484483080
    (cherry picked from commit fc1eca1)
    andrewlewis authored and microkatz committed Oct 28, 2022
    Configuration menu
    Copy the full SHA
    c02d477 View commit details
    Browse the repository at this point in the history
  2. Disable the muxer watchdog if all tracks have ended.

    PiperOrigin-RevId: 484512661
    (cherry picked from commit 2390322)
    Samrobbo authored and microkatz committed Oct 28, 2022
    Configuration menu
    Copy the full SHA
    a3de075 View commit details
    Browse the repository at this point in the history
  3. Bump appTargetSDKVersion to 33

    #minor-release
    
    PiperOrigin-RevId: 484514123
    (cherry picked from commit 1bbe7c1)
    marcbaechinger authored and microkatz committed Oct 28, 2022
    Configuration menu
    Copy the full SHA
    86ac8f5 View commit details
    Browse the repository at this point in the history

Commits on Oct 31, 2022

  1. Tighten the wording for sending a pull request.

    PiperOrigin-RevId: 485036120
    (cherry picked from commit 8030a49)
    rohitjoins authored and microkatz committed Oct 31, 2022
    Configuration menu
    Copy the full SHA
    375978b View commit details
    Browse the repository at this point in the history
  2. Disable failing tests of FlacExtractorSeekTest

    PiperOrigin-RevId: 485061783
    (cherry picked from commit 55b82ff)
    rohitjoins authored and microkatz committed Oct 31, 2022
    Configuration menu
    Copy the full SHA
    721487a View commit details
    Browse the repository at this point in the history
  3. Enfore minCompileSdk version when depending on ExoPlayer/Media3 libs

    If an app sets a compileSdkVersion that is lower than the one used to
    create AARs of its dependencies, the build process may produce invalid
    outputs, for example by stripping methods from the APK that are only
    called when the app is running on a new API version.
    
    To avoid this issue, we can enforce that the compileSdk of apps or
    libraries depending on ExoPlayer/Media3 is at least the same as the
    one we used for compilation when creating the AAR.
    
    Issue: google#10684
    PiperOrigin-RevId: 485100067
    (cherry picked from commit 23d39ca)
    tonihei authored and microkatz committed Oct 31, 2022
    Configuration menu
    Copy the full SHA
    e4d77f7 View commit details
    Browse the repository at this point in the history

Commits on Nov 1, 2022

  1. Removed move transformation for exoplayer2 audio package-info.java

    google@dda17db creation of audio/package-info.java introduced a copybara conflict with the exoplayer2/audio/package-info.java move transformation in copy.bara.sky. Solution was to remove original package-info-common-audio.java and the move transformation as google@dda17db now covers it.
    
    Tested with a copybara push to exoplayer github
    
    PiperOrigin-RevId: 485329674
    (cherry picked from commit 972e169)
    microkatz committed Nov 1, 2022
    Configuration menu
    Copy the full SHA
    7bfc645 View commit details
    Browse the repository at this point in the history
  2. HDR: Generalize Pixel 6 workaround to TP

    PiperOrigin-RevId: 485366659
    (cherry picked from commit 6de5d93)
    dway123 authored and microkatz committed Nov 1, 2022
    Configuration menu
    Copy the full SHA
    69112df View commit details
    Browse the repository at this point in the history
  3. Load bitmaps for MediaMetadataCompat and handle the metadata updates.

    * Add `Listener` in `MediaSession` with method `onNotificationRefreshRequired(MediaSession)`.
    * Add `MediaSessionService` as the listener of the `MediaSession` when `MediaSession` is added to `MediaSessionService`
    * Load bitmap when update metadata in `MediaSessionLegacyStub` and call `onNotificationRefreshRequired` when bitmap asynchronously arrives.
    
    PiperOrigin-RevId: 485376145
    (cherry picked from commit 624238c)
    tianyif authored and microkatz committed Nov 1, 2022
    Configuration menu
    Copy the full SHA
    61b1cfc View commit details
    Browse the repository at this point in the history
  4. Apply tone mapping workaround to Pixel Watch as well.

    Not sure what BUILD.ID the fix will first be applied on though.
    
    PiperOrigin-RevId: 485389618
    (cherry picked from commit 2ddd645)
    dway123 authored and microkatz committed Nov 1, 2022
    Configuration menu
    Copy the full SHA
    e48fe57 View commit details
    Browse the repository at this point in the history

Commits on Nov 2, 2022

  1. Fix Dackka/Metalava errors in the effects module

    Public methods may only refer to public types in their signature. This
    change ensures that by switching to a public supertype everywhere.
    
    PiperOrigin-RevId: 485568625
    (cherry picked from commit 3fdfe58)
    icbaker authored and microkatz committed Nov 2, 2022
    Configuration menu
    Copy the full SHA
    10d06dd View commit details
    Browse the repository at this point in the history

Commits on Nov 3, 2022

  1. Fix Dackka javadoc errors in protected methods

    If there's an @param javadoc tag in a supertype then all overrides
    of this method that don't also override the javadoc must use the same
    parameter name.
    
    PiperOrigin-RevId: 485857711
    (cherry picked from commit b8e5d70)
    icbaker authored and microkatz committed Nov 3, 2022
    Configuration menu
    Copy the full SHA
    b25e1e2 View commit details
    Browse the repository at this point in the history
  2. Add 'Player.getVideoSurfaceSize' that returns the size of the surface

    on which the video is rendered.
    
    Design Doc: go/aaos-mu-media-dd
    
    PiperOrigin-RevId: 485884772
    Googler authored and microkatz committed Nov 3, 2022
    Configuration menu
    Copy the full SHA
    dadf281 View commit details
    Browse the repository at this point in the history
  3. HDR Test: Add link to tested method.

    PiperOrigin-RevId: 485890141
    (cherry picked from commit bd4e58d)
    dway123 authored and microkatz committed Nov 3, 2022
    Configuration menu
    Copy the full SHA
    b949b6b View commit details
    Browse the repository at this point in the history
  4. Disable publishing block when media3 included in another build.

    From https://github.com/androidx/media/pull/127/files
    
    PiperOrigin-RevId: 485921271
    (cherry picked from commit 36a51ac)
    yschimke authored and microkatz committed Nov 3, 2022
    Configuration menu
    Copy the full SHA
    cc9823d View commit details
    Browse the repository at this point in the history

Commits on Nov 4, 2022

  1. Add @SuppressWarnings to unblock T SDK for <unknown commit>

    LSC: https://docs.google.com/document/d/16tpK6aXqN68PvTyvt4siM-m7f0NXi_8xEeitLDzr8xY/edit?usp=sharing
    
    TESTED=NA
    BEGIN_PUBLIC/END_PUBLIC
    PiperOrigin-RevId: 486180995
    
    (cherry picked from commit 88445d2)
    Googler authored and microkatz committed Nov 4, 2022
    Configuration menu
    Copy the full SHA
    fe47393 View commit details
    Browse the repository at this point in the history

Commits on Nov 7, 2022

  1. HDR: Update test FileUtil to handle null ColorInfo.

    PiperOrigin-RevId: 486706595
    (cherry picked from commit 0b53c93)
    dway123 authored and microkatz committed Nov 7, 2022
    Configuration menu
    Copy the full SHA
    9ad5650 View commit details
    Browse the repository at this point in the history
  2. HDR: Set decoder codec profile and level if available.

    This should be necessary to ensure decoders see fewer errors.
    
    Setting this resulted in removing native_dequeueOutputBuffer errors on OMX.MTK decoders for in-app tone mapping prototyping.
    
    PiperOrigin-RevId: 486715941
    (cherry picked from commit 0b7e5bb)
    dway123 authored and microkatz committed Nov 7, 2022
    Configuration menu
    Copy the full SHA
    0969819 View commit details
    Browse the repository at this point in the history
  3. Move muxer initialization off application thread

    Problem: We are initialising muxer as soon as we start the transformation. Now the startTransformation() method can be called from main thread, but muxer creation is an I/O operation and should be not be done on main thread.
    
    Solution: Added lazy initialisation of muxer object. The actual transformation happens on background thread so the muxer will be initialised lazily from background thread only.
    
    Another way was to provide an initialize() method on MuxerWrapper which will explicitly initialise muxer object but with this approach the caller need to call the initialise method before calling anything else. With current implementation the renderers are calling MuxerWrapper methods on various callbacks (Not sequentially) and also we are sharing same muxer with multiple renderers so It might become confusing for the caller on when to call the initialise() method. Also there are few methods on MuxerWrapper which dont really need muxer object. So in short it might make MuxerWrapper APIs more confusing.
    
    Validation: Verified the transformation from demo app.
    PiperOrigin-RevId: 486735787
    (cherry picked from commit b10b4e6)
    SheenaChhabra authored and microkatz committed Nov 7, 2022
    Configuration menu
    Copy the full SHA
    194a32c View commit details
    Browse the repository at this point in the history

Commits on Nov 8, 2022

  1. Move muxing inside sample pipelines

    This logic is currently in the player renderers. With multi-asset, the
    renderers will go into the AssetLoader, which shouldn't be responsible
    for muxing.
    
    PiperOrigin-RevId: 486860502
    (cherry picked from commit d8754b6)
    kim-vde authored and microkatz committed Nov 8, 2022
    Configuration menu
    Copy the full SHA
    f3f2f93 View commit details
    Browse the repository at this point in the history
  2. Set targetSdkVersion of main demo app back to 29

    #minor-release
    
    PiperOrigin-RevId: 486969194
    (cherry picked from commit 2172466)
    marcbaechinger authored and microkatz committed Nov 8, 2022
    Configuration menu
    Copy the full SHA
    f5acc9e View commit details
    Browse the repository at this point in the history

Commits on Nov 9, 2022

  1. Move slow mo logic to sample pipelines

    This is to avoid having this logic in TransformerInternal once it is
    added.
    
    PiperOrigin-RevId: 487159941
    (cherry picked from commit b59fdf5)
    kim-vde authored and microkatz committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    881838b View commit details
    Browse the repository at this point in the history
  2. Merge Issue: google#10762: Fix ffmpeg jni wrapper returning invalid r…

    …esult codes
    
    Imported from GitHub PR Issue: google#10762
    
    This ensure that ffmpeg error code are properly translated to values that the ExoPlayer decoder understand.
    The main gain is that it allows the decoder to properly ignore more cases of invalid data and recover.
    The second gain is that the other errors are now proper ExoPlayer errors and no more obscure buffer ones.
    
    Fixes: Issue: google#10760
    Merge 82ceeb7 into 972e169
    COPYBARA_INTEGRATE_REVIEW=go/exoghi/10762 from Tolriq:ffmpeg_error_code 82ceeb7
    PiperOrigin-RevId: 487189910
    
    (cherry picked from commit 6d2e7a1)
    Tolriq authored and microkatz committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    95d9e49 View commit details
    Browse the repository at this point in the history
  3. Add ExoPlayerAssetLoader

    Just move some code around for now, to start setting up the overall
    structure.
    
    PiperOrigin-RevId: 487229329
    (cherry picked from commit 5d1cab0)
    kim-vde authored and microkatz committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    1ffe6a7 View commit details
    Browse the repository at this point in the history
  4. Change UnsupportedEncodingException to IllegalArgumentException

    In startTransformation method we were throwing UnsupportedEncodingException (IOException) when mediaItem with unsupported arguments is passed.
    Changed this to IllegalArgumentException which seems more logical here.
    
    PiperOrigin-RevId: 487259296
    (cherry picked from commit 4598cc9)
    SheenaChhabra authored and microkatz committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    70f74fd View commit details
    Browse the repository at this point in the history
  5. Set HDR color info on FrameworkMuxer

    Not setting the color info results in a missing "colr" box in the produced
    container, under file/moov/trak/mdia/minf/stbl/stsd/hvc1. This means extractors
    will not be able to find out the transcoded file is HDR.
    
    In `Transformer`, this means it can't transcode this transcoded file, because
    it currently relies on the container bearing HDR info to construct the
    transcoding sample pipeline.
    
    PiperOrigin-RevId: 487276712
    (cherry picked from commit d6c8e3a)
    claincly authored and microkatz committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    98c981f View commit details
    Browse the repository at this point in the history
  6. HDR: Implement ForceInterpretHdrVideoAsSdr

    Also, document that we tone map when no HDR features are explicitly set
    
    PiperOrigin-RevId: 487310971
    (cherry picked from commit 8bdd278)
    dway123 authored and microkatz committed Nov 9, 2022
    Configuration menu
    Copy the full SHA
    39d9aef View commit details
    Browse the repository at this point in the history

Commits on Nov 10, 2022

  1. Fix Dackka/Metalava errors in the ExoPlayer module

    This makes two types of fix:
    1. Align parameter names on overridden methods where the superclass
       has `@param` javadoc.
    2. Use `@hide` on `protected final` methods that refer to package-private
       types. This will hide these symbols from Dackka javadoc generation
       but not (currently) from the artefacts distributed on Maven. These
       methods are currently unusable outside their package anyway (e.g. by
       external developers) because of the dependency on a package-private
       type.
    
    This also changes some HLS, SmoothStreaming, and IMA code where I've renamed
    parameters of overridden methods to be consistent across the type
    hierarchy.
    
    #minor-release
    
    PiperOrigin-RevId: 487472665
    (cherry picked from commit 10c4a4d)
    icbaker authored and microkatz committed Nov 10, 2022
    Configuration menu
    Copy the full SHA
    01f30f0 View commit details
    Browse the repository at this point in the history
  2. Fix Dackka/Metalava errors in the HLS and RTSP modules

    This makes two fixes:
    1. Remove `HlsSampleStreamWrapper.Callback` (package-private) from the
       list of interfaces implemented by `HlsMediaPeriod` (`public`) and
       move the implementation to a private inner class instead. This avoids
       Metalava complaining about a public class that inherits from a
       package-private type.
    2. Reduce the visibility of
       `RtpPayloadFormat.isFormatSupported(MediaDescription)` from `public`
       to package-private. The `MediaDescription` type is already
       package-private, so this method was already unusable outside the
       package.
    
    #minor-release
    
    PiperOrigin-RevId: 487472781
    (cherry picked from commit 9041d7b)
    icbaker authored and microkatz committed Nov 10, 2022
    Configuration menu
    Copy the full SHA
    2540dee View commit details
    Browse the repository at this point in the history
  3. Fix Dackka/Metalava errors in av1, flac, ffmpeg, midi, and opus modules

    This uses `@hide` on `protected final` methods to hide them from Dackka
    javadoc generation, since these methods are inaccessible to developers
    anyway. These symbols will still (currently) be included in artefacts
    distributed on Maven (because we don't run Metalava as part of
    generating these artefacts).
    
    In some cases I had to change the visibility/finality of methods to make
    them `protected final` before adding the `@hide` annotation (but
    the impact should be very low, since most of these methods were either
    already unusable by app developers, or they shouldn't have been used).
    
    #minor-release
    
    PiperOrigin-RevId: 487472907
    (cherry picked from commit 1cd488a)
    icbaker authored and microkatz committed Nov 10, 2022
    Configuration menu
    Copy the full SHA
    925e733 View commit details
    Browse the repository at this point in the history
  4. Fix Dackka/Metalava errors in test_utils module

    This involves reducing the visibility of methods/constructors that
    are already unusable outside the `androidx.media3.test.utils` package.
    
    #minor-release
    
    PiperOrigin-RevId: 487473005
    (cherry picked from commit ca8de0e)
    icbaker authored and microkatz committed Nov 10, 2022
    Configuration menu
    Copy the full SHA
    7f706c8 View commit details
    Browse the repository at this point in the history
  5. Fix Dackka parameter name error in Gav1Decoder and VpxDecoder

    These aren't caught by presubmit because the classes are annotated
    `@VisibleForTesting` and are therefore stripped out by Metalava. However
    Metalava doesn't run when we're generating javadoc for real.
    
    #minor-release
    
    PiperOrigin-RevId: 487476260
    (cherry picked from commit 14e23d3)
    icbaker authored and microkatz committed Nov 10, 2022
    Configuration menu
    Copy the full SHA
    77c8875 View commit details
    Browse the repository at this point in the history
  6. Set targetSdkVersion of main demo app to 29

    #minor-release
    
    PiperOrigin-RevId: 487479366
    (cherry picked from commit 09bee98)
    christosts authored and microkatz committed Nov 10, 2022
    Configuration menu
    Copy the full SHA
    386e2af View commit details
    Browse the repository at this point in the history
  7. Fix parameter name mismatch in MappingTrackSelector.selectTracks

    It's not clear to me why presubmit didn't catch this, I briefly
    investigated but couldn't work it out - so I'm just going to fix
    it and move on.
    
    #minor-release
    
    PiperOrigin-RevId: 487497827
    (cherry picked from commit 13ee34f)
    icbaker authored and microkatz committed Nov 10, 2022
    Configuration menu
    Copy the full SHA
    ab501dd View commit details
    Browse the repository at this point in the history
  8. Configure Dackka to generate javadoc for protected methods

    #minor-release
    
    PiperOrigin-RevId: 487497923
    (cherry picked from commit 7cb2e11)
    icbaker authored and microkatz committed Nov 10, 2022
    Configuration menu
    Copy the full SHA
    23518e2 View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    d976041 View commit details
    Browse the repository at this point in the history

Commits on Nov 17, 2022

  1. Reformat demo build.gradle file

    PiperOrigin-RevId: 487539107
    (cherry picked from commit 0383b72)
    icbaker authored and microkatz committed Nov 17, 2022
    Configuration menu
    Copy the full SHA
    dd49f24 View commit details
    Browse the repository at this point in the history
  2. Add @ForOverride to DecoderAudioRenderer protected methods

    PiperOrigin-RevId: 487779266
    (cherry picked from commit a34fdcf)
    icbaker authored and microkatz committed Nov 17, 2022
    Configuration menu
    Copy the full SHA
    704e84f View commit details
    Browse the repository at this point in the history
  3. Reformat demo build.gradle file

    PiperOrigin-RevId: 488376715
    (cherry picked from commit 30b73c8)
    icbaker authored and microkatz committed Nov 17, 2022
    Configuration menu
    Copy the full SHA
    54d3dbf View commit details
    Browse the repository at this point in the history
  4. Calculate SSAI window duration for live periods with unset duration.

    We currently skip this calculation entirely, but it can be added by
    calculating the window duration using the wrapped window's duration
    and the provided AdPlaybackState.
    
    Issue: google#10764
    PiperOrigin-RevId: 488614767
    (cherry picked from commit 20151b9)
    tonihei authored and microkatz committed Nov 17, 2022
    Configuration menu
    Copy the full SHA
    5def6e4 View commit details
    Browse the repository at this point in the history
  5. Mark iterationFinished when triggering release event.

    When we currently trigger the iteration finished event during the
    release, we don't mark the event as triggered. This means that
    someone can trigger another release from within the callback,
    which then tries to resend the event.
    
    Issue: google#10758
    
    #minor-release
    
    PiperOrigin-RevId: 488645089
    (cherry picked from commit 3e5103a)
    tonihei authored and microkatz committed Nov 17, 2022
    Configuration menu
    Copy the full SHA
    88804dd View commit details
    Browse the repository at this point in the history
  6. Set valid channel masks for 8 and 12 channels on all Android versions

    Util.getAudioTrackChannelConfig() maps a channel count to a
    channel mask that is passed to AudioTrack. The method expected that
    playback of 8-channel audio is possible from Android 5.1 and playback of
    12-channel audio is only possible from Android 12L. However, there is no
    restriction on the upper number of channels that can be passed to the
    AudioTrack. google#10701 is an example where the audio decoder
    outputs 12 channels on an Android 10.
    
    This change removes the restrictions for 8 and 12 channels. Note, we still
    do not support playback of arbitrary number of channels as it would require
    further changes to DefaultAudioSink.
    
    #minor-release
    
    Issue: google#10701
    PiperOrigin-RevId: 488659831
    (cherry picked from commit 1b24e6f)
    christosts authored and microkatz committed Nov 17, 2022
    Configuration menu
    Copy the full SHA
    db2ab52 View commit details
    Browse the repository at this point in the history
  7. Rename getVideoSurfaceSize to getSurfaceSize

    This better matches the callback name (onSurfaceSizeChanged) and
    probably cause less confusion with getVideoSize.
    
    PiperOrigin-RevId: 488669786
    (cherry picked from commit 8438dac)
    tonihei authored and microkatz committed Nov 17, 2022
    Configuration menu
    Copy the full SHA
    6108c05 View commit details
    Browse the repository at this point in the history

Commits on Nov 22, 2022

  1. Filter bogus AndroidX core jar file when creating javadoc

    #minor-release
    
    PiperOrigin-RevId: 489202167
    (cherry picked from commit 7e82d4e)
    microkatz committed Nov 22, 2022
    Configuration menu
    Copy the full SHA
    f4259f3 View commit details
    Browse the repository at this point in the history
  2. Remove @hide javadoc annotation from ExoPlayer GitHub

    This tag is only understood by Dackka, which is used to generate the media3 javadoc.
    
    PiperOrigin-RevId: 489233200
    (cherry picked from commit 058cba9)
    icbaker authored and microkatz committed Nov 22, 2022
    Configuration menu
    Copy the full SHA
    bd6570f View commit details
    Browse the repository at this point in the history
  3. Version bump to exoplayer:2.18.2 and media3:1.0.0-beta03

    #minor-release
    
    PiperOrigin-RevId: 489959918
    (cherry picked from commit ca190c0)
    microkatz committed Nov 22, 2022
    Configuration menu
    Copy the full SHA
    66995db View commit details
    Browse the repository at this point in the history
  4. Update JavaDoc for exoplayer:2.18.2

    #minor-release
    
    PiperOrigin-RevId: 490202192
    (cherry picked from commit 6f1cf6d)
    microkatz committed Nov 22, 2022
    Configuration menu
    Copy the full SHA
    aef5330 View commit details
    Browse the repository at this point in the history
  5. Reorder some release notes in other sections.

    #minor-release
    
    PiperOrigin-RevId: 490224795
    (cherry picked from commit e567594)
    tonihei authored and microkatz committed Nov 22, 2022
    Configuration menu
    Copy the full SHA
    9b0790e View commit details
    Browse the repository at this point in the history

Commits on Nov 23, 2022

  1. Fix compilation error in ffmpeg JNI layer

    PiperOrigin-RevId: 490263003
    (cherry picked from commit 202e03f)
    christosts authored and microkatz committed Nov 23, 2022
    Configuration menu
    Copy the full SHA
    a114b0e View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    a9444c8 View commit details
    Browse the repository at this point in the history

Commits on Nov 24, 2022

  1. Remove two media3-only release notes from the ExoPlayer release notes

    Issue: google#10811
    PiperOrigin-RevId: 490726544
    (cherry picked from commit bb270c6)
    icbaker committed Nov 24, 2022
    Configuration menu
    Copy the full SHA
    0c74758 View commit details
    Browse the repository at this point in the history

Commits on Jan 5, 2023

  1. Update migration script

    Issue: google#10854
    PiperOrigin-RevId: 496922055
    (cherry picked from commit 8e9f838)
    marcbaechinger committed Jan 5, 2023
    Configuration menu
    Copy the full SHA
    3a654c1 View commit details
    Browse the repository at this point in the history

Commits on Jan 25, 2023

  1. Changed decoder list sort to order by functional support of format

    Added new method to check if codec just functionally supports a format. Changed getDecoderInfosSortedByFormatSupport to use new function to order by functional support. This allows decoders that only support functionally and are more preferred by the MediaCodecSelector to keep their preferred position in the sorted list.
    
    UnitTests included
    -Two MediaCodecVideoRenderer tests that verify hw vs sw does not have an effect on sort of the decoder list, it is only based on functional support
    
    Issue: google#10604
    PiperOrigin-RevId: 487779284
    (cherry picked from commit 1eb8a6b)
    microkatz authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    97d7ed7 View commit details
    Browse the repository at this point in the history
  2. Fix NPE when listener is not set

    PiperOrigin-RevId: 488970696
    (cherry picked from commit f52bb27)
    Googler authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    e2e7c43 View commit details
    Browse the repository at this point in the history
  3. Add setPlaybackLooper ExoPlayer builder method

    The method allows clients to specify a pre-existing thread
    to use for playback. This can be used to run multiple ExoPlayer
    instances on the same playback thread.
    
    PiperOrigin-RevId: 488980749
    (cherry picked from commit 79b809b)
    Googler authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    e42c65b View commit details
    Browse the repository at this point in the history
  4. Mark broadcast receivers as not exported

    They are called from the system only and don't need to be exported
    to be visible to other apps.
    
    PiperOrigin-RevId: 489210264
    (cherry picked from commit c1fd03d)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    0d11d55 View commit details
    Browse the repository at this point in the history
  5. Throw exception if a released player is passed to TestPlayerRunHelper

    I considered moving this enforcement inside the ExoPlayerImpl
    implementation, but it might lead to app crashes in cases that apps
    (incorrectly) call a released player, but it wasn't actually causing a
    problem.
    
    PiperOrigin-RevId: 489233917
    (cherry picked from commit d4c9199)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    d99a667 View commit details
    Browse the repository at this point in the history
  6. Add additional codecs to the eosPropagationWorkaround list.

    Issue: google#10756
    PiperOrigin-RevId: 489236336
    (cherry picked from commit cbcdbfe)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    be2bdbd View commit details
    Browse the repository at this point in the history
  7. Pass correct frame size for passthrough playback

    When estimating the AudioTrack min buffer size, we must use a PCM
    frame of 1 when doing direct playback (passthrough). The code was
    passing -1 (C.LENGTH_UNSET).
    
    PiperOrigin-RevId: 489238392
    (cherry picked from commit d9d7168)
    christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    fcf5452 View commit details
    Browse the repository at this point in the history
  8. Add remaining state and getters to SimpleBasePlayer

    This adds the full Builders and State representation needed to
    implement all Player getter methods and listener invocations.
    
    PiperOrigin-RevId: 489503319
    (cherry picked from commit b81cd08)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    f1a9a6b View commit details
    Browse the repository at this point in the history
  9. Add set -eu to all shell scripts

    These flags ensure that any errors cause the script to exit (instead of
    just carrying on) (`-e`) and that any unrecognised substitution variables
    cause an error instead of silently resolving to an empty string (`-u`).
    
    Issues like Issue: google#10791 should be more quickly resolved with
    `set -e` because the script will clearly fail with an error like
    `make: command not found` which would give the user a clear pointer
    towards the cause of the problem.
    
    #minor-release
    
    PiperOrigin-RevId: 490001419
    (cherry picked from commit f834419)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    87b1c30 View commit details
    Browse the repository at this point in the history
  10. Fixed missing imports for Metadata and AdPlaybackState for Exoplayer

    PiperOrigin-RevId: 490012573
    (cherry picked from commit 1551bea)
    microkatz authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    dda5f95 View commit details
    Browse the repository at this point in the history
  11. Fixed Exoplayer imports for SimpleBasePlayerTest

    PiperOrigin-RevId: 490181547
    (cherry picked from commit 788f747)
    microkatz authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    fbab7de View commit details
    Browse the repository at this point in the history
  12. Add DefaultExtractorsFactory.setTsSubtitleFormats

    ExoPlayer is unable to detect the presence of subtitle tracks in some
    MPEG-TS files that don't fully declare them. It's possible for a
    developer to provide the list instead, but doing so is quite awkward
    without this helper method. This is consistent for how
    `DefaultExtractorsFactory` allows other aspects of the delegate
    `Extractor` implementations to be customised.
    
    * Issue: google#10175
    * Issue: google#10505
    
    #minor-release
    
    PiperOrigin-RevId: 490214619
    (cherry picked from commit 4853444)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    f527632 View commit details
    Browse the repository at this point in the history
  13. Reorder some release notes in other sections.

    PiperOrigin-RevId: 490224795
    (cherry picked from commit e567594)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    4a46935 View commit details
    Browse the repository at this point in the history
  14. Merge pull request google#10786 from TiVo:p-aacutil-test-impl

    PiperOrigin-RevId: 490465182
    (cherry picked from commit 8a9a66c)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    989e2f7 View commit details
    Browse the repository at this point in the history
  15. Exclude tracks from PlayerInfo if not changed

    This change includes a change in the `IMediaController.aidl` file and needs
    to provide backwards compatibility for when a client connects that is of an older or
    newer version of the current service implementation.
    
    This CL proposes to create a new AIDL method `onPlayerInfoChangedWithExtensions`
    that is easier to extend in the future because it does use an `Bundle` rather than
    primitives. A `Bundle` can be changed in a backward/forwards compatible way
    in case we need further changes.
    
    The compatibility handling is provided in `MediaSessionStub` and `MediaControllerStub`. The approach is not based on specific AIDL/Binder features but implemented fully in application code.
    
    Issue: androidx/media#102
    #minor-release
    PiperOrigin-RevId: 490483068
    (cherry picked from commit f262e91)
    marcbaechinger authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    20e54a8 View commit details
    Browse the repository at this point in the history
  16. Parse and set peakBitrate for Dolby TrueHD(AC-3) and (E-)AC-3

    #minor-release
    
    PiperOrigin-RevId: 490527831
    (cherry picked from commit 01eddb3)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    35a900a View commit details
    Browse the repository at this point in the history
  17. Rollback of google@01eddb3

    *** Original commit ***
    
    Parse and set `peakBitrate` for Dolby TrueHD(AC-3) and (E-)AC-3
    
    #minor-release
    
    ***
    
    PiperOrigin-RevId: 490570517
    (cherry picked from commit ea3552c)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    2910117 View commit details
    Browse the repository at this point in the history
  18. Rollback of google@ea3552c

    *** Original commit ***
    
    Rollback of google@01eddb3
    
    *** Original commit ***
    
    Parse and set `peakBitrate` for Dolby TrueHD(AC-3) and (E-)AC-3
    
    #minor-release
    
    ***
    
    ***
    
    PiperOrigin-RevId: 490707234
    (cherry picked from commit 8c91a31)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    b4a88d6 View commit details
    Browse the repository at this point in the history
  19. Remove two media3-only release notes from the ExoPlayer release notes

    Issue: google#10811
    PiperOrigin-RevId: 490726544
    (cherry picked from commit bb270c6)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    64b32c4 View commit details
    Browse the repository at this point in the history
  20. Use ParsableBitArray instead of ParsableByteArray

    To avoid complicated bit shifting and masking. Also makes the code more readable.
    
    PiperOrigin-RevId: 490749482
    (cherry picked from commit 89e4b8d)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    062f0e3 View commit details
    Browse the repository at this point in the history
  21. Convert bitrates to bps before setting it

    Format expects the values of `averageBitrate` and `peakBitrate` in bps and the value fetched from AC3SpecificBox and EC3SpecificBox is in kbps.
    
    PiperOrigin-RevId: 490756581
    (cherry picked from commit 67955e0)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    7e733aa View commit details
    Browse the repository at this point in the history
  22. Remove flakiness from DefaultAnalyticsCollectorTest

    Our FakeClock generally makes sure that playback tests are fully
    deterministic. However, this fails if the test uses blocking waits
    with clock.onThreadBlocked and where relevant Handlers are created
    without using the clock.
    
    To fix the flakiness, we can make the following adjustments:
     - Use TestExoPlayerBuilder instead of legacy ExoPlayerTestRunner
       to avoid onThreadBlocked calls. This also makes the tests more
       readable.
     - Use clock to create Handler for FakeVideoRenderer and
       FakeAudioRenderer. Ideally, this should be passed through
       RenderersFactory, but it's too disruptive given this is a
       public API.
     - Use clock for MediaSourceList and MediaPeriodQueue update
       handler.
    
    PiperOrigin-RevId: 490907495
    (cherry picked from commit 7d62943)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    0fb501e View commit details
    Browse the repository at this point in the history
  23. Clean up javadoc on Metadata.Entry.populateMediaMetadata

    Remove self-links, and remove section that is documenting internal
    ordering behaviour of
    [`SimpleBasePlayer.getCombinedMediaMetadata`](https://github.com/google/ExoPlayer/blob/bb270c62cf2f7a1570fe22f87bb348a2d5e94dcf/library/common/src/main/java/com/google/android/exoplayer2/SimpleBasePlayer.java#L1770)
    rather than anything specifically about this method.
    
    #minor-release
    
    PiperOrigin-RevId: 490923719
    (cherry picked from commit ed8c196)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    a68ab5f View commit details
    Browse the repository at this point in the history
  24. Ensure messages sent on a dead thread don't block FakeClock execution

    FakeClock keeps an internal list of messages to be executed to
    ensure deterministic serialization. The next message from the list
    is triggered by a separate helper message sent to the real Handler.
    However, if the target HandlerThread is no longer alive (e.g. when
    it quit itself during the message execution), this helper
    message is never executed and the entire message execution chain
    is stuck forever.
    
    This can be solved by checking the return values of Hander.post or
    Handler.sendMessage, which are false if the message won't be
    delivered. If the messages are not delivered, we can unblock the
    chain by marking the message as complete and triggering the next
    one.
    
    PiperOrigin-RevId: 491275031
    (cherry picked from commit 2977bef)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    83b7f80 View commit details
    Browse the repository at this point in the history
  25. Merge pull request google#10799 from OxygenCobalt:id3v2-multi-value

    PiperOrigin-RevId: 491289028
    (cherry picked from commit c827e46)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    cbc2547 View commit details
    Browse the repository at this point in the history
  26. Split up Id3DecoderTest methods

    It's clearer if each test method follows the Arrange/Act/Assert pattern
    
    PiperOrigin-RevId: 491299379
    (cherry picked from commit bf77290)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    50e686e View commit details
    Browse the repository at this point in the history
  27. Remove impossible UnsupportedEncodingException from Id3Decoder

    The list of charsets is already hard-coded, and using `Charset` types
    ensures they will all be present at run-time, hence we will never
    encounter an 'unsupported' charset.
    
    PiperOrigin-RevId: 491324466
    (cherry picked from commit 043546a)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    70a55ef View commit details
    Browse the repository at this point in the history
  28. Merge pull request google#10776 from dongvanhung:feature/add_support_…

    …clear_download_manager_helpers
    
    PiperOrigin-RevId: 491336828
    (cherry picked from commit 3a7f940)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    44d12a5 View commit details
    Browse the repository at this point in the history
  29. Bump cast sdk version and remove workaround for live duration

    The fix for b/171657375 (internal) has been shipped with 21.1.0 already (see https://developers.google.com/cast/docs/release-notes#august-8,-2022).
    
    PiperOrigin-RevId: 491583727
    (cherry picked from commit 04f031d)
    marcbaechinger authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    69ded0f View commit details
    Browse the repository at this point in the history
  30. Add configuration to support OPUS offload

    To support OPUS offload, we need to provide a few configuration values
    that are currently not set due to the lack of devices supporting
    OPUS offload.
    
    PiperOrigin-RevId: 491613716
    (cherry picked from commit 4cf877b)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    b6477dd View commit details
    Browse the repository at this point in the history
  31. Use audio bitrate to calculate AudioTrack min buffer in passthrough

    Use the bitrate of the audio format (when available) in
    DefaultAudioSink.AudioTrackBufferSizeProvider.getBufferSizeInBytes() to
    calculate accurate buffer sizes for direct (passthrough) playbacks.
    
    #minor-release
    
    PiperOrigin-RevId: 491628530
    (cherry picked from commit e219ac2)
    christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    d792378 View commit details
    Browse the repository at this point in the history
  32. Rename SimpleBasePlayer.PlaylistItem to MediaItemData

    This better matches the terminology we use elsewhere in the Player
    interface, where items inside the playlist are referred to as
    "media item" and only the entire list is called "playlist".
    
    PiperOrigin-RevId: 491882849
    (cherry picked from commit 6c46759)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    2921cb7 View commit details
    Browse the repository at this point in the history
  33. Parse and set bitrates in Ac3Reader

    PiperOrigin-RevId: 492003800
    (cherry picked from commit 5f73984)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    8246587 View commit details
    Browse the repository at this point in the history
  34. Add media type to MediaMetadata

    This helps to denote what type of content or folder the metadata
    describes.
    
    PiperOrigin-RevId: 492123690
    (cherry picked from commit 1ac72de)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    8ec46cd View commit details
    Browse the repository at this point in the history
  35. Add support for most setters in SimpleBasePlayer

    This adds the forwarding logic for most setters in SimpleExoPlayer
    in the same style as the existing logic for setPlayWhenReady.
    
    This change doesn't implement the setters for modifying media items,
    seeking and releasing yet as they require additional handling that
    goes beyond the repeated implementation pattern in this change.
    
    PiperOrigin-RevId: 492124399
    (cherry picked from commit e598a17)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    2bfced9 View commit details
    Browse the repository at this point in the history
  36. Merge pull request google#10750 from Stronger197:subrip_utf_16

    PiperOrigin-RevId: 492164739
    (cherry picked from commit 496cfa4)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    eb51ad5 View commit details
    Browse the repository at this point in the history
  37. Split SubripDecoder and ParsableByteArray tests

    In some cases we split a test method, and in other cases we just add
    line breaks to make the separation between arrange/act/assert more
    clear.
    
    PiperOrigin-RevId: 492182769
    (cherry picked from commit 02fa8aa)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    05151ba View commit details
    Browse the repository at this point in the history
  38. Removed ExoPlayer specific states from SimpleBasePlayer

    PiperOrigin-RevId: 492443147
    (cherry picked from commit 08f6fe1)
    microkatz authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    d0691aa View commit details
    Browse the repository at this point in the history
  39. Fix TextRenderer exception when a subtitle file contains no cues

    Discovered while investigating Issue: google#10823
    
    Example stack trace with the previous code (I added the index value for
    debugging):
    
    ```
    playerFailed [eventTime=44.07, mediaPos=44.01, window=0, period=0, errorCode=ERROR_CODE_FAILED_RUNTIME_CHECK
      androidx.media3.exoplayer.ExoPlaybackException: Unexpected runtime error
          at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:635)
          at android.os.Handler.dispatchMessage(Handler.java:102)
          at android.os.Looper.loopOnce(Looper.java:202)
          at android.os.Looper.loop(Looper.java:291)
          at android.os.HandlerThread.run(HandlerThread.java:67)
      Caused by: java.lang.IllegalArgumentException: index=-1
          at androidx.media3.common.util.Assertions.checkArgument(Assertions.java:55)
          at androidx.media3.extractor.text.webvtt.WebvttSubtitle.getEventTime(WebvttSubtitle.java:62)
          at androidx.media3.extractor.text.SubtitleOutputBuffer.getEventTime(SubtitleOutputBuffer.java:56)
          at androidx.media3.exoplayer.text.TextRenderer.getCurrentEventTimeUs(TextRenderer.java:435)
          at androidx.media3.exoplayer.text.TextRenderer.render(TextRenderer.java:268)
          at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1008)
          at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:509)
          at android.os.Handler.dispatchMessage(Handler.java:102)
          at android.os.Looper.loopOnce(Looper.java:202)
          at android.os.Looper.loop(Looper.java:291)
          at android.os.HandlerThread.run(HandlerThread.java:67)
    ]
    ```
    
    #minor-release
    
    PiperOrigin-RevId: 492464180
    (cherry picked from commit 5f6fde4)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    e342b70 View commit details
    Browse the repository at this point in the history
  40. Fix ExoPlayerTest to use C.TIME_UNSET instead of C.POSITION_UNSET

    This inconsistency was exposed by an upcoming change to deprecate
    `POSITION_UNSET` in favour of `INDEX_UNSET` because position is an
    ambiguous term between 'byte offset' and 'media position', as shown
    here.
    
    PiperOrigin-RevId: 492470241
    (cherry picked from commit 2f8cf94)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    fec7b1b View commit details
    Browse the repository at this point in the history
  41. Fix threading of onFallbackApplied callback

    The callback is currently triggered on the ExoPlayer playback thread
    instead of the app thread that added the listener.
    
    PiperOrigin-RevId: 492474405
    (cherry picked from commit f3fc4fb)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    5fd6ce5 View commit details
    Browse the repository at this point in the history
  42. Add javadoc links to README files

    Fix some other link titles and destinations spotted along the way.
    
    #minor-release
    
    PiperOrigin-RevId: 493276172
    (cherry picked from commit c006575)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    d2d45db View commit details
    Browse the repository at this point in the history
  43. Support release in SimpleBasePlayer

    This adds support for the release handling. To align with the
    established behavior in ExoPlayer, the player can only call
    listeners from within the release methods (and not afterwards)
    and automatically enforces an IDLE state (without listener call)
    in case getters of the player are used after release.
    
    PiperOrigin-RevId: 493543958
    (cherry picked from commit 3a66c28)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    a65d9e9 View commit details
    Browse the repository at this point in the history
  44. Replace MediaMetadata folderType by isBrowsable

    The folder type has a mix of information about the item. It shows
    whether the item is browsable (type != FOLDER_TYPE_NONE) and
    which Bluetooth folder type to set for legacy session information.
    
    It's a lot clearer to split this into a boolean isBrowsable and
    use the existing mediaType to map back to the bluetooth folder type
    where required.
    
    folderType is not marked as deprecated yet as this would be an API
    change, which will be done later.
    
    PiperOrigin-RevId: 493544589
    (cherry picked from commit 9d05935)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    a599289 View commit details
    Browse the repository at this point in the history
  45. Remove debug timeout multiplier.

    It looks like this was added accidentally in <unknown commit>.
    
    PiperOrigin-RevId: 493834134
    (cherry picked from commit f8e4e17)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    4566416 View commit details
    Browse the repository at this point in the history
  46. Clarify and correct allowed multi-threading for some Player methods

    Some Player methods like getting the Looper and adding listeners
    were always allowed to be called from any thread, but this is
    undocumented. This change makes the threading rules of these
    methods more explicit.
    
    Removing listeners was never meant to be called from another thread
    and we also don't support it safely because final callbacks may
    be triggered from the wrong thread. To find potential issues, we
    can assert the correct thread when releasing listeners.
    
    Finally, there is a potential race condition when calling addListener
    from a different thread at the same time as release, which may lead to
    a registered listener that could receive callbacks after the player is
    released.
    
    PiperOrigin-RevId: 493843981
    (cherry picked from commit e9364b0)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    3dfbfd3 View commit details
    Browse the repository at this point in the history
  47. Forward seek command details to seekTo method in BasePlayer

    BasePlayer simplifies implementations by handling all the various
    seek methods and forwarding to a single method that can then be
    implemented by subclasses. However, this loses the information about
    the concrete entry point used for seeking, which is relevant when
    the subclass wants to verify or filter by Player.Command. This
    can be improved by adding the command as a new parameter. Since
    we have to change the method anyway, we can also incorporate the
    boolean flag about whether the current item is repeated to avoid
    the separate method.
    
    PiperOrigin-RevId: 494948094
    (cherry picked from commit 6e0f1f1)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    b9365f5 View commit details
    Browse the repository at this point in the history
  48. Reset isLoading when calling SimpleBasePlayer.stop/release

    isLoading is not allowed to be true when IDLE, so we have to set to
    false when stopping in case it was set to true before.
    
    PiperOrigin-RevId: 494975405
    (cherry picked from commit e4f0b73)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    47b811e View commit details
    Browse the repository at this point in the history
  49. Document the reason for defining private method defaultIfNull

    PiperOrigin-RevId: 495004732
    (cherry picked from commit c3ca71f)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    aa2158d View commit details
    Browse the repository at this point in the history
  50. Remove parameters with default values from bundle in MediaItem

    This improves the time taken to construct PlayerInfo from bundle from ~600ms to ~450ms.
    
    PiperOrigin-RevId: 495055355
    (cherry picked from commit 7de47fe)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    951fea2 View commit details
    Browse the repository at this point in the history
  51. Clear one-off events from state as soon as they are triggered.

    This ensures they are not accidentally triggered again when
    the state is rebuilt with a buildUpon method.
    
    PiperOrigin-RevId: 495280711
    (cherry picked from commit fa5aaf9)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    0e921d1 View commit details
    Browse the repository at this point in the history
  52. Allow unset index and position values + remove period index

    This simplifies some position tracking needs for an app implementing
    SimpleBasePlayer.
     - The period index can always be derived from the media item index
       and the position. So there is no need to set it separately.
     - The media item index can be left unset in the State in case the app
       doesn't care about the value or wants to set it the default start
       index (e.g. while the playlist is still empty where UNSET is
       different from zero).
     - Similarly, we should allow to set the content position (and buffered
       position) to C.TIME_UNSET to let the app ignore it or indicate the
       default position explictly.
    
    PiperOrigin-RevId: 495352633
    (cherry picked from commit 91557ac)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    8e2692d View commit details
    Browse the repository at this point in the history
  53. Remove parameters with null values from bundle in MediaMetadata

    Improves the time taken to construct `playerInfo` from its bundle from ~450 ms to ~400 ms. Each `MediaItem` inside `Timeline.Window` contains `MediaMetadata` and hence is a good candidate for bundling optimisations. There already exists a test to check all parameters for null values when unset.
    
    PiperOrigin-RevId: 495614719
    (cherry picked from commit 8dea624)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    b9fd7fd View commit details
    Browse the repository at this point in the history
  54. Use theme when loading drawables on API 21+

    Issue: androidx/media#220
    PiperOrigin-RevId: 495642588
    (cherry picked from commit 33f8f40)
    marcbaechinger authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    5ff9069 View commit details
    Browse the repository at this point in the history
  55. Rename EMPTY_MEDIA_ITEM to PLACEHOLDER_MEDIA_ITEM

    The `MediaItem` instances in the following cases are not actually empty but acts as a placeholder. `EMPTY_MEDIA_ITEM` can also be confused with `MediaItem.EMPTY`.
    
    PiperOrigin-RevId: 495843012
    (cherry picked from commit 74559b4)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    4b7a005 View commit details
    Browse the repository at this point in the history
  56. Clarify behavior for out-of-bounds indices and align implementations

    Some Player methods operate relative to existing indices in the
    playlist (add,remove,move,seek). As these operations may be issued
    from a place with a stale playlist (e.g. a controller that sends
    a command while the playlist is changing), we have to handle out-
    of-bounds indices gracefully. In most cases this is already
    documented and implemented correctly. However, some cases are not
    documented and the existing player implementations don't handle
    these cases consistently (or in some cases not even correctly).
    
    PiperOrigin-RevId: 495856295
    (cherry picked from commit a1c0b10)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    f178486 View commit details
    Browse the repository at this point in the history
  57. Check if codec still exists before handling tunneling events

    The tunneling callbacks are sent via Handler messages and may be
    handled after the codec/surface was changed or released.
    
    We already guard against the codec/surface change condition by
    creating a new listener and verifying that the current callback
    happens for the correct listener instance, but we don't guard
    against a released codec yet.
    
    PiperOrigin-RevId: 495882353
    (cherry picked from commit 5e23b8b)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    0ab7c75 View commit details
    Browse the repository at this point in the history
  58. Add playlist and seek operations to SimpleBasePlayer

    These are the remaining setter operations. They all share the same
    logic that handles playlist and/or position changes. The logic to
    create the placeholder state is mostly copied from ExoPlayerImpl's
    maskTimelineAndPosition and getPeriodPositonUsAfterTimelineChanged.
    
    PiperOrigin-RevId: 496364712
    (cherry picked from commit 09d3764)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    2c17c6e View commit details
    Browse the repository at this point in the history
  59. Remove ellipsis from Player javadoc

    PiperOrigin-RevId: 496377192
    (cherry picked from commit 844428e)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    65daec3 View commit details
    Browse the repository at this point in the history
  60. Fix Dackka error due to param name mismatch

    https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#seekTo(long)
    
    #minor-release
    
    PiperOrigin-RevId: 496378709
    (cherry picked from commit d2a3d8f)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    beeb6e7 View commit details
    Browse the repository at this point in the history
  61. Clarify some Player command and method javadoc

    #minor-release
    
    PiperOrigin-RevId: 496661152
    (cherry picked from commit f47ad3c)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    730f3a3 View commit details
    Browse the repository at this point in the history
  62. Document the relationship between Player methods and available commands

    #minor-release
    
    PiperOrigin-RevId: 496668378
    (cherry picked from commit 54e7968)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    de203fe View commit details
    Browse the repository at this point in the history
  63. Add error messages to correctness assertions in SimpleBasePlayer

    Users of this class may run into these assertions when creating the
    State and they need to check the source code to understand why
    the State is invalid. Adding error messages to all our correctness
    assertions helps to understand the root cause more easily.
    
    PiperOrigin-RevId: 496875109
    (cherry picked from commit b7e887a)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    7afdc9e View commit details
    Browse the repository at this point in the history
  64. Fix recursive loop when registering controller visibility listeners

    There are two overloads of this method due to a type 'rename' from
    `PlayerControlView.VisibilityListener` to
    `PlayerView.ControllerVisibilityListener`. Currently when you call one
    overload it passes `null` to the other one (to clear the other listener).
    Unfortunately this results in it clearing itself, because it receives
    a null call back!
    
    This change tweaks the documentation to clarify that the 'other'
    listener is only cleared if you pass a non-null listener in. This solves
    the recursive problem, and allows the 'legacy' visibility listener to be
    successfully registered.
    
    Issue: androidx/media#229
    
    #minor-release
    
    PiperOrigin-RevId: 496876397
    (cherry picked from commit 37fd65a)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    3cb0195 View commit details
    Browse the repository at this point in the history
  65. Update migration script

    Issue: google#10854
    PiperOrigin-RevId: 496922055
    (cherry picked from commit 8e9f838)
    marcbaechinger authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    a212bc9 View commit details
    Browse the repository at this point in the history
  66. Bump IMA SDK version to 3.29.0

    Issue: google#10845
    PiperOrigin-RevId: 496947392
    (cherry picked from commit 8ed5158)
    marcbaechinger authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    0417dba View commit details
    Browse the repository at this point in the history
  67. Check MediaMetadata bundle to verify keys are skipped

    Added another check in test to make sure we don't add keys to bundle for fields with `null` values.
    
    PiperOrigin-RevId: 496948705
    (cherry picked from commit 890fd0a)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    e4fa94a View commit details
    Browse the repository at this point in the history
  68. Optimise bundling for AdPlaybackState using AdPlaybackState.NONE

    Did not do this optimisation for `AdPlaybackState.AdGroup` as its length is zero for `AdPlaybackState` with no ads.
    
    No need to pass default values while fetching keys, which we always set in `AdPlaybackState.AdGroup.toBundle()`.
    
    PiperOrigin-RevId: 496995048
    (cherry picked from commit f2eac2d)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    9b11686 View commit details
    Browse the repository at this point in the history
  69. Fix order of playback controls in RTL layout

    Issue: androidx/media#227
    
    #minor-release
    
    PiperOrigin-RevId: 497159283
    (cherry picked from commit 8313af1)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    ee72778 View commit details
    Browse the repository at this point in the history
  70. Enable RTL support in the demo app

    We might as well keep this enabled by default, rather than having to
    manually toggle it on to investigate RTL issues like Issue: androidx/media#227.
    
    PiperOrigin-RevId: 497159744
    (cherry picked from commit 010c6b9)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    1e97da9 View commit details
    Browse the repository at this point in the history
  71. Remove player listener on the application thread of the player

    PiperOrigin-RevId: 497183220
    (cherry picked from commit 965606f)
    marcbaechinger authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    25c964d View commit details
    Browse the repository at this point in the history
  72. Check bundles in MediaItem to verify keys are skipped

    Added another check in each of these tests to make sure we don't add keys to bundle for fields with default values.
    
    Also fixed comments of similar changes in `AdPlaybackStateTest` and `MediaMetadataTest`.
    
    PiperOrigin-RevId: 499463581
    (cherry picked from commit 9d431a5)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    fea5eea View commit details
    Browse the repository at this point in the history
  73. Optimise bundling for Timeline.Window and Timeline.Period

    Improves the time taken to construct playerInfo from its bundle from ~400 ms to ~300 ms.
    
    Also made `Timeline.Window.toBundle(boolean excludeMediaItem)` public as it was required to assert a condition in tests.
    
    PiperOrigin-RevId: 499512353
    (cherry picked from commit 2a77f1e)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    f3a1f2f View commit details
    Browse the repository at this point in the history
  74. Throw a ParserException instead of a NullPointerException if the samp…

    …le table (stbl) is missing a required sample description (stsd).
    
    As per the javadoc for AtomParsers.parseTrack, ParserException should be "thrown if the trak atom can't be parsed."
    
    PiperOrigin-RevId: 499522748
    (cherry picked from commit bbe78b1)
    Googler authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    25e6f62 View commit details
    Browse the repository at this point in the history
  75. Fix typo in DefaultTrackSelector.Parameters field

    PiperOrigin-RevId: 499905136
    (cherry picked from commit bdd6818)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    f9ae0a6 View commit details
    Browse the repository at this point in the history
  76. Initialise fields used for bundling as String directly

    Initialising the fields as Integer and then getting a String on compute
    time is slow. Instead we directly initialise these fields as String.
    Improves the time taken in bundling PlayerInfo further to less than
    200ms from ~300ms.
    
    Also modified a test to improve productive coverage.
    
    PiperOrigin-RevId: 500003935
    (cherry picked from commit d49437c)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    0b95e2c View commit details
    Browse the repository at this point in the history
  77. Update bandwidth meter estimates

    PiperOrigin-RevId: 501010994
    (cherry picked from commit 09a15fb)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    f438607 View commit details
    Browse the repository at this point in the history
  78. Add focusSkipButtonWhenAvailable to focus UI on ATV

    For TV devices the skip button needs to have the focus to be accessible with
    the remote control. This property makes this configurable while being set to
    true by default.
    
    PiperOrigin-RevId: 501077608
    (cherry picked from commit d2898b7)
    marcbaechinger authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    61eeb8b View commit details
    Browse the repository at this point in the history
  79. Request notification permission in demo app for API 33+

    Starting with API 33 the POST_NOTIFICATION permission needs to be
    requested at runtime or the notification is not shown.
    
    Note that with an app with targetSdkVersion < 33
    but on a device with API 33 the notification permission is automatically
    requested when the app starts for the first time. If the user does not
    grant the permission, requesting the permission at runtime result in
    an empty array of grant results.
    
    Issue: google#10884
    PiperOrigin-RevId: 501320632
    (cherry picked from commit 6bacbaa)
    marcbaechinger authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    b1b9c12 View commit details
    Browse the repository at this point in the history
  80. Document that DownloadService needs notification permissions

    Starting with Android 13 (API 33) an app needs to request the
    permission to post notifications or notifications are suppressed.
    This change documents this in the class level JavaDoc of the
    `DownloadService`.
    
    Issue: google#10884
    PiperOrigin-RevId: 501346908
    (cherry picked from commit 055ed77)
    marcbaechinger authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    fc4415b View commit details
    Browse the repository at this point in the history
  81. Add AdsLoader.focusSkipButton()

    This method allows to call through to `StreamManager.focus()` of the currently playing SSAI stream.
    
    PiperOrigin-RevId: 501399144
    (cherry picked from commit 0ba0c0e)
    marcbaechinger authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    8f37ad6 View commit details
    Browse the repository at this point in the history
  82. Clarify what default settings are being used for SSAI AdsLoader

    PiperOrigin-RevId: 502388865
    (cherry picked from commit 26e1a28)
    marcbaechinger authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    4b3c74f View commit details
    Browse the repository at this point in the history
  83. Disables play/pause button when there's nothing to play

    PiperOrigin-RevId: 502571320
    (cherry picked from commit 345f234)
    Googler authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    cebc0fa View commit details
    Browse the repository at this point in the history
  84. Make availableCommands known when bundling PlayerInfo

    When bundling PlayerInfo, we remove data when the controller is not
    allowed to access this data via getters. We also remove data for
    performance reasons. In the toBundle() method, it's currently hard to
    make the connection between allowed commands and filtering, because
    the values are checked at a different place. This can be made more
    readable by forwarding the applicable Commands directly.
    
    The only functional fix is to filter the Timeline when sending the
    first PlayerInfo after a connecting a controller if the command to
    get the Timeline is not available. This also allows us to remove a
    path to filter MediaItems from Timelines as it isn't used.
    
    PiperOrigin-RevId: 502607391
    (cherry picked from commit 5461d5c)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    7f20729 View commit details
    Browse the repository at this point in the history
  85. Fix javadoc references to writeSampleData

    PiperOrigin-RevId: 502821506
    (cherry picked from commit 8fcd6bb)
    rohitjoins authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    31aae77 View commit details
    Browse the repository at this point in the history
  86. Correctly filter PlayerInfo by available getter commands.

    When bundling PlayerInfo, we need to remove information if the
    controller is not allowed to access it. This was only partially
    done at the moment.
    
    PiperOrigin-RevId: 502852798
    (cherry picked from commit 50f066d)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    ea1301a View commit details
    Browse the repository at this point in the history
  87. Extend command GET_CURRENT_MEDIA_ITEM to more methods.

    We currently only document it for the getCurrentMediaItem(), but
    the command was always meant to cover all information about the
    current media item and the position therein.
    
    To correctly hide information for controllers, we need to filter
    the Timeline when bundling the PlayerInfo class if only this
    command is available.
    
    PiperOrigin-RevId: 503098124
    (cherry picked from commit 5e9c9ed)
    tonihei authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    b169386 View commit details
    Browse the repository at this point in the history
  88. Explicitly document most Player.Listener methods in terms of getters

    This makes it implicitly clear that if the value of a getter changes due
    to a change in command availability then the listener will be invoked,
    without needing to explicitly document every command on every listener
    method.
    
    #minor-release
    
    PiperOrigin-RevId: 503178383
    (cherry picked from commit aa23920)
    icbaker authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    197109e View commit details
    Browse the repository at this point in the history
  89. Undo unreleased changes from transforming-media.md

    The "Transforming media" page has been updated with changes that won't
    be part of the next release. Undo these changes so that this page is
    consistent with the latest release.
    
    PiperOrigin-RevId: 503917637
    (cherry picked from commit fdf8666)
    kim-vde authored and christosts committed Jan 25, 2023
    Configuration menu
    Copy the full SHA
    128fed8 View commit details
    Browse the repository at this point in the history

Commits on Jan 26, 2023

  1. Minor fix in transforming-media.md

    PiperOrigin-RevId: 504281747
    (cherry picked from commit 4c1be4c)
    christosts committed Jan 26, 2023
    Configuration menu
    Copy the full SHA
    92686b3 View commit details
    Browse the repository at this point in the history
  2. Suppress warnings in ImaUtil

    ImaUtil calls VideoProgressUpdate.equals() which is annotated as hidden,
    which causes lint errors with gradle.
    
    #minor-release
    
    PiperOrigin-RevId: 504306210
    (cherry picked from commit f86948f)
    christosts committed Jan 26, 2023
    Configuration menu
    Copy the full SHA
    26c8c55 View commit details
    Browse the repository at this point in the history
  3. Document two limitations with subtitle sideloading

    #minor-release
    
    PiperOrigin-RevId: 504517946
    (cherry picked from commit f083ff2)
    icbaker authored and christosts committed Jan 26, 2023
    Configuration menu
    Copy the full SHA
    3bb3c60 View commit details
    Browse the repository at this point in the history
  4. Add missing command checks in UI module

    The commands are partly checked already before enabling
    features or calling player methods, but the checks were
    still missing in many places.
    
    #minor-release
    
    PiperOrigin-RevId: 504589888
    (cherry picked from commit 2d7ddcc)
    tonihei authored and christosts committed Jan 26, 2023
    Configuration menu
    Copy the full SHA
    5350d06 View commit details
    Browse the repository at this point in the history

Commits on Feb 2, 2023

  1. Tweak UI behavior when commands are missing.

    For most missing commands, we already disable the corresponding
    controls. This change extends this to more UI elements that are
    disabled in case the corresponding action is unavailable.
    
    #minor-release
    
    PiperOrigin-RevId: 505057751
    (cherry picked from commit 641c3b1)
    tonihei authored and christosts committed Feb 2, 2023
    Configuration menu
    Copy the full SHA
    b9bb323 View commit details
    Browse the repository at this point in the history
  2. Match MergingMediaPeriod track selection by period index in id

    MergingMediaPeriod creates its track groups with ids concatenating position in its periods array and the underlying child track group id. The ids can be used in selectTracks for matching to periods list.
    
    Issue: google#10930
    PiperOrigin-RevId: 505074653
    (cherry picked from commit ee055ef)
    microkatz authored and christosts committed Feb 2, 2023
    Configuration menu
    Copy the full SHA
    ace97fa View commit details
    Browse the repository at this point in the history
  3. Fix timestamp comparison for seeks in fMP4

    When seeking in fMP4, we try to extract as little samples as possible
    by only starting at the preceding sync frame. This comparison should
    use <= to allow sync frames at exactly the seek position.
    
    Issue: google#10941
    
    #minor-release
    
    PiperOrigin-RevId: 505098172
    (cherry picked from commit ac3017b)
    tonihei authored and christosts committed Feb 2, 2023
    Configuration menu
    Copy the full SHA
    284bf97 View commit details
    Browse the repository at this point in the history
  4. Fix (another) LeanbackPlayerAdapter param name mismatch

    I missed this when fixing `positionInMs` for Dackka in google@d2a3d8f
    
    This time I manually verified that all the `@Override` methods have
    parameter names that match [the docs](https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter).
    
    #minor-release
    
    PiperOrigin-RevId: 506017063
    (cherry picked from commit 736f090)
    icbaker authored and christosts committed Feb 2, 2023
    Configuration menu
    Copy the full SHA
    4dfa7ca View commit details
    Browse the repository at this point in the history
  5. Merge pull request google#10793 from fraunhoferfokus:dash-thumbnail-s…

    …upport
    
    PiperOrigin-RevId: 506261584
    (cherry picked from commit 107e0c6)
    christosts committed Feb 2, 2023
    Configuration menu
    Copy the full SHA
    76e8740 View commit details
    Browse the repository at this point in the history
  6. Publish ConcatenatingMediaSource2

    Can be used to combine multiple media items into a single timeline window.
    
    Issue: androidx/media#247
    Issue: google#4868
    PiperOrigin-RevId: 506283307
    (cherry picked from commit eb8fffb)
    marcbaechinger authored and christosts committed Feb 2, 2023
    Configuration menu
    Copy the full SHA
    7269d2a View commit details
    Browse the repository at this point in the history

Commits on Feb 14, 2023

  1. Update release notes for ExoPlayer 2.18.3

    #minor-release
    
    PiperOrigin-RevId: 509246479
    (cherry picked from commit 8ff024e)
    christosts committed Feb 14, 2023
    Configuration menu
    Copy the full SHA
    f731a46 View commit details
    Browse the repository at this point in the history
  2. Version bump for ExoPlayer 2.18.3 & media3-1.0.0-rc01

    #minor-release
    
    PiperOrigin-RevId: 509501665
    (cherry picked from commit b18dccd)
    christosts committed Feb 14, 2023
    Configuration menu
    Copy the full SHA
    7dbc2d4 View commit details
    Browse the repository at this point in the history

Commits on Feb 15, 2023

  1. Update javadoc for ExoPlayer 2.18.3

    #minor-release
    
    PiperOrigin-RevId: 509789955
    (cherry picked from commit 4759e00)
    christosts committed Feb 15, 2023
    Configuration menu
    Copy the full SHA
    f5d442f View commit details
    Browse the repository at this point in the history

Commits on Feb 16, 2023

  1. Update javadoc for ExoPlayer 2.18.3

    #minor-release
    
    PiperOrigin-RevId: 509864205
    (cherry picked from commit 19d4a58)
    christosts committed Feb 16, 2023
    Configuration menu
    Copy the full SHA
    57bd861 View commit details
    Browse the repository at this point in the history
  2. Update javadoc for ExoPlayer 2.18.3

    #minor-release
    
    PiperOrigin-RevId: 509867431
    (cherry picked from commit 482871f)
    christosts committed Feb 16, 2023
    Configuration menu
    Copy the full SHA
    68ca399 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    f72ca83 View commit details
    Browse the repository at this point in the history

Commits on Feb 28, 2023

  1. Detect HEVC HDR10 codec profile more accurately

    In MediaCodecUtil, use Format.colorInfo, besides the codec string,
    to accurately map to a 10bit HEVC profile.
    
    PiperOrigin-RevId: 507500071
    (cherry picked from commit 80dbaca)
    christosts authored and tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    8f1aeca View commit details
    Browse the repository at this point in the history
  2. Fix AudioTrackPositionTracker logic for playback speed adjustments

    The AudioTrackPositionTracker needs to correct positions by
    the speed set on the AudioTrack itself whenever it makes
    estimations based on real-time (=the real-time playout
    duration is not equal to the media duration played).
    
    This happens for the main playback path already, but not for
    the mode in which the position is estimated from the playback
    head position and also not in the phase after the track has
    been stopped. Both cases are not very noticeable during
    normal playback, but become relevant when playing in offload
    mode.
    
    PiperOrigin-RevId: 507736408
    (cherry picked from commit 4ede931)
    tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    bc9f2be View commit details
    Browse the repository at this point in the history
  3. Merge pull request google#248 from lemondoglol:update-segment-size

    PiperOrigin-RevId: 507784608
    (cherry picked from commit 08342ea)
    microkatz authored and tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    3dcdfe5 View commit details
    Browse the repository at this point in the history
  4. Merge pull request google#10959 from balachandarlinks:handle-sql-exce…

    …ption-in-cached-content-index
    
    PiperOrigin-RevId: 508323432
    (cherry picked from commit 20a5e46)
    christosts authored and tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    3bd0896 View commit details
    Browse the repository at this point in the history
  5. Document spatialization behavior constants.

    PiperOrigin-RevId: 508602059
    (cherry picked from commit 1c29131)
    tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    58650b8 View commit details
    Browse the repository at this point in the history
  6. Add null check to ExoPlayerImpl.isTunnelingEnabled

    `TrackSelectorResult.rendererConfigurations` can contain null elements:
    > A null entry indicates the corresponding renderer should be disabled.
    
    This wasn't caught by the nullness checker because `ExoPlayerImpl` is
    currently excluded from analysis.
    
    #minor-release
    
    Issue: google#10977
    PiperOrigin-RevId: 508619169
    (cherry picked from commit 5e3cd7a)
    icbaker authored and tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    2794992 View commit details
    Browse the repository at this point in the history
  7. AsynchronousMediaCodecAdapter: surface queueing errors sooner

    The AsynchronousMediaCodecAdapter's queuing thread stores any exceptions
    raised by MediaCodec and re-throws them on the next call to
    queueInputBuffer()/queueSecureInputBuffer(). However, if MediaCodec
    raises and error while queueing, it goes into a failed state and does
    not announce available input buffers. If there is no input available
    input buffer, the MediaCodecRenderer will never call
    queueInputBuffer()/queueSecureInputBuffer(), hence playback is stalled.
    
    This change surfaces the queueing error through the adapter's dequeueing
    methods.
    
    PiperOrigin-RevId: 508637346
    (cherry picked from commit a5f4651)
    christosts authored and tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    aeff51c View commit details
    Browse the repository at this point in the history
  8. Add ad event listeners in the Looper event of the ad manager callback

    #minor-release
    
    PiperOrigin-RevId: 509189206
    (cherry picked from commit e98670e)
    marcbaechinger authored and tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    65f2e16 View commit details
    Browse the repository at this point in the history
  9. Catch IllegalArgumentExceptions in RTSP Response parsing

    In parsing Describe RTSP response messages, IllegalArgumentExceptions are thrown for invalid parameters and values. These exceptions were not caught and crashed the Playback thread. Now these exceptions will be caught and their errors forwarded to the proper error handling listeners.
    
    #minor-release
    
    Issue: google#10971
    PiperOrigin-RevId: 509207881
    (cherry picked from commit 711fa44)
    microkatz authored and tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    89acf3c View commit details
    Browse the repository at this point in the history
  10. Add exception cause to thrown exception

    PiperOrigin-RevId: 509473556
    (cherry picked from commit 08cf6db)
    Googler authored and tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    52d5ff4 View commit details
    Browse the repository at this point in the history
  11. Map PLAYER_STATE_LOADING to STATE_BUFFERING

    #minor-release
    Issue: androidx/media#245
    PiperOrigin-RevId: 510456793
    (cherry picked from commit a231ff4)
    marcbaechinger authored and tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    61a38a1 View commit details
    Browse the repository at this point in the history
  12. Reduce number of calls to AudioTrack.getPlaybackHeadPosition

    This call may cause performance overhead in some situations,
    for example if the AudioTrack needs to query an offload DSP
    for the current position. We don't need to check this multiple
    times per doSomeWork iteration as the value is unlikely to
    change in any meaningful way.
    
    PiperOrigin-RevId: 510957116
    (cherry picked from commit 829b49d)
    tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    0563c43 View commit details
    Browse the repository at this point in the history
  13. Skip rendering multiple frames on the same vsync

    When rendering frames at a rate higher than the screen refresh rate,
    e.g. playing at 8x, the player is releasing multiple frames at the same
    release time (nanos) which are then dropped by the platform. The output
    buffers are available later and as a result MediaCodec cannot keep up
    decoding fast enough.
    
    This change skips releasing multiple video frames on the same vsync
    period and proactivelly drops the frame. The frame is counted as skipped
    rather than dropped to differentiate with frames dropped due to slow
    decoding.
    
    PiperOrigin-RevId: 510964976
    (cherry picked from commit cbb6878)
    christosts authored and tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    5f91e45 View commit details
    Browse the repository at this point in the history
  14. Indicate that SCTE-35 metadata in not supported with HLS

    Issue: google#10992
    
    #minor-release
    
    PiperOrigin-RevId: 510988140
    (cherry picked from commit 57a638a)
    tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    d0c0769 View commit details
    Browse the repository at this point in the history
  15. Use ArrayDeque for pending output stream changes.

    The current logic uses manual array operations to keep track of pending
    changes. Modernize this code by using an ArrayDeque and a data class.
    This also allows to extend the output stream information in the future.
    
    This also fixes a bug where a position reset accidentally assigns a pending
    stream offset instead of keeping the current one.
    
    PiperOrigin-RevId: 511787571
    (cherry picked from commit 4e0babd)
    tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    629e1c5 View commit details
    Browse the repository at this point in the history
  16. Add missing variant to package transformations

    PiperOrigin-RevId: 512002735
    (cherry picked from commit 1ef70cd)
    andrewlewis authored and tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    342ae31 View commit details
    Browse the repository at this point in the history
  17. Do not specify export flags for protected system broadcasts.

    Protected system broadcasts should not specify the export flag.
    Marking them as NOT_EXPORTED breaks sticky broadcasts in some
    cases.
    
    Issue: google#10970
    
    #minor-release
    
    PiperOrigin-RevId: 512020154
    (cherry picked from commit 34b9824)
    tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    29eeca3 View commit details
    Browse the repository at this point in the history
  18. Use more realistic time values for MediaCodecVideoRendererTest

    This test became flaky after google@cbb6878 because some of the
    unrealistic frame times ended up on the same release time.
    
    Using realistic numbers avoids the flakiness.
    
    PiperOrigin-RevId: 512566469
    (cherry picked from commit 13700e0)
    tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    5862fe4 View commit details
    Browse the repository at this point in the history
  19. Correctly update output info if previous stream has been fully rendered

    The output info for a new stream is marked pending until the last
    sample of the previous stream has been processed. However, this fails
    if the previous stream has already been fully processed. We need to
    detect this case explicitly to avoid signalling the output change one
    sample too late.
    
    #minor-release
    
    PiperOrigin-RevId: 512572854
    (cherry picked from commit 39935d7)
    tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    f5c6967 View commit details
    Browse the repository at this point in the history
  20. Add workaround for wrong PerformancePoints on some devices.

    Some devices were reported to have wrong PerformancePoint sets
    that cause 60 fps to be marked as unsupported even though they
    are supported.
    
    Issue: google#10898
    
    #minor-release
    
    PiperOrigin-RevId: 512580395
    (cherry picked from commit 04f0cc9)
    tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    095a0b5 View commit details
    Browse the repository at this point in the history
  21. Ensure output format is updated in sync with stream changes.

    MediaCodecRenderer currently has two independent paths to trigger
    events at stream changes:
     1. Detection of the last output buffer of the old stream to trigger
        onProcessedStreamChange and setting the new output stream offset.
     2. Detection of the first input buffer of the new stream to trigger
        onOutputFormatChanged.
    Both events are identical for most media. However, there are two
    problematic cases:
      A. (1) happens after (2). This may happen if the declared media
         duration is shorter than the actual last sample timestamp.
      B. (2) is too late and there are output samples between (1) and (2).
         This can happen if the new media outputs samples with a timestamp
         less than the first input timestamp.
    
    This can be made more robust by:
     - Keeping a separate formatQueue for each stream to avoid case A.
     - Force outputting the first format after a stream change to
       avoid case B.
    
    Issue: google#8594
    
    #minor-release
    
    PiperOrigin-RevId: 512586838
    (cherry picked from commit a02c8d8)
    tonihei committed Feb 28, 2023
    Configuration menu
    Copy the full SHA
    38639e5 View commit details
    Browse the repository at this point in the history

Commits on Mar 2, 2023

  1. Fix some playback parameter signalling problems.

    Playback parameter signalling can be quite complex because
     (a) the renderer clock often has a delay before it realizes
         that it doesn't support a previously set speed and
     (b) the speed set on media clock sometimes intentionally
         differs from the one surfaced to the user, e.g. during
         live speed adjustment or when overriding ad playback
         speed to 1.0f.
    
    This change fixes two problems related to this signalling:
     1. When resetting the media clock speed at a period transition,
        we don't currently tell the renderers that this happened.
     2. When a delayed speed change update from the media clock is
        pending and the renderer for this media clock is disabled
        before the change can be handled, the pending update becomes
        stale but it still applied later and overrides any other valid
        speed set in the meantime.
    
    Both edge cases are also covered by extended or new player tests.
    
    Issue: google#10882
    
    PiperOrigin-RevId: 512658918
    (cherry picked from commit d363977)
    tonihei committed Mar 2, 2023
    Configuration menu
    Copy the full SHA
    3e7eece View commit details
    Browse the repository at this point in the history
  2. Ensure getPlaybackHeadPosition isn't called if not needed

    Once the value returned from AudioTimestampPoller advances, we
    only need getPlaybackHeadPosition to sample sync params and
    verify the returned timestamp. Both of these happen less often
    and we can avoid calling getPlaybackHeadPosition if we don't
    actually need it.
    
    PiperOrigin-RevId: 512882170
    (cherry picked from commit 4cf7d3c)
    tonihei committed Mar 2, 2023
    Configuration menu
    Copy the full SHA
    996d660 View commit details
    Browse the repository at this point in the history
  3. Update translations

    #minor-release
    
    PiperOrigin-RevId: 512890813
    (cherry picked from commit 13a86b3)
    tonihei committed Mar 2, 2023
    Configuration menu
    Copy the full SHA
    c23010d View commit details
    Browse the repository at this point in the history
  4. Minor change in ForwardingPlayer javadoc

    #minor-release
    
    PiperOrigin-RevId: 512897269
    (cherry picked from commit 48047cf)
    christosts authored and tonihei committed Mar 2, 2023
    Configuration menu
    Copy the full SHA
    bfc12ef View commit details
    Browse the repository at this point in the history
  5. Remove @see tags with <a> tags

    These are not supported by Dackka
    
    #minor-release
    
    PiperOrigin-RevId: 513176533
    (cherry picked from commit ef5a1ce)
    icbaker authored and tonihei committed Mar 2, 2023
    Configuration menu
    Copy the full SHA
    a834d05 View commit details
    Browse the repository at this point in the history
  6. Merge pull request google#255 from mayurk2:use_edts_offset_if_it_is_f…

    …or_entire_file
    
    PiperOrigin-RevId: 513213229
    (cherry picked from commit d2ba290)
    tonihei committed Mar 2, 2023
    Configuration menu
    Copy the full SHA
    d3ef801 View commit details
    Browse the repository at this point in the history
  7. Extend documentation for ForwardingPlayer

    Add some additional information which methods to override
    for available commands.
    
    #minor-release
    
    PiperOrigin-RevId: 513251805
    (cherry picked from commit a64a9e6)
    christosts authored and tonihei committed Mar 2, 2023
    Configuration menu
    Copy the full SHA
    d5ae16c View commit details
    Browse the repository at this point in the history
  8. Update migration script to 1.0.0-rc02/2.18.4

    PiperOrigin-RevId: 513482096
    (cherry picked from commit b634005)
    tonihei committed Mar 2, 2023
    Configuration menu
    Copy the full SHA
    4298cfa View commit details
    Browse the repository at this point in the history
  9. Bump version numbers to Media3 1.0.0-rc02 and ExoPlayer 2.18.4

    #minor-release
    
    PiperOrigin-RevId: 513488487
    (cherry picked from commit 3b16231)
    tonihei committed Mar 2, 2023
    Configuration menu
    Copy the full SHA
    c641307 View commit details
    Browse the repository at this point in the history
  10. Update Javadoc for 2.18.4

    PiperOrigin-RevId: 513516267
    (cherry picked from commit 658b503)
    tonihei committed Mar 2, 2023
    Configuration menu
    Copy the full SHA
    05ac6ab View commit details
    Browse the repository at this point in the history
  11. Fix lint-baseline.xml for latest UI translations

    #minor-release
    
    PiperOrigin-RevId: 513533248
    (cherry picked from commit af6807d)
    tonihei committed Mar 2, 2023
    Configuration menu
    Copy the full SHA
    c459b08 View commit details
    Browse the repository at this point in the history
  12. Update release notes for ExoPlayer 2.18.4

    #minor-release
    
    PiperOrigin-RevId: 513555559
    (cherry picked from commit 4f68f89)
    tonihei committed Mar 2, 2023
    Configuration menu
    Copy the full SHA
    86013bd View commit details
    Browse the repository at this point in the history

Commits on Mar 3, 2023

  1. Configuration menu
    Copy the full SHA
    bc35372 View commit details
    Browse the repository at this point in the history

Commits on Mar 16, 2023

  1. Configuration menu
    Copy the full SHA
    7efc278 View commit details
    Browse the repository at this point in the history

Commits on Mar 21, 2023

  1. chore: update the yaml file

    guoen21 committed Mar 21, 2023
    Configuration menu
    Copy the full SHA
    f10bf19 View commit details
    Browse the repository at this point in the history