Skip to content
GitHub

API Reference

Configuration for the interpolation subsystem.

Provider that registers a configured InterpolationProvider backend.
__init__
def __init__(config: InterpolationConfig | None = None) -> None
register
async def register(container: ContainerRegistrarProtocol) -> None
boot
async def boot(container: ContainerResolverProtocol) -> None

No async I/O needed at boot beyond what register() already did.

health_check
async def health_check(timeout: float = 5.0) -> HealthCheckResult

RIFE frame-interpolation integration.
configure
def configure(
    cls,
    config: InterpolationConfig | None = None
) -> DynamicModule
stub
def stub(
    cls,
    config: InterpolationConfig | None = None
) -> DynamicModule

Callable task handler — wraps an InterpolationProvider backend for lexigram-tasks.

Returns a plain dict (never raw MediaAsset bytes) because lexigram-tasks’ result store JSON-serializes JobResult. The umbrella wraps this handler during MultimediaProvider.register() to persist any bytes to lexigram-storage BEFORE this dict is constructed.

__init__
def __init__(backend: InterpolationProvider) -> None
run
async def run(params: dict[str, Any]) -> dict[str, Any]

Talks to a rife_server.py reference server via InterpolationProvider.
__init__
def __init__(
    base_url: str,
    timeout: float = 15.0,
    retry: RetryPolicyProtocol | None = None,
    circuit_breaker: CircuitBreakerProtocol | None = None
) -> None
interpolate
async def interpolate(request: InterpolationRequest) -> Result[MediaAsset, MultimediaError]

Extracts a video's frames, doubles the sequence one or two passes, then reassembles at the resulting higher frame rate.

Not itself an InterpolationProvider — a different method name (interpolate_video, not interpolate) and a different signature (a whole-video MediaAsset plus factor/fps, not a two-frame InterpolationRequest), mirroring how VideoUpscaleService in the Upscale design is deliberately not an UpscaleProvider either (design spec §6.2).

__init__
def __init__(
    interpolation_provider: InterpolationProvider,
    video_processor: VideoProcessor
) -> None
interpolate_video
async def interpolate_video(
    asset: MediaAsset,
    *,
    factor: Literal[2, 4] = 2,
    fps: float
) -> Result[MediaAsset, MultimediaError]