// Player module - Complete playback control system // TRACES: UR-003, UR-004, UR-005, UR-019, UR-023, UR-026 | // IR-003, IR-004, IR-006, IR-008 | // DR-001, DR-004, DR-005, DR-009, DR-028, DR-029, DR-047 pub mod autoplay; pub mod backend; pub mod background_policy; #[cfg(any(test, feature = "conformance"))] pub mod conformance; pub mod events; #[cfg(any(test, feature = "conformance"))] pub mod fake_player; #[cfg(test)] mod fake_player_conformance; pub mod legacy_player; pub mod media; pub mod media_player; #[cfg(target_os = "linux")] pub mod mpv_player; pub mod queue; pub mod seek; pub mod session; pub mod sleep_timer; pub mod state; pub mod stream_end; #[cfg(test)] mod mpv_backend_test; // Platform-specific backends #[cfg(target_os = "android")] pub mod android; #[cfg(target_os = "linux")] pub mod mpv_backend; /// Whether this process renders video natively — one answer, three consumers /// (UR-080 / DR-231, DR-235). pub mod native_video; /// mpv's render API into a framebuffer we own (UR-080 / DR-231, IR-033). /// /// Deliberately *not* GTK-gated beyond the platform that currently builds it: /// everything here is the portable half, and Windows reuses it unchanged behind /// its own surface. #[cfg(target_os = "linux")] pub mod mpv_render; /// The native video surface mpv renders into (UR-080 / DR-231). /// /// Linux-gated because the *surface* is GTK. Everything around it — the render /// context, its lifetime, frame pacing, the device profile — is not. #[cfg(target_os = "linux")] pub mod video_surface; // Platforms with no native audio backend (e.g. Windows) render audio-only // playback through a webview