Skip to main content

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}