1. 15 Jun, 2022 16 commits
  2. 14 Jun, 2022 4 commits
  3. 13 Jun, 2022 5 commits
  4. 09 Jun, 2022 15 commits
    • Check targetSdkVersion for frame dropping workaround. · a105d033
      Based on
      https://developer.android.com/reference/android/media/MediaCodec#using-an-output-surface,
      frame dropping behaviour depends on the target SDK version.
      After this change transformer will only use
      MediaFormat#KEY_ALLOW_FRAME_DROP if both the target and system SDK
      version are at least 29 and default to its pre 29 behaviour where each
      decoder output frame must be processed before a new one is rendered
      to prevent frame dropping otherwise.
      
      Also remove deprecated Transformer.Builder constructor without a
      context and the context setter.
      
      PiperOrigin-RevId: 453971097
      hschlueter committed
    • Make GlUtil.GlException checked and remove flag to disable it. · cc1f32d0
      Transformer always enabled glAssertionsEnabled, so there should
      be no functional change.
      
      ExoPlayer previously disabled glAssertionsEnabled, so GlUtil logged
      GlExceptions instead of throwing them. The GlExceptions are now
      caught and logged by the callers so that there should also be no
      functional change overall.
      
      This change also replaces EGLSurfaceTexture#GlException with
      GlUtil#GlException.
      
      PiperOrigin-RevId: 453963741
      hschlueter committed
    • DefaultTrackSelector: Constrain audio channel count · e2f0fd76
      The track selector will select multi-channel formats when those can be
      spatialized, otherwise the selector will prefer stereo/mono audio
      tracks. When the device supports audio spatialization (Android 12L+),
      the DefaultTrackSelector will monitor for changes in the platform
      Spatializer and trigger a new track selection upon a
      Spatializer change event.
      
      Devices with a `television` UI mode are excluded from audio channel
      count constraints.
      
      #minor-release
      
      PiperOrigin-RevId: 453957269
      christosts committed
    • Fix bug: playback is frozen with HLS chunkless preparation · 9221eeb2
      This change fixes a bug where the player is frozen with HLS chunkless
      preparation because the audio stream wrappers are not marked as master
      timestamp sources before preparation.
      
      #minor-release
      
      PiperOrigin-RevId: 453941815
      christosts committed
    • Ensure re-encode on performance tests · 12d775f0
      PiperOrigin-RevId: 453933854
      claincly committed
    • Add session URI to Intent used with the notification · 8b592fc7
      The service handles three different types of `Intents`. Custom command and media
      command Intents created by the library and media button event Intents from other
      sources.
      
      Media commands from the library as well as from external sources have the action
      set to `android.intent.action.MEDIA_BUTTON`. If the data URI is set and can be
      used to identify a session then it is a library Intent. If the Intent is coming
      from an external KeyEvent, the service implementation is asked which session to use
      by calling `onGetSession(controllerInfo)` with the controller info being an
      anonymous legacy controller info.
      
      Intents representing a custom command are always coming from the library and hence
      always have a data URI.
      
      Issue: androidx/media#82
      PiperOrigin-RevId: 453932972
      bachinger committed
    • Merge pull request #69 from ittiam-systems:rtp_amr_test · 58f7ac25
      PiperOrigin-RevId: 453905355
      Marc Baechinger committed
    • Add COMMAND_SET_MEDIA_ITEM to Player.Commands · 5333c67d
      Some Player implementations have no playlist capability but can still
      set a MediaItem for playback. Examples are a MediaController connected
      to a legacy MediaSession, ExoPlayer up to 2.12 or MediaPlayer.
      
      To indicate this capability, we need an allowed command in addition
      to COMMAND_CHANGE_MEDIA_ITEMS that just allows to set a single item
      that replaces everything that is currently played.
      
      #minor-release
      
      PiperOrigin-RevId: 453879626
      tonihei committed
    • Avoid using ConcurrentHashMap · d506c709
      Use Collections.synchronizedSet() instead of creating a set from a
      ConcurrentHashMap because ConcurrentHashMap has a bug in APIs 21/22
      that can result in lost updates.
      
      PiperOrigin-RevId: 453696565
      christosts committed
    • Transformer GL: Split Presentation and Crop. · c5b881e0
      This removes the prior restriction of needing to remember not to crop and set aspect ratio in the same Presentation.Builder, and makes each class a bit more targeted.
      
      This is partially made feasible by the past work to merge consecutive
      MatrixTransformations into a single MatrixTransformationFrameProcessor, which
      ensures that there's no loss in quality between successive MatrixTransformations.
      
      PiperOrigin-RevId: 453660582
      huangdarwin committed
    • Audio passthrough: handle unset audio format channel count · 86973382
      With HLS chunkless preparation, audio formats may have no value
      for channel count. In this case, the DefaultAudioSink will either query
      the platform for a supported channel count (API 29+) or assume a max
      channel count based on the encoding spec in order to decide whether the
      audio format can be played with audio passthrough.
      
      Issue: google/ExoPlayer#10204
      
      #minor-release
      
      PiperOrigin-RevId: 453644548
      christosts committed
    • Mention alpha for matrix transformation background color. · cdb80387
      PiperOrigin-RevId: 453633920
      hschlueter committed
    • Implement default GlTextureProcessor in SingleFrameGlTextureProcessor. · 457f4461
      SingleFrameGlTextureProcessor is now an abstract class containing a
      default implementation of the more flexible GlTextureProcessor interface
      while still exposing the same simple abstract methods for single frame
      processing it previously did.
      
      FrameProcessorChain and GlEffect will be changed to use
      GlTextureProcessor in follow-ups.
      
      PiperOrigin-RevId: 453633000
      hschlueter committed
    • Forward legacy controller onPlay/PrepareFromXY calls to onAddMediaItems · bd126ec5
      These legacy callbacks are currently forwarded to onSetMediaUri which
      will be removed in the future.
      
      Also make sure to only call player.prepare/play after the items have
      been set.
      
      The calls to onAddQueueItem are also forwarded to onAddMediaItems to
      actually allow a session to resolve these items to playable media, which
      wasn't possible so far.
      
      PiperOrigin-RevId: 453625204
      tonihei committed
    • Clarify that `ShuffleOrder` must be consistent in both directions · 4a6f431f
      #minor-release
      
      PiperOrigin-RevId: 453622964
      ibaker committed