diff --git a/bin/app/src/ui/vid/mod.rs b/bin/app/src/ui/vid/mod.rs new file mode 100644 index 000000000..1a125f9bf --- /dev/null +++ b/bin/app/src/ui/vid/mod.rs @@ -0,0 +1,327 @@ +/* This file is part of DarkFi (https://dark.fi) + * + * Copyright (C) 2020-2025 Dyne.org foundation + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero 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 Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +use async_trait::async_trait; +use parking_lot::Mutex as SyncMutex; +use rand::{rngs::OsRng, Rng}; +use std::sync::{mpsc, Arc}; +use tracing::instrument; + +use crate::{ + gfx::{ + anim::Frame, gfxtag, DrawCall, DrawInstruction, DrawMesh, ManagedSeqAnimPtr, + ManagedTexturePtr, Rectangle, RenderApi, + }, + mesh::{MeshBuilder, MeshInfo, COLOR_WHITE}, + prop::{BatchGuardPtr, PropertyAtomicGuard, PropertyRect, PropertyStr, PropertyUint32, Role}, + scene::{Pimpl, SceneNodeWeak}, + ExecutorPtr, +}; + +use super::{DrawUpdate, OnModify, UIObject}; + +mod ivf; +mod threads; + +use threads::{spawn_decoder_thread, spawn_loader_demuxer_thread}; + +macro_rules! t { ($($arg:tt)*) => { trace!(target: "ui:video", $($arg)*); } } + +pub type VideoPtr = Arc