1. 14 Feb, 2023 3 commits
  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