1. 21 Jul, 2022 8 commits
    • Remove unused argument · e8b5aad3
      PiperOrigin-RevId: 461830378
      bachinger committed
    • Use Futures for MediaSession command queue instead of Runnables · dee80788
      Some commands may be asynchronous and subsequent commands need to
      wait for them to complete before running. This change updates the
      queue to use (and listen to) Futures instead of calling Runnables
      directly. The commands are currently still added as Runanbles
      though, so this change is a no-op.
      
      Also moves the permission check in MediaSessionImpl to before
      queueing the command because the permission should be check at
      the time of calling the method.
      
      When executing the comamnds in the queue, we need to be careful
      to avoid recursion in the same thread (which happens when both
      the Future is immediate and running on the correct thread already).
      To avoid recursion, we detect this case and loop the commands
      instead.
      
      Issue: androidx/media#85
      PiperOrigin-RevId: 461827264
      tonihei committed
    • HDR: Use FP16 color representation for texture processors. · ba9c9bb9
      * Introduced `useHdr` for `GlEffect#toGlTextureProcessor`, so
        `TextureProcessor` implementations can decide how to handle HDR.
      * Creating FP16 color textures for HDR input.
      
      Tested via manual testing, adding a no-op GlEffectWrapper to the transformation to
      force use of intermediate textures, adding a linear ramp to the fragment shader,
      and trying to ascertain that there's a real reduction in posterization when
      switching from 4-bit to 8-bit unsigned bytes, and again from 8-bit unsigned bytes
      to 16-bit floating point.
      
      PiperOrigin-RevId: 461613117
      huangdarwin committed
    • HDR: Throw when unexpected color transfer encountered. · 9f7a159b
      This may happen when a containers' color transfer incorrectly does not match
      the video's color transfer.
      
      An example of a file with such a mismatch is the current Transformer demo HDR10
      sample file.
      
      Manually tested by confirming that no errors are emitted for SDR and HLG sample
      files, and that errors are emitted for our incorrect HDR10 sample file.
      
      PiperOrigin-RevId: 461583532
      huangdarwin committed
    • Implement getCurrentTracks in MediaController · 9a895cd1
      After this change the current tracks are sent to the controller as part of
      `PlayerInfo` and call `Listener.onTracksChanged()` in case of a change in tracks.
      
      PiperOrigin-RevId: 461578695
      bachinger committed
    • Use the current overrides of the player as preset · 5c2aabca
      Issue: google/ExoPlayer#10429
      PiperOrigin-RevId: 461577039
      bachinger committed
    • Make minor fixes to HDR handling · 604ab7fc
      - Update profile selection logic to pick an HDR-compatible profile when doing HDR editing on H.264/AVC videos.
      - Handle doing the capabilities check for all MIME types that support HDR (not just H.265/HEVC).
      - Fix a bug where we would pass an HDR input color format to the encoder when using tone-mapping.
      - Tweak how `EncoderWrapper` works so decisions at made at construction time.
      
      Manually tested cases:
      - Transformation of an SDR video.
      - Transformation of an HDR video to AVC (which triggers fallback/tone-mapping on a device that doesn't support HDR editing for AVC).
      - Transformation of an HDR video with HDR editing.
      
      PiperOrigin-RevId: 461572973
      andrewlewis committed
    • Update demo HDR10 video URL · 794e366b
      The old URL doesn't correctly signal the HDR10 color info in the container.
      
      The new URL signals ST2084 (PQ) transfer function and BT.2020 color space as expected.
      
      PiperOrigin-RevId: 461560107
      andrewlewis committed
  2. 15 Jul, 2022 3 commits
  3. 13 Jul, 2022 15 commits
  4. 12 Jul, 2022 8 commits
  5. 07 Jul, 2022 6 commits
    • Add tests for extracting MP4 with large bitrates · 05e728a3
      Also added the test to `MP4PlaybackTest`.
      
      PiperOrigin-RevId: 459492188
      rohks committed
    • Move Encoder quality API to VideoEncoderSettings. · 91f17777
      Some other minor nits and adjustments to the API logic.
      
      PiperOrigin-RevId: 459490431
      samrobinson committed
    • Add missing Nullable annotation · cb87b743
      PiperOrigin-RevId: 459485334
      christosts committed
    • Don't block AudioTrack when waiting for previous release · a83ab05a
      We wait until a previous AudioTrack has been released before
      creating a new one. This is currently done with a thread
      block operation, which may cause ANRs in the extreme case
      when someone attempts to release the player while this is
      still blocked.
      
      The problem can be avoided by just returning false from
      DefaultAudioSink.handleBuffer to try again until the previous
      AudioTrack is released.
      
      Reproduction steps to force the issue:
      1. Add Thread.sleep(10000); to the AudioTrack release thread.
      2. Add this to the demo app:
          private int positionMs = 0;
      
          Handler handler = new Handler();
          handler.post(new Runnable() {
            @Override
            public void run() {
              player.seekTo(positionMs++);
              if (positionMs == 10) {
                player.release();
              } else {
                handler.postDelayed(this, 1000);
              }
            }
      3. Observe Player release timeout exception.
      
      These steps can't be easily captured in a unit test as we can't
      artifically delay the AudioTrack release from the test.
      
      Issue: google/ExoPlayer#10057
      PiperOrigin-RevId: 459468912
      tonihei committed
    • HDR: Remove ColorInfo.SDR constant · 7078ce31
      The SDR constant also specified a color space and range, in addition to
      C.COLOR_TRANSFER_SDR. However, it turns out that SDR videos may use different color
      space and range values, so following prior ExoPlayer conventions to have `null`
      mean "generic SDR" is preferable here.
      
      PiperOrigin-RevId: 459296746
      huangdarwin committed
    • Fix incorrect link tags · 87adb88f
      PiperOrigin-RevId: 459215618
      bachinger committed