Skip to main content

ff_preview/playback/
mod.rs

1//! Real-time playback types for ff-preview.
2//!
3//! This module exposes the primary public API for single-file video/audio
4//! playback. All `unsafe` `FFmpeg` calls are isolated in `playback_inner`.
5//!
6//! | Sub-module         | Contents |
7//! |--------------------|---------|
8//! | `clock`            | [`PlaybackClock`], internal `MasterClock` |
9//! | `sink`             | [`FrameSink`] trait, [`RgbaFrame`], [`RgbaSink`] |
10//! | `decode_buffer`    | [`DecodeBuffer`], [`FrameResult`], [`SeekEvent`] |
11//! | `player`           | [`PreviewPlayer`] |
12//! | `async_player`     | [`AsyncPreviewPlayer`] (tokio feature) |
13//! | `playback_inner`   | Unsafe `FFmpeg` calls (`SwsRgbaConverter`, PCM extraction) |
14
15mod playback_inner;
16
17#[cfg(feature = "timeline")]
18pub(crate) use playback_inner::SwsRgbaConverter;
19
20pub(crate) mod clock;
21pub(crate) mod decode_buffer;
22pub(crate) mod player;
23pub(crate) mod sink;
24
25#[cfg(feature = "tokio")]
26pub(crate) mod async_player;
27
28pub use clock::PlaybackClock;
29pub use decode_buffer::{DecodeBuffer, DecodeBufferBuilder, FrameResult, SeekEvent};
30pub use player::{PlayerCommand, PlayerHandle, PlayerRunner, PreviewPlayer};
31pub use sink::{FrameSink, RgbaFrame, RgbaSink};
32
33#[cfg(feature = "tokio")]
34pub use async_player::AsyncPreviewPlayer;