1. 25 Jan, 2023 1 commit
    • Changed decoder list sort to order by functional support of format · 537f8b26
      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.
      
      Unit tests 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/ExoPlayer#10604
      PiperOrigin-RevId: 487779284
      (cherry picked from commit fab66d97)
      michaelkatz committed
  2. 23 Nov, 2022 2 commits
  3. 22 Nov, 2022 4 commits
  4. 17 Nov, 2022 9 commits
  5. 10 Nov, 2022 13 commits
  6. 09 Nov, 2022 8 commits
    • HDR: Implement ForceInterpretHdrVideoAsSdr · 45f6c24b
      Also, document that we tone map when no HDR features are explicitly set
      
      PiperOrigin-RevId: 487310971
      (cherry picked from commit 2ff5dab0)
      huangdarwin committed
    • Set HDR color info on FrameworkMuxer · e57838d7
      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 3c74e076)
      claincly committed
    • Wait with PlayerInfo updates until all pending operations are done · dddc6026
      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
      (cherry picked from commit 0b4ba3e3)
      tonihei committed
    • Change UnsupportedEncodingException to IllegalArgumentException · bc3aef08
      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 818bf4a2)
      sheenachhabra committed
    • MediaController: Add missing event flags (2/2) · 707c2d89
      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
      (cherry picked from commit c403b4ce)
      christosts committed
    • Add ExoPlayerAssetLoader · c89ceb87
      Just move some code around for now, to start setting up the overall
      structure.
      
      PiperOrigin-RevId: 487229329
      (cherry picked from commit 95f37b4d)
      kimvde committed
    • Merge Issue: google/ExoPlayer#10762: Fix ffmpeg jni wrapper returning invalid result codes · d262f760
      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
      
      (cherry picked from commit a1c04cd4)
      Tolriq committed
    • Move slow mo logic to sample pipelines · 59769552
      This is to avoid having this logic in TransformerInternal once it is
      added.
      
      PiperOrigin-RevId: 487159941
      (cherry picked from commit 714e5565)
      kimvde committed
  7. 08 Nov, 2022 2 commits
  8. 07 Nov, 2022 1 commit
    • Move muxer initialization off application thread · 64c87a5f
      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 eb357654)
      sheenachhabra committed