1. 14 Feb, 2023 3 commits
    • Handle when some MediaItems require transcoding but others don't · 07ff4816
      - For single-asset, the behavior stays the same. Transcode if and only
        if it's necessary,
      - For constrained multi-asset, always transcode, except if the setter to
        transmux is set. This is to avoid failing if a MediaItem that doesn't
        require transcoding is followed by a MediaItem that does require
        transcoding.
      
      PiperOrigin-RevId: 508097798
      kimvde committed
    • Fix tests affected by Robolectric's constructor visibility bug · 287cc3a5
      Previously, Robolectric's instrumentation updated all constructors to be
      public. This caused two main types of problems:
      
      1) When non-public constructors were made public and added to the Android API,
      Robolectric allowed tests to incorrectly use the constructors on older SDK
      levels (where they were non-public). This most commonly occurs for
      AccessibiltyEvent and AccessibilityNodeInfo.
      
      2) When reflection was used to instantiate classes that were instrumented by
      Robolectric, all constructors were accessible.
      
      Fix issues across Google3 Robolectric tests that were affected by this issue.
      A forthcoming change will fix the instrumentation in Robolectric to prevent
      this type of issue from occurring.
      
      Tested:
          TAP --sample ran all affected tests and none failed
          http://test/OCL:507861075:BASE:507805409:1675803313108:f2128fa4
      PiperOrigin-RevId: 508087822
      Googler committed
    • Move AudioBoxesTest.java to third_party/.../muxer/... · 1a0b75e7
      PiperOrigin-RevId: 508062795
      sheenachhabra committed
  2. 08 Feb, 2023 32 commits
  3. 02 Feb, 2023 5 commits
    • Fix end of stream handling for previewing. · 976e3c72
      Before this CL, the `renderedLastFrame` flag is not set if the last frame is released immediately (force render), or when it's dropped.
      
      PiperOrigin-RevId: 506358626
      claincly committed
    • Report flushing completed after all pending frames are decoded. · 77cc2524
      With the current ExtTexMgr,
      
      it can happen that
      
      - `x` frames are registered, but haven't arrived yet
      - flush
        - need to drop `x` frames when they arrive on SurfaceTexture
        - status is reset to 0 pending, 0 available, drop `x` when frames arrive
      - register one frame
        - status is set to 1 pending, 0 available, drop `x` when frames arrive
      - flush
        - now the number of frame to drop is reset to `pending - available = 1`
        - but it should be `x+1`
      
      This CL solves the issue by reporting (by running the afterFlushTask) flush completes only after all the pending frames before calling flush are accounted for.
      
      PiperOrigin-RevId: 506310671
      claincly committed
    • Clarify case where HDR encoder and muxer have no shared mime type. · 83bc474f
      The prior version (with the call to createEncodingException) could
      never occur as select...SupportedMimeType already checks for HDR
      editing support. This change ensures we throw before creating an
      encoder, gives a better error code and allows future simplifications
      around createForCodec (see child CL).
      
      PiperOrigin-RevId: 506308290
      samrobinson committed
    • Pass a Composition to Transformer callbacks · b8ec982e
      PiperOrigin-RevId: 506304101
      kimvde committed
    • Support flushing in FrameProcessor · b2ab4393
      Flushing resets all the texture processors within the `FrameProcessor`. This
      includes:
      
      - At the back, the FinalMatrixTextureProcessorWrapper, and its MatrixTextureProcessor
      - At the front, the ExternalTextureManager
      - All the texture processors in between
      - All the ChainingGlTextureProcessorListeners in between texture processors
      - All the internal states in the aforementioned components
      
      The flush process follows the order, from `GlEffectsFrameProcessor.flush()`
      
      1. Flush the `FrameProcessingTaskExecutor`, so that after it returns, all tasks queued before calling `flush()` completes
      2. Post to `FrameProcessingTaskExecutor`, to flush the `FinalMatrixTextureProcessorWrapper`
      3. Flushing the `FinalMatrixTextureProcessorWrapper` will propagate flushing through, via the `ChainingGlTextureProcessorListener`
      
      Startblock:
         has LGTM from christosts
         and then
         add reviewer andrewlewis
      PiperOrigin-RevId: 506296469
      claincly committed