Skip to content

SwiftVideo 0.1.0-alpha.3

Pre-release
Pre-release

Choose a tag to compare

@shial4 shial4 released this 03 Nov 17:45
· 3 commits to main since this release

Experimental Android preview follow-up using Media3 1.12.0-alpha02 and Android compile/target SDK 37. Minimum Android API 28 and Apple deployment targets are unchanged.

Changes:

  • Expose the SwiftVideoMedia3 package product for preview surface adapters. Consuming Skip apps must add this product explicitly so clean Apple builds include the bridge metadata.
  • Stop the old frame processor before a SurfaceView is destroyed, preserving playback through surface and view replacement.
  • Keep the exact paused playhead while Media3 settles its asynchronous clock. Replacing a completed surface retains the final frame; Play then restarts from the beginning.
  • Wait for the first rendered frame before starting playback and drain pending video output before reporting completion. This fixes zero-frame playback of short clips.
  • Cache only the bounding source range used by each audio URL, retaining trim, seek, and fade timing. The cache reserves 256 MiB of free disk space and caps the session at 2,147,483,647 bytes. It still decodes compressed prefixes and stores gaps between distant ranges; it does not stream arbitrary long-form audio.

Verification:

  • Release commit: a811b8ad63eac0f90898dd3a81631f2c45bf9d6f.
  • Apple CI passed 40 host tests, 40 iOS tests, five editor-model tests, the iOS editor build, and 95.19% iOS executable-line coverage (1,147/1,205).
  • Android CI passed bridge generation, native compilation, test APK packaging, and the example-editor build. The device job passed 31 native core tests. Instrumentation passed surface/view replacement, short-clip playback, mixed-media preview, and all 20 audio trim/seek cases before reaching the five-minute test-command limit. Two reference color assertions and two legacy paused-seek assertions failed before the timeout. The complete instrumentation suite and hosted coverage gate did not finish.
  • A complete local run of the same production preview implementation at 3bee402 executed 55 Android instrumentation tests in 217.808 seconds, with six known assertions failing. Media3 coverage was 90.40% (1,111/1,229). The later decoder-diagnostic candidate bb1f7bd also completed 55 tests with the same six issues. These local results are not a passing hosted Android gate.
  • The consuming Skip Fuse app builds on iOS and Android. Phone rotation and API 34 foldable workflows pass playback, seeking, history, and saved-JSON checks. The release candidate also passes iPhone/iPad startup and Android catalog/template editing, export, and reopening checks. The iOS UI test target compiles for arm64 and x86_64 but has not run because the installed CoreSimulator is older than Xcode requires.

Known limitations: four BT.709 export-color assertions and two legacy paused-seek diagnostic assertions remain enabled and fail in complete local runs. The new independent decoder probe reproduces the color discrepancy before Media3 processing; its exact platform cause is not established. Physical Android device behavior and complete interactive iOS workflows remain unverified. This is an experimental prerelease. Stable adoption requires stable dependencies and complete release verification.