1. 10 Dec, 2021 7 commits
    • Do not allow null for DefaultAudioSink capabilities · 2ad9a2e6
      Null was equivalent to DEFAULT_AUDIO_CAPABILITIES.
      In favor of null safety, remove the null state.
      
      PiperOrigin-RevId: 415037404
      krocard committed
    • Add support for showing debug info during transformation · 9676d548
      Being able to see the output of the GL pipeline is useful for debugging. For
      example, when we previously saw flakiness it would have been useful to be able
      to tell quickly whether the output looked wrong without needing to run a
      transformation to the end then inspect the output file, and when working on
      support for HDR editing it's useful to be able to do manual testing on devices
      that don't support HDR encoding (but do support decoding/processing it with
      GL).
      
      Also change the progress indicator to be linear as this looks better in the
      demo app when shown next to the debug preview.
      
      PiperOrigin-RevId: 414999491
      andrewlewis committed
    • Don't sort decoders by format support in supportsFormat · 27f905f5
      This is a no-op change that updates supportsFormat to use the
      decoder list before it's reordered by format support. Instead,
      supportsFormat iterates through the decoders listed in their
      original priority order as specified by the MediaCodecSelector.
      The end result is identical.
      
      This is necessary groundwork for a subsequent change that will
      indicate in Capabilities whether the decoder that suppports the
      format is the primary one as specified by the MediaCodecSelector
      (i.e., the one at index=0 in the lists that are now used).
      
      Issue: google/ExoPlayer#9565
      PiperOrigin-RevId: 414971986
      olly committed
    • Fix FFWD/RWND color in night mode · dff04b34
      The color set via textAppearance is overridden by any non-null
      textColor set directly on the style. We always want the specific
      properties the textAppearance specifies, so set them directly to
      prevent them from being overridden.
      
      #minor-release
      Issue: google/ExoPlayer#9765
      PiperOrigin-RevId: 414967143
      olly committed
    • Support IMA DAI streams for HLS · a92e48e5
      PiperOrigin-RevId: 414804513
      bachinger committed
    • Rename `DecoderCounters#inputBufferCount` to `queuedInputBufferCount` · eaa4ab59
      This more accurately reflects the value stored in this field.
      
      PiperOrigin-RevId: 414762892
      ibaker committed
    • Configure MediaCodec in API 32+ to always output 99 channels · e5c59846
      Configure MediaCodec in API 32+ to always output 99 channels
      so that we use the audio is spatialized, if the platform can apply
      spatialization to it.
      
      In a follow-up change, the output channel count will be set based on the
      device's spatialization capabilities.
      
      PiperOrigin-RevId: 414751543
      christosts committed
  2. 08 Dec, 2021 5 commits
    • Add a builder to `DefaultAudioSink` · 97206b9c
      `DefaultAudioSink` already has 3 telescoping
      constructors and an other one would be have been
      needed to add a buffer size tuning option.
      
      PiperOrigin-RevId: 414703366
      krocard committed
    • Fix how drop-to-keyframe events are recorded in `DecoderCounters` · 0f48dfc9
      The existing code creates an imbalance between `inputBufferCount` and
      `droppedBufferCount` by adding 'dropped source buffers' to
      `droppedBufferCount` but not to `inputBufferCount`. This results in
      assertion failures in `DashTestRunner`.
      
      PiperOrigin-RevId: 414672175
      ibaker committed
    • Migrate usages of Timeline#getPeriodPosition to getPeriodPositionUs · 5c2f6186
      #minor-release
      
      PiperOrigin-RevId: 414671861
      ibaker committed
    • Retry creating a MediaCodec instance in MediaCodecRenderer · 07352a45
      It's been observed that some devices fail when releasing a secure codec
      attached to a surface and immediately trying to create a new codec
      (secure or insecure) attached to the same surface. This change catches
      all exceptions thrown during codec creation, sleeps for a short time,
      and then retries the codec creation. This is observed to fix the problem
      (we believe this is because it allows enough time for some background
      part of the previous codec release operation to complete).
      
      This change should have no effect on the control flow when codec
      creation succeeds first time. It will introduce a slight delay when
      creating the preferred codec fails (while we sleep and retry), which
      will either delay propagating a permanent error or attempting to
      initialize a fallback decoder. We can't avoid the extra delay to
      instantiating the fallback decoder because we can't know whether we
      expect the second attempt to create the preferred decoder to succeed or
      fail. The benefit to always retrying the preferred decoder creation
      (fixing playback failures) outweighs the unfortunate additional delay
      to instantiating fallback decoders.
      
      Issue: google/ExoPlayer#8696
      #minor-release
      PiperOrigin-RevId: 414671743
      ibaker committed
    • GL: Document ambiguous parameter names in comments. · fcdb96f0
      Also, made a few other refactoring changes for clarity. No functional changes
      intended.
      
      PiperOrigin-RevId: 414487729
      huangdarwin committed
  3. 07 Dec, 2021 5 commits
  4. 06 Dec, 2021 13 commits
  5. 02 Dec, 2021 10 commits
    • Prohibit duplicate TrackGroups in TrackGroupArray · 8c90ba5d
      Allowing duplicate groups caused some other code working with the
      array to use reference equality comparison. This is error-prone,
      easily forgotten (e.g. when using the TrackGroups in a map) and
      causes bugs when TrackGroups are serialized to disk or to another
      process.
      
      All TrackGroups created by ExoPlayer are already unique and custom
      code creating TrackGroupArrays with identical groups can easily
      distringuish them by adding an id to each group.
      
      Issue: google/ExoPlayer#9718
      PiperOrigin-RevId: 413617005
      tonihei committed
    • Update javadoc to reflect removal of WebM container option · 7e82225f
      It seems fine to remove the documentation about the WebM case now we are only supporting unfragmented MP4, so that new users coming to this API aren't confused about how to set the container MIME type.
      
      PiperOrigin-RevId: 413611472
      andrewlewis committed
    • Add optional id to TrackGroup. · d53d51d5
      This allows to give TrackGroups an identifier. The underlying goal is
      to provide a way to make otherwise identical TrackGroups
      distinguishable.
      
      Also set this id in all internal sources that may produce identical
      TrackGroups in certain edge cases.
      
      Issue: google/ExoPlayer#9718
      PiperOrigin-RevId: 413430719
      tonihei committed
    • Transformer GL: Create setTransformationMatrix(). · 0578b2e4
      Allows a transformation matrix to be input into Transformer,
      to apply vertex transformations like cropping, rotation,
      and other transformations built into android.graphics.Matrix.
      
      Not building out into a VertexTransformation class yet, as
      that class structure wouldn't make sense until we can modify
      resolution, per TODOs.
      
      PiperOrigin-RevId: 413384409
      huangdarwin committed
    • Increase transformer min API version to 21 · 34975a7a
      This will remove the need to implement compat code handling very old API
      versions where some symbols are not available, and it reduces the burden of
      dealing with media framework issues around concurrent codec usage that are
      worse on older API versions. Top apps that we've surveyed as potential users
      for transformer library features are using API 21 or later.
      
      PiperOrigin-RevId: 413341540
      andrewlewis committed
    • Fix 1 ErrorProneStyle finding · 0fdbff43
      PiperOrigin-RevId: 413188534
      olly committed
    • Flip input buffer even if the end of stream is reached. · 775983c3
      Sometimes the empty end of stream buffer has a non-zero
      data limit. Calling flip first, resets the limit to the
      position which is zero in these cases.
      
      PiperOrigin-RevId: 413156455
      hschlueter committed
    • Add unit test for `FrameEditor` · 5694a07a
      The test extracts and decodes the first video frame in the test media, renders it to the frame editor's input surface and then processes data. It then reads back the output from the frame editor, converts it to a bitmap and then compares that with a 'golden' bitmap (which is just the same as the test media's first video frame).
      
      PiperOrigin-RevId: 413131811
      andrewlewis committed
    • Rollback of https://github.com/google/ExoPlayer/commit/f790d105b76cb92ac31cf0ab6c9557a41b4bc15b · ce80fe53
      *** Original commit ***
      
      Remove usage of @ForOverride.
      
      Fixes the gradle compilation failures.
      
      Gradle dependencies need revising if we want to be using this, as
      checkerframework is ahead of their latest version, such that we
      can't compile.
      
      ***
      
      PiperOrigin-RevId: 412901827
      ibaker committed
    • Make use of try with-resources to auto close file. · f5789b74
      PiperOrigin-RevId: 412901581
      samrobinson committed