Package-level declarations
Types
iOS Texture that pipes AVPlayer frames into a GL_TEXTURE_2D. Real iOS devices honour our 32BGRA + IOSurface request and the buffer uploads directly via the packed path. Hosts that ignore the request (notably Mac "Designed for iPad" Simulator, which returns a Lossy GPU-resident planar buffer) take the CoreImage path: a GPU readback into a CPU BGRA8 bitmap that uploads through the same texSubImage2D call.
Shared base for JVM-side video textures whose source pushes decoded frames from a worker thread (libVLC, FFmpeg, JavaCV, JavaFX MediaView-snapshot, …):
JVM video texture driven by direct javacpp-presets FFmpeg — no JavaCV wrapper. A worker thread runs the demux→decode→scale loop by hand:
Web (js + wasmJs) earth.worldwind.render.Texture that mirrors a playing HTMLVideoElement onto a GL_TEXTURE_2D sampler. Each bindTexture call uploads the latest decoded frame via the native WebGL texImage2D(target, level, internalFormat, format, type, HTMLVideoElement) overload — the browser handles decoding and color-space conversion; no CPU pixel copy.
JVM video texture driven by JavaCV's high-level FFmpegFrameGrabber. A worker thread loops on grabImage(), copies the BGRA frame bytes out, and pushes them to the CallbackVideoTexture base for GL-thread upload.
JVM video texture driven by JavaFX MediaPlayer. JavaFX has no per-frame callback API, so we host the MediaView in an off-screen Scene (no javafx.stage.Stage attached) and snapshot the view on every JavaFX AnimationTimer pulse — that's the standard idiom for "give me the current video frame as pixels".
Android-specific OesExternalTexture that bridges a SurfaceTexture / Surface consumer (typically MediaPlayer, MediaCodec, or Camera2) to the WorldWind GL pipeline. The lifecycle is GL-thread-driven:
Common playback contract for the JVM video textures (VLCJ, JavaCV, FFmpeg, JavaFX). Every JVM *VideoTexture exposes the same minimal API; this interface formalizes that so tutorial / app code can target one type instead of carrying a per-backend adapter.
JVM video texture driven by VLCJ (libVLC bindings). VLCJ's CallbackVideoSurface decodes frames in BGRA (RV32) into a native ByteBuffer; on every render callback we copy them into the CallbackVideoTexture base and the GL thread uploads on bind.