kino_core/lib.rs
1//! Kino Core - Video Player Library for Kino
2//!
3//! This crate provides the core functionality for video playback:
4//! - HLS manifest parsing and segment management
5//! - DASH MPD parsing and adaptation
6//! - Adaptive bitrate (ABR) algorithms
7//! - Buffer management with prefetching
8//! - Analytics event emission
9//! - DRM license acquisition (optional)
10//!
11//! # Architecture
12//!
13//! ```text
14//! ┌─────────────────────────────────────────────────────────────────┐
15//! │ Kino Core │
16//! ├─────────────────────────────────────────────────────────────────┤
17//! │ │
18//! │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
19//! │ │ Manifest │ │ Buffer │ │ ABR │ │
20//! │ │ Parser │ │ Manager │ │ Engine │ │
21//! │ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
22//! │ │ │ │ │
23//! │ └─────────────────┼─────────────────┘ │
24//! │ │ │
25//! │ ┌──────┴──────┐ │
26//! │ │ Player │ │
27//! │ │ Session │ │
28//! │ └──────┬──────┘ │
29//! │ │ │
30//! │ ┌──────────────┐ ┌──────┴──────┐ ┌──────────────┐ │
31//! │ │ Analytics │ │ Event │ │ DRM │ │
32//! │ │ Emitter │ │ Bus │ │ Manager │ │
33//! │ └──────────────┘ └─────────────┘ └──────────────┘ │
34//! └─────────────────────────────────────────────────────────────────┘
35//! ```
36
37pub mod error;
38pub mod types;
39pub mod manifest;
40pub mod buffer;
41pub mod abr;
42pub mod session;
43pub mod analytics;
44pub mod branding;
45pub mod drm;
46pub mod captions;
47
48pub use error::{Error, Result};
49pub use types::*;
50pub use manifest::{ManifestParser, HlsParser, DashParser};
51pub use buffer::BufferManager;
52pub use abr::{AbrEngine, AbrAlgorithm};
53pub use session::PlayerSession;
54pub use analytics::{AnalyticsEvent, AnalyticsEmitter};
55pub use branding::{KinoColors, KinoTheme, JsTheme, CssVariables};
56pub use drm::{DrmConfig, DrmManager, DrmSession, PsshBox};
57pub use captions::{WebVttParser, SrtParser};
58
59/// Library version
60pub const VERSION: &str = env!("CARGO_PKG_VERSION");
61
62/// Initialize the player library with default configuration
63pub fn init() {
64 tracing::info!(version = VERSION, "Kino Core initialized");
65}