1. 10 Nov, 2022 12 commits
    • Fix Dackka/Metalava errors in av1, flac, ffmpeg, midi, and opus modules · e9ddfa53
      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
      ibaker committed
    • Fix Dackka/Metalava errors in the HLS and RTSP modules · dbfc0cc7
      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
      ibaker committed
    • Fix Dackka/Metalava errors in the ExoPlayer module · 7905744a
      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
      ibaker committed
    • HDR: Implement ForceInterpretHdrVideoAsSdr · 2ff5dab0
      Also, document that we tone map when no HDR features are explicitly set
      
      PiperOrigin-RevId: 487310971
      huangdarwin committed
    • Set HDR color info on FrameworkMuxer · 3c74e076
      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
      claincly committed
    • Wait with PlayerInfo updates until all pending operations are done · 0b4ba3e3
      Accepting a PlayerInfo while the MediaController is masking its state
      means we are reverting all masking changes we've made earlier. This
      only makes sense if the update already contains the masked operation.
      If multiple operations are in flight (or are sent from the session
      while they are in flight), we need to wait until all of them are
      handled before accepting new updates.
      
      In cases where a new update from the session excludes the Timeline
      and the masked state is incompatible with the new update, we also
      risk an exception if we accept the update too early.
      
      PiperOrigin-RevId: 487266899
      tonihei committed
    • Change UnsupportedEncodingException to IllegalArgumentException · 818bf4a2
      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
      sheenachhabra committed
    • MediaController: Add missing event flags (2/2) · c403b4ce
      This is the follow-up commit where the onEvents callback
      raised by MediaController contains the missing events, for the
      case where MediaController is connected to a legacy MediaSession.
      
      #minor-release
      
      PiperOrigin-RevId: 487231996
      christosts committed
    • Add ExoPlayerAssetLoader · 95f37b4d
      Just move some code around for now, to start setting up the overall
      structure.
      
      PiperOrigin-RevId: 487229329
      kimvde committed
    • Merge Issue: google/ExoPlayer#10762: Fix ffmpeg jni wrapper returning invalid result codes · a1c04cd4
      Imported from GitHub PR Issue: google/ExoPlayer#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/ExoPlayer#10760
      Merge 82ceeb77d6df71f5ffb0474db66a36fd6eb8e51a into 972e169b
      COPYBARA_INTEGRATE_REVIEW=go/exoghi/10762 from Tolriq:ffmpeg_error_code 82ceeb77d6df71f5ffb0474db66a36fd6eb8e51a
      PiperOrigin-RevId: 487189910
      Tolriq committed
    • Move slow mo logic to sample pipelines · 714e5565
      This is to avoid having this logic in TransformerInternal once it is
      added.
      
      PiperOrigin-RevId: 487159941
      kimvde committed
    • Set targetSdkVersion of main demo app back to 29 · c40cee67
      #minor-release
      
      PiperOrigin-RevId: 486969194
      bachinger committed
  2. 08 Nov, 2022 21 commits
  3. 31 Oct, 2022 7 commits
    • Bump appTargetSDKVersion to 33 · 79e67dea
      #minor-release
      
      PiperOrigin-RevId: 484514123
      bachinger committed
    • Disable the muxer watchdog if all tracks have ended. · bcc2fe40
      PiperOrigin-RevId: 484512661
      samrobinson committed
    • Upgrade dackka and fix some generation errors · 3069d813
      #minor-release
      
      PiperOrigin-RevId: 484483080
      andrewlewis committed
    • Add test for muxer watchdog timer · 17303341
      PiperOrigin-RevId: 484298261
      kimvde committed
    • Set BROWSER_SERVICE_EXTRAS_KEY_SEARCH_SUPPORTED automatically · 4c9ca8fa
      This root extra needs to be set by apps manually in media1 and we
      can do that automatically in Media3 based on the available session
      commands.
      
      #minor-release
      
      PiperOrigin-RevId: 484286833
      bachinger committed
    • Use MediaBrowserCompat.rootHints as connections hints · 21022c77
      In Media3 there is the useful concept of connection hints that a
      client can set when building the session and that are sent to the
      service and passed to the `Callback.onConnect()` method when the
      browser connects.
      
      These connection hints are then included in the `ControllerInfo`
      object that later will be passed to every callback method and the
      implementor can then take decisions specific to these connection
      hints.
      
      These connection hints are not available in media1. However, when
      an app creates a `MediaBrowserCompat` object, the constructor takes
      a rootHint object that is sent to
      `MediaBrowserServiceCompat.onGetRoot()`.
      
      This change uses the browser rootHints as the connection hints when
      creating the `ControllerInfo` for legacy browsers and makes them
      available to the `MediaLibrarySession.Callback` domain methods in
      the same way as connection hints of a Media3 browser.
      
      PiperOrigin-RevId: 484220748
      bachinger committed
    • Make adding ad live breaks more robust · 64e9e888
      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
      bachinger committed