- WorkerPool thread pool deleted; RenderManager defaults to the Processes backend (oak-worker children), Threads kept as a test-only inline dispatcher; audio tickets stay in-process until S3. - Onscreen path reads worker shm slots directly: BGRA8 slot format, RenderedFrame::Shm wrapped into the display buffer (single disclosed GPU-staging memcpy), scopes analyze BGRA8; the long-lived full-res / thumbnail paths take the counted slot_to_vec copy and release. - Playback pre-render window: forward 120 frames (configurable) fed to the PreviewScheduler at Playback priority, interleaved across workers, cached in shm slots until the playhead consumes them; generation-based invalidation cancels and releases on edits. - oaktask export and oak-cli run on private ProcessDispatchers (fixed a pump-while-locked self-deadlock in the export loop); facade get_frame handles ShmFrame payloads. - Acceptance: preview path main_heap_frame_copies == 0 with spawned workers, CLI transcode/render verified end to end.
63 lines
2.4 KiB
Rust
63 lines
2.4 KiB
Rust
// Oak Video Editor - Non-Linear Video Editor
|
|
// Copyright (C) 2026 Oak Team
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
//! # oakrender — the render engine (Rust)
|
|
//!
|
|
//! Reimplements the C++ oakrender module behind its frozen C ABI
|
|
//! (`include/render/*.h`). See README.md for the architectural mapping.
|
|
//!
|
|
//! Module map (mirrors `COVERAGE.md`):
|
|
//! - `handle` — refcounted C-handle scaffolding (C++ internalhandles.h)
|
|
//! - `texture`/`frame` — Texture + CPU Frame values (C++ texture.h/frame)
|
|
//! - `cache` — PlaybackCache/FrameHashCache family + disk state
|
|
//! - `color` — ColorProcessor over `ocio-rs` + LUT library
|
|
//! - `ticket` — ticket arena with exactly-once completion
|
|
//! - `worker` — the JobDispatch seam + thread-free inline dispatcher +
|
|
//! graph snapshot store (the in-process thread pool was deleted in M15 S2)
|
|
//! - `manager` — RenderManager singleton + disk cache
|
|
//! - `autocacher` — PreviewAutoCacher
|
|
//! - `eval` — the evaluation seam (RenderHooks)
|
|
//! - `backend` — wgpu GPU context + display renderer
|
|
//! - `copier` — render-side project-copy client (oaknode C ABI)
|
|
//! - `cancelatom` — the cancellation primitive
|
|
//! - `ipc` — render-worker NDJSON protocol + shm frame-slot transport
|
|
//! - `scheduler` — preview frame scheduler (interleaved batch claims)
|
|
//! - `procpool` — process-isolated render backend (M15)
|
|
//! - `bridge` — direct-call C ABI bridges (oakcommon/oaknode/oakcodec)
|
|
//! - `ffi` — the `include/render/*.h` export layer
|
|
|
|
#![deny(unsafe_op_in_unsafe_fn)]
|
|
#![warn(missing_docs)]
|
|
|
|
pub mod autocacher;
|
|
pub mod backend;
|
|
pub mod cache;
|
|
pub mod cancelatom;
|
|
pub mod color;
|
|
pub mod commonutil;
|
|
pub mod copier;
|
|
pub mod error;
|
|
pub mod eval;
|
|
pub mod frame;
|
|
pub mod handle;
|
|
pub mod ipc;
|
|
pub mod manager;
|
|
pub mod procpool;
|
|
pub mod scheduler;
|
|
pub mod texture;
|
|
pub mod ticket;
|
|
pub mod worker;
|