1. 10 Nov, 2022 6 commits
    • Set targetSdkVersion of main demo app to 29 · 386e2aff
      #minor-release
      
      PiperOrigin-RevId: 487479366
      (cherry picked from commit 09bee98b)
      christosts committed
    • Fix Dackka parameter name error in `Gav1Decoder` and `VpxDecoder` · 77c8875b
      These aren't caught by presubmit because the classes are annotated
      `@VisibleForTesting` and are therefore stripped out by Metalava. However
      Metalava doesn't run when we're generating javadoc for real.
      
      #minor-release
      
      PiperOrigin-RevId: 487476260
      (cherry picked from commit 14e23d34)
      ibaker committed
    • Fix Dackka/Metalava errors in test_utils module · 7f706c8a
      This involves reducing the visibility of methods/constructors that
      are already unusable outside the `androidx.media3.test.utils` package.
      
      #minor-release
      
      PiperOrigin-RevId: 487473005
      (cherry picked from commit ca8de0e4)
      ibaker committed
    • Fix Dackka/Metalava errors in av1, flac, ffmpeg, midi, and opus modules · 925e7330
      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
      (cherry picked from commit 1cd488ac)
      ibaker committed
    • Fix Dackka/Metalava errors in the HLS and RTSP modules · 2540dee1
      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
      (cherry picked from commit 9041d7b9)
      ibaker committed
    • Fix Dackka/Metalava errors in the ExoPlayer module · 01f30f0b
      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
      (cherry picked from commit 10c4a4df)
      ibaker committed
  2. 09 Nov, 2022 6 commits
  3. 08 Nov, 2022 2 commits
  4. 07 Nov, 2022 3 commits
    • Move muxer initialization off application thread · 194a32c0
      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 b10b4e6d)
      sheenachhabra committed
    • HDR: Set decoder codec profile and level if available. · 09698192
      This should be necessary to ensure decoders see fewer errors.
      
      Setting this resulted in removing native_dequeueOutputBuffer errors on OMX.MTK decoders for in-app tone mapping prototyping.
      
      PiperOrigin-RevId: 486715941
      (cherry picked from commit 0b7e5bba)
      huangdarwin committed
    • HDR: Update test FileUtil to handle null ColorInfo. · 9ad56508
      PiperOrigin-RevId: 486706595
      (cherry picked from commit 0b53c934)
      huangdarwin committed
  5. 04 Nov, 2022 1 commit
  6. 03 Nov, 2022 4 commits
  7. 02 Nov, 2022 1 commit
  8. 01 Nov, 2022 4 commits
  9. 31 Oct, 2022 3 commits
  10. 28 Oct, 2022 3 commits
  11. 27 Oct, 2022 3 commits
    • Add test for muxer watchdog timer · d6520202
      PiperOrigin-RevId: 484298261
      (cherry picked from commit 42057cc9)
      kimvde committed
    • Make adding ad live breaks more robust · f06e8ee7
      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
      (cherry picked from commit 136addf6)
      bachinger committed
    • Add muxer timer to detect when generating an output sample is too slow · 94f3b1bf
      This allows to throw when the Transformer is stuck or is too slow.
      
      PiperOrigin-RevId: 484179037
      (cherry picked from commit 376ee77f)
      kimvde committed
  12. 26 Oct, 2022 3 commits
    • Add AudioProcessor.AudioFormat equals method. · 861cd9a0
      PiperOrigin-RevId: 483983486
      (cherry picked from commit c9585d01)
      samrobinson committed
    • Mute input video player in transformer demo · 81b3e404
      PiperOrigin-RevId: 483969411
      (cherry picked from commit 8181b3c6)
      Googler committed
    • Fix `Cea608Decoder` handling of service switch commands in field 2 · 6b3bec86
      From ANSI-CTA-608-E R-2014 section 8.4:
      > When closed captioning is used on line 21, field 2, it shall conform
      > to all of the applicable specifications and recommended practices as
      > defined for field 1 services with the following differences:
      > 1. The non-printing character of the miscellaneous control-character
      >    pairs that fall in the range of 0x14, 0x20 to 0x14, 0x2F in field 1,
      >    shall be replaced with 0x15, 0x20 to 0x15, 0x2F when used in field
      >    2.
      > 2. The non-printing character of the miscellaneous control-character
      >    pairs that fall in the range of 0x1C, 0x20 to 0x1C, 0x2F in field
      >    1, shall be replaced with 0x1D, 0x20 to 0x1D, 0x2F when used in
      >    field 2.
      
      This basically means that `cc1=0x15` in field 2 should be interpreted as
      `cc1=0x14` in field 1, and same for `0x1D -> 0x1C`.
      
      The `isMiscCode`  method above already handles this by ignoring the LSB
      (the only difference between `0x14` and `0x15`, and `0x1C` and `0x1D`)
      by AND-ing with `0xF6` instead of `0xF7`. This change uses the same
      trick in `isServiceSwitchCommand`.
      
      Issue: google/ExoPlayer#10666
      #minor-release
      PiperOrigin-RevId: 483927506
      (cherry picked from commit 7c6d492f)
      ibaker committed
  13. 25 Oct, 2022 1 commit