- oakengine_sequence_move_clip implemented for real (oaktimeline TrackMoveBlockCommand; fixes the graph-ownership/gap-anchor/ripple trim bugs the stub was hiding); same-track via the frozen C ABI, cross-track supported by the module command - oaknode clip blocks now declare a tex_in texture input and set effect_input to it, so timeline clips can host effect chains; facade test covers effect insert/remove on a real clip - oakffmpeg-link: FFMPEG_DIR is now mandatory with a clear panic (a Homebrew upgrade left the system ffmpeg .pc pointing at a deleted dav1d Cellar path, breaking links); reads a git-ignored workspace .env for IDEs that cannot inject env vars (RustRover); links the C++ stdlib for C++ codec libs (svt-av1) - oakengine re-exports oaknode so tests share one crate instance; it_node uses the direct instance's value type where it calls the module FFI (the --workspace dev-dependency feature split builds oaknode twice)
61 lines
1.9 KiB
Rust
61 lines
1.9 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/>.
|
|
|
|
//! # oakcodec — the media codec module (Rust)
|
|
//!
|
|
//! Reimplements the C++ oakcodec module behind its frozen C ABI
|
|
//! (`include/codec/*.h`). See README.md for the architectural mapping
|
|
//! (inheritance → traits, shared_ptr → refcounted handles, etc.).
|
|
//!
|
|
//! ## FFI discipline
|
|
//!
|
|
//! Identical to the oaknode/oakplugin crates: every export goes through
|
|
//! [`handle::guard*`], handles are opaque refcounted boxes, shared
|
|
//! state behind `Mutex`.
|
|
|
|
#![deny(unsafe_op_in_unsafe_fn)]
|
|
#![warn(missing_docs)]
|
|
|
|
pub mod bridge;
|
|
pub mod conformmanager;
|
|
pub mod decoder;
|
|
pub mod encoder;
|
|
pub mod encodingparams;
|
|
pub mod error;
|
|
pub mod exportcodec;
|
|
pub mod exportformat;
|
|
pub mod ffi;
|
|
pub mod ffmpeg;
|
|
pub mod footagedescription;
|
|
pub mod frame;
|
|
pub mod framemanager;
|
|
pub mod handle;
|
|
pub mod oiio;
|
|
pub mod oiioframebridge;
|
|
pub mod planarfiledevice;
|
|
pub mod proxymanager;
|
|
pub mod task;
|
|
pub mod timecodemetadata;
|
|
|
|
#[cfg(test)]
|
|
mod realmedia_tests;
|
|
|
|
// Keep the oakffmpeg-link rlib referenced so its build script's native
|
|
// link flags (the static FFmpeg's transitive dependencies) reach the
|
|
// final link — rustc prunes the flags of an unreferenced rlib.
|
|
#[used]
|
|
static FORCE_FFMPEG_LINK: fn() = oakffmpeg_link::force_link;
|