"""
Streaming video compositor for real-time effect processing.

This module provides a frame-by-frame streaming architecture that:
- Reads from multiple video sources with automatic looping
- Applies effects inline (no intermediate files)
- Composites layers with time-varying weights
- Outputs to display, file, or stream

Usage:
    from streaming import StreamingCompositor, VideoSource, AudioAnalyzer

    compositor = StreamingCompositor(
        sources=["video1.mp4", "video2.mp4"],
        effects_per_source=[...],
        compositor_config={...},
    )

    # With live audio
    audio = AudioAnalyzer(device=0)
    compositor.run(output="output.mp4", duration=60, audio=audio)

    # With preview window
    compositor.run(output="preview", duration=60)

Backends:
    - numpy: Works everywhere, ~3-5 fps (default)
    - glsl: Requires GPU, 30+ fps real-time (future)
"""

from .sources import VideoSource, ImageSource
from .compositor import StreamingCompositor
from .backends import NumpyBackend, get_backend
from .output import DisplayOutput, FileOutput

__all__ = [
    "StreamingCompositor",
    "VideoSource",
    "ImageSource",
    "NumpyBackend",
    "get_backend",
    "DisplayOutput",
    "FileOutput",
]
