• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

kivy / kivy / 27977373136 / 1
60%
master: 60%

Build:
DEFAULT BRANCH: master
Ran 22 Jun 2026 07:21PM UTC
Files 345
Run time 24s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Jun 2026 07:10PM UTC coverage: 58.014% (-0.007%) from 58.021%
27977373136.1

push

github

web-flow
Video: AVFoundation provider (macOS+IOS) + thumbnails, buffering, options, cross-platform demo (#9314)

* Video: add AVFoundation provider (macOS/iOS) + thumbnails, buffering, options on VideoBase

- New core video provider `video_avfoundation` (default on Darwin):
  Cython .pyx + Objective-C++ implementation shared between macOS and
  iOS. Zero-copy texture pipeline (IOSurface -> ANGLE pbuffer ->
  GL_TEXTURE_2D, wrapped via Texture(id=..., nofree=True)) is compiled
  when the build environment exposes ANGLE EGL headers; otherwise the
  provider falls back to a CPU memcpy path via Texture.blit_buffer.
  Thumbnails via AVAssetImageGenerator with an in-place BGRA->RGBA
  swizzle so the result blits on ANGLE/Metal as well as GL.

- VideoBase 3.0.0 surface:
  - `generate_thumbnail(filename, time)` classmethod (default: None).
  - `options` dict forwarded opaquely to providers; AVFoundation
    whitelist: `automatically_waits_to_minimize_stalling`,
    `force_cpu_copy`. Unknown keys are logged once and tolerated so
    apps can stash extra metadata in the dict.
  - `buffering` BooleanProperty + `on_buffering` event: a single
    signal that covers both the initial pre-playback wait and any
    mid-stream rebuffer (mapped to `AVPlayer.timeControlStatus` in the
    AVF provider). Mirrored on the Video widget.
  - Drive-by: add `_fps` to `VideoBase.__slots__` (latent
    AttributeError on instantiation).

- Video widget:
  - Forwards `options` to the core video and exposes the new
    `buffering` boolean.
  - `options` reclassified from `ObjectProperty` to
    `DictProperty(allownone=True)`: per-instance fresh defaults
    (no shared mutable default), validates dict-or-None at assign,
    and dispatches on top-level mutation as well as reassignment.
  - Docstring now lists the supported keys for each provider that
    consumes `options`.

- `Texture.__init__` gains `nofree=False` so externally-owned GL
  texture ids (e.g. the AVF zero-copy id) survive Kivy's... (continued)

3110 of 6493 branches covered (47.9%)

28160 of 48540 relevant lines covered (58.01%)

0.58 hits per line

Source Files on job 27977373136.1
  • Tree
  • List 345
  • Changed 6
  • Source Changed 5
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 27977373136
  • 06640d94 on github
  • Prev Job for on master (#27977218873.2)
  • Next Job for on master (#27978273122.2)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc