ccab39f140
Re-sincroniza las fuentes desde el monorepo (estaba en vello 0.5/wgpu 24 y con la estructura vieja de eventloop) y suma el 3D: - bump del workspace a vello 0.7 / wgpu 27 / parley 0.6, + accesskit 0.24 / accesskit_winit 0.33 / vello_hybrid 0.0.9. - nuevos crates: llimphi-3d (voxels ray-march + mallas en un depth compartido, montable dentro de un View 2D vía set_viewport+scissor) y llimphi-voxel (world-gen, personajes, director de escenas) + shared/foreign-vox (puente .vox). - README: sección "Not just 2D — a 3D voxel engine" + GIF (docs/llimphi_voxel.gif). - excluido modules/allichay (arrastra deps fuera del alcance del front-door). - cargo check --workspace: verde. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
447 lines
18 KiB
TOML
447 lines
18 KiB
TOML
# Cargo.toml raíz STANDALONE de Llimphi — dry-run de extracción.
|
||
# Generado desde la raíz de gioser quitando el prefijo 02_ruway/llimphi/ a los
|
||
# path-deps internos. Excluye los 3 crates acoplados al resto del workspace
|
||
# (menubar→app-bus, shuma-term→shuma-exec, plugin-host→card-core) y los demos
|
||
# gallery que los agregan, más android (target propio).
|
||
[workspace]
|
||
resolver = "2"
|
||
members = [
|
||
"llimphi-hal", "llimphi-raster", "llimphi-layout", "llimphi-text",
|
||
"llimphi-ui", "llimphi-theme", "llimphi-surface", "llimphi-motion",
|
||
"llimphi-icons", "llimphi-compositor", "llimphi-workspace",
|
||
"widgets/*", "modules/*", "shared/app-bus",
|
||
"llimphi-3d", "llimphi-voxel", "shared/foreign-vox",
|
||
]
|
||
exclude = [
|
||
"android",
|
||
"llimphi-gallery", "llimphi-gpu-bench",
|
||
"widgets/gallery",
|
||
"modules/shuma-term", "modules/plugin-host", "modules/allichay",
|
||
]
|
||
|
||
[workspace.package]
|
||
version = "0.1.0"
|
||
edition = "2021"
|
||
rust-version = "1.80"
|
||
license = "MIT"
|
||
authors = ["Sergio <gerencia@jlsoltech.com>"]
|
||
publish = false
|
||
repository = "https://git.tawasuyu.net/tawasuyu/llimphi"
|
||
|
||
[workspace.dependencies]
|
||
# === Registro de apps / menú global ===
|
||
app-bus = { path = "shared/app-bus" }
|
||
foreign-vox = { path = "shared/foreign-vox" }
|
||
# === Serialización ===
|
||
serde = { version = "1", features = ["derive"] }
|
||
serde_json = "1"
|
||
lsp-types = "0.97"
|
||
serde-big-array = "0.5"
|
||
postcard = { version = "1", features = ["use-std"] }
|
||
toml = "0.8"
|
||
ron = "0.8"
|
||
bincode = "1"
|
||
base64 = "0.22"
|
||
|
||
# === Errores ===
|
||
thiserror = "2" # bump uniforme; arje (era 1) puede requerir ajustes menores
|
||
anyhow = "1"
|
||
|
||
# === Async ===
|
||
tokio = { version = "1", features = ["full"] }
|
||
tokio-util = { version = "0.7", features = ["compat"] }
|
||
async-trait = "0.1"
|
||
futures = "0.3"
|
||
|
||
# === Observabilidad ===
|
||
tracing = "0.1"
|
||
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
|
||
|
||
# === Linux primitives (arje) ===
|
||
nix = { version = "0.29", features = ["signal", "process", "sched", "mount", "fs", "socket", "net", "user"] }
|
||
libc = "0.2"
|
||
|
||
# === IDs / Hash / Crypto ===
|
||
ulid = { version = "1", features = ["serde"] }
|
||
uuid = { version = "1", features = ["v4", "rng-getrandom"] }
|
||
sha2 = "0.10"
|
||
blake3 = "1.5"
|
||
ed25519-dalek = "2"
|
||
aes-gcm = "0.10"
|
||
chacha20poly1305 = "0.10"
|
||
argon2 = "0.5"
|
||
rand = "0.8"
|
||
|
||
# === WASM (arje) ===
|
||
# wasmi 1.0: unifica la versión con renaser (su kernel ya corre 1.0), para
|
||
# que el ABI WASM del host sea idéntico en Linux y en bare-metal.
|
||
wasmi = "1.0"
|
||
wat = "1"
|
||
|
||
# === Storage / DB ===
|
||
sled = "0.34"
|
||
rusqlite = { version = "0.31", features = ["bundled", "blob"] }
|
||
|
||
# === Ingesta de documentos (iniy-ingest: PDF / EPUB) ===
|
||
pdf-extract = "0.7"
|
||
epub = "2.1"
|
||
|
||
# === Bulk import Wikipedia (iniy-wiki dump) ===
|
||
bzip2 = "0.4"
|
||
|
||
# === Compresión (minga multi-bundle) ===
|
||
zstd = "0.13"
|
||
|
||
# === HTTP server (iniy-server) ===
|
||
axum = "0.7"
|
||
tower = "0.5"
|
||
|
||
# === ANN sobre embeddings (iniy nli --ann) ===
|
||
instant-distance = "0.6"
|
||
|
||
# === P2P (minga) ===
|
||
libp2p = { version = "0.56", features = ["tokio", "tcp", "noise", "yamux", "macros", "kad", "identify", "relay", "dcutr", "autonat", "mdns"] }
|
||
libp2p-stream = "=0.4.0-alpha"
|
||
libp2p-allow-block-list = "0.6"
|
||
|
||
# === SSH (ssh, sandokan RemoteEngine, matilda) ===
|
||
russh = "0.54"
|
||
|
||
# === Math determinista cross-platform (dominium) ===
|
||
libm = "0.2"
|
||
|
||
# === SMF (takiy-midi) ===
|
||
# midly: parser/emitter SMF tipo 0/1, no_std-friendly, sin allocs en hot path.
|
||
midly = "0.5"
|
||
|
||
# === Code parsing (minga) ===
|
||
arboard = "3"
|
||
ropey = "1.6"
|
||
tree-sitter = "0.24"
|
||
tree-sitter-rust = "0.23"
|
||
tree-sitter-python = "0.23"
|
||
tree-sitter-typescript = "0.23"
|
||
tree-sitter-javascript = "0.23"
|
||
tree-sitter-go = "0.23"
|
||
|
||
# === FS notify ===
|
||
notify = "6.1"
|
||
|
||
# === Grafos (iniy, nakui-core ya lo usa directo en 0.6) ===
|
||
petgraph = "0.6"
|
||
|
||
# === Image decoding (nahual-image-viewer-llimphi) ===
|
||
# default-features = false: nos quedamos con PNG + JPEG + WebP (lossless).
|
||
# tullpu-render exporta a las tres; AVIF/TIFF/… los habilitamos si una app
|
||
# los pide específicamente.
|
||
image = { version = "0.25", default-features = false, features = ["png", "jpeg", "webp"] }
|
||
|
||
# === FUSE (minga-vfs) ===
|
||
# default-features = false: prescinde de pkg-config/libfuse-dev en build.
|
||
# El montaje pasa a ser Rust puro (vía el helper `fusermount3` en runtime).
|
||
fuser = { version = "0.15", default-features = false }
|
||
|
||
# === CLI / auth (minga) ===
|
||
clap = { version = "4", features = ["derive"] }
|
||
rpassword = "7"
|
||
|
||
# === PAM (auth-core) ===
|
||
pam = "0.8"
|
||
|
||
# === D-Bus (arje compat) ===
|
||
zbus = { version = "4", default-features = false, features = ["tokio"] }
|
||
|
||
# === Tests ===
|
||
tempfile = "3"
|
||
|
||
# === Llimphi (motor gráfico soberano) ===
|
||
# wgpu sobre Vulkan/Metal/DX12, winit para ventana en dev Linux.
|
||
# raw-window-handle 0.6 alinea winit 0.30 con wgpu 24.
|
||
# vello 0.5 = rasterizador vectorial sobre wgpu 24.
|
||
# taffy 0.9 = motor Flexbox/Grid puro Rust (ya pulled por transitivos, lo alineamos).
|
||
# parley 0.2 = shaping/layout de texto compatible con peniko 0.4 (que vello 0.5 expone).
|
||
wgpu = "27"
|
||
winit = "0.30"
|
||
raw-window-handle = "0.6"
|
||
pollster = "0.4"
|
||
vello = "0.7"
|
||
taffy = "0.9"
|
||
# parley = shaping completo (bidi, ligatures, fallback CJK/emoji vía fontique, line break).
|
||
parley = "0.6"
|
||
accesskit = "0.24"
|
||
accesskit_winit = "0.33"
|
||
vello_hybrid = "0.0.9"
|
||
# Bucle Elm (input→update→view→layout→raster→present). Lo consumen las apps.
|
||
llimphi-ui = { path = "llimphi-ui" }
|
||
# Paleta semántica compartida por las apps y los widgets.
|
||
llimphi-theme = { path = "llimphi-theme" }
|
||
# Tweens y helpers de animación sobre el bucle Elm.
|
||
llimphi-motion = { path = "llimphi-motion" }
|
||
# Iconos vectoriales (BezPath en grid 24×24) compartidos por todas las apps.
|
||
llimphi-icons = { path = "llimphi-icons" }
|
||
# Widgets reusables sobre llimphi-ui — uno por crate.
|
||
llimphi-widget-app-header = { path = "widgets/app-header" }
|
||
llimphi-widget-banner = { path = "widgets/banner" }
|
||
llimphi-widget-button = { path = "widgets/button" }
|
||
llimphi-widget-card = { path = "widgets/card" }
|
||
llimphi-clipboard = { path = "widgets/clipboard" }
|
||
llimphi-widget-context-menu = { path = "widgets/context-menu" }
|
||
llimphi-widget-edit-menu = { path = "widgets/edit-menu" }
|
||
llimphi-widget-menubar = { path = "widgets/menubar" }
|
||
llimphi-widget-list = { path = "widgets/list" }
|
||
llimphi-widget-grid = { path = "widgets/grid" }
|
||
llimphi-widget-slider = { path = "widgets/slider" }
|
||
llimphi-widget-scroll = { path = "widgets/scroll" }
|
||
llimphi-widget-splitter = { path = "widgets/splitter" }
|
||
llimphi-widget-stat-card = { path = "widgets/stat-card" }
|
||
llimphi-widget-tabs = { path = "widgets/tabs" }
|
||
llimphi-module-command-palette = { path = "modules/command-palette" }
|
||
llimphi-module-diff-viewer = { path = "modules/diff-viewer" }
|
||
llimphi-module-fif = { path = "modules/fif" }
|
||
llimphi-module-file-picker = { path = "modules/file-picker" }
|
||
llimphi-module-bookmarks = { path = "modules/bookmarks" }
|
||
llimphi-module-mini-map = { path = "modules/mini-map" }
|
||
llimphi-module-shuma-term = { path = "modules/shuma-term" }
|
||
llimphi-module-symbol-outline = { path = "modules/symbol-outline" }
|
||
llimphi-plugin-host = { path = "modules/plugin-host" }
|
||
llimphi-widget-theme-switcher = { path = "widgets/theme-switcher" }
|
||
llimphi-widget-text-area = { path = "widgets/text-area" }
|
||
llimphi-widget-text-editor-core = { path = "widgets/text-editor-core" }
|
||
llimphi-widget-text-editor = { path = "widgets/text-editor" }
|
||
llimphi-widget-text-editor-lsp = { path = "widgets/text-editor-lsp" }
|
||
llimphi-widget-text-input = { path = "widgets/text-input" }
|
||
llimphi-widget-tiled = { path = "widgets/tiled" }
|
||
llimphi-widget-nodegraph = { path = "widgets/nodegraph" }
|
||
llimphi-widget-tree = { path = "widgets/tree" }
|
||
llimphi-widget-navigator = { path = "widgets/navigator" }
|
||
# Sello vectorial wawa (rombo + W implícita + Merkle Core).
|
||
llimphi-widget-wawa-mark = { path = "widgets/wawa-mark" }
|
||
# Widgets de elegancia transversal (tooltip, spinner, progress, toast,
|
||
# modal, empty, status-bar, shortcuts-help, splash).
|
||
llimphi-widget-tooltip = { path = "widgets/tooltip" }
|
||
llimphi-widget-spinner = { path = "widgets/spinner" }
|
||
llimphi-widget-progress = { path = "widgets/progress" }
|
||
llimphi-widget-toast = { path = "widgets/toast" }
|
||
llimphi-widget-modal = { path = "widgets/modal" }
|
||
llimphi-widget-empty = { path = "widgets/empty" }
|
||
llimphi-widget-status-bar = { path = "widgets/status-bar" }
|
||
llimphi-widget-shortcuts-help = { path = "widgets/shortcuts-help" }
|
||
llimphi-widget-timeline = { path = "widgets/timeline" }
|
||
llimphi-widget-splash = { path = "widgets/splash" }
|
||
# Controles de formulario y signaling (switch, segmented, breadcrumb,
|
||
# badge, avatar, skeleton, field).
|
||
llimphi-widget-switch = { path = "widgets/switch" }
|
||
llimphi-widget-segmented = { path = "widgets/segmented" }
|
||
llimphi-widget-dock-rail = { path = "widgets/dock-rail" }
|
||
llimphi-widget-breadcrumb = { path = "widgets/breadcrumb" }
|
||
llimphi-widget-badge = { path = "widgets/badge" }
|
||
llimphi-widget-avatar = { path = "widgets/avatar" }
|
||
llimphi-widget-skeleton = { path = "widgets/skeleton" }
|
||
llimphi-widget-field = { path = "widgets/field" }
|
||
# Firma visual transversal (gradient sutil + hairline accent).
|
||
llimphi-widget-panel = { path = "widgets/panel" }
|
||
llimphi-widget-panes = { path = "widgets/panes" }
|
||
llimphi-workspace = { path = "llimphi-workspace" }
|
||
# Abstracción Selector — host (paths) + wawa (khipus).
|
||
llimphi-module-selector = { path = "modules/selector" }
|
||
|
||
# === Filesystem helpers ===
|
||
directories = "5"
|
||
|
||
# === Diff line-based (llimphi-module-diff-viewer) ===
|
||
# `similar` es la crate de facto: implementa Myers + Patience + LCS,
|
||
# expone `TextDiff` con ChangeTag por línea (Equal/Insert/Delete),
|
||
# zero deps fuera de std. La 2.x es estable hace años.
|
||
similar = "2"
|
||
|
||
# === Fuzzy matching (shuma-history) ===
|
||
# nucleo-matcher = mismo matcher que helix-editor: rápido, Unicode-correct,
|
||
# bonus por prefijos, ranking estable. La versión 0.3 expone el API simple
|
||
# que necesitamos (Matcher + Pattern + score).
|
||
nucleo-matcher = "0.3"
|
||
|
||
# === Transporte autenticado (shuma-link) ===
|
||
# snow = framework Noise pure-rust. Lo usamos en modo Noise_XK (cliente
|
||
# conoce la pubkey del servidor, server descubre la del cliente y la
|
||
# valida contra una allowlist). ChaCha20-Poly1305 + X25519 + BLAKE2s.
|
||
# La versión 0.9 viene pinneada por libp2p, así nos alineamos.
|
||
snow = "0.9"
|
||
hex = "0.4"
|
||
|
||
# === PTY + emulador de terminal (shuma-exec, módulos REPL) ===
|
||
# portable-pty aloja un PTY cross-platform; lo usamos para los
|
||
# comandos TUI tipo vim/htop/less que necesitan un terminal de verdad.
|
||
# vt100 parsea la secuencia de bytes que el PTY emite (ANSI + cursor
|
||
# movement + erase + screen state) y mantiene un buffer de pantalla
|
||
# renderizable como grid.
|
||
portable-pty = "0.9"
|
||
vt100 = "0.16"
|
||
|
||
# === WASM web (gioser) ===
|
||
wasm-bindgen = "0.2"
|
||
wasm-bindgen-futures = "0.4"
|
||
js-sys = "0.3"
|
||
web-sys = "0.3"
|
||
glam = "0.30"
|
||
|
||
# === Markdown (pluma) ===
|
||
pulldown-cmark = { version = "0.12", default-features = false, features = ["html"] }
|
||
|
||
# === Archivos comprimidos (nahual archive viewer) ===
|
||
# Sólo listamos el directorio central (nombres/tamaños); no descomprimimos,
|
||
# por eso default-features=false alcanza para ZIP. Para tar.gz sí
|
||
# descomprimimos en streaming con flate2 (ya declarado arriba), saltando
|
||
# los datos de cada entrada — sólo leemos headers.
|
||
zip = { version = "2.4", default-features = false }
|
||
tar = { version = "0.4", default-features = false }
|
||
|
||
# === Fuentes (nahual font viewer) ===
|
||
# Parseo de TTF/OTF/TTC y extracción de contornos de glifo a paths.
|
||
ttf-parser = "0.25"
|
||
|
||
# ============================================================
|
||
# Intra-workspace deps de nahual (referenciadas por workspace = true)
|
||
# ============================================================
|
||
nahual-text-viewer-llimphi = { path = "02_ruway/nahual/nahual-text-viewer-llimphi" }
|
||
nahual-image-viewer-llimphi = { path = "02_ruway/nahual/nahual-image-viewer-llimphi" }
|
||
nahual-thumb-core = { path = "02_ruway/nahual/nahual-thumb-core" }
|
||
nahual-gallery-llimphi = { path = "02_ruway/nahual/nahual-gallery-llimphi" }
|
||
nahual-video-viewer-llimphi = { path = "02_ruway/nahual/nahual-video-viewer-llimphi" }
|
||
nahual-card-viewer-llimphi = { path = "02_ruway/nahual/nahual-card-viewer-llimphi" }
|
||
nahual-audio-viewer-llimphi = { path = "02_ruway/nahual/nahual-audio-viewer-llimphi" }
|
||
nahual-tree-viewer-llimphi = { path = "02_ruway/nahual/nahual-tree-viewer-llimphi" }
|
||
nahual-hex-viewer-llimphi = { path = "02_ruway/nahual/nahual-hex-viewer-llimphi" }
|
||
nahual-table-viewer-llimphi = { path = "02_ruway/nahual/nahual-table-viewer-llimphi" }
|
||
nahual-markdown-viewer-llimphi = { path = "02_ruway/nahual/nahual-markdown-viewer-llimphi" }
|
||
nahual-archive-viewer-llimphi = { path = "02_ruway/nahual/nahual-archive-viewer-llimphi" }
|
||
nahual-font-viewer-llimphi = { path = "02_ruway/nahual/nahual-font-viewer-llimphi" }
|
||
nahual-map-viewer-llimphi = { path = "02_ruway/nahual/nahual-map-viewer-llimphi" }
|
||
nahual-geo-core = { path = "02_ruway/nahual/nahual-geo-core" }
|
||
nahual-viewer-core = { path = "02_ruway/nahual/nahual-viewer-core" }
|
||
nahual-file-explorer-llimphi = { path = "02_ruway/nahual/nahual-file-explorer-llimphi" }
|
||
|
||
# ============================================================
|
||
# Intra-workspace deps de pineal (módulo de gráficos)
|
||
# ============================================================
|
||
pineal-core = { path = "00_unanchay/pineal/pineal-core" }
|
||
pineal-render = { path = "00_unanchay/pineal/pineal-render" }
|
||
pineal-cartesian = { path = "00_unanchay/pineal/pineal-cartesian" }
|
||
pineal-stream = { path = "00_unanchay/pineal/pineal-stream" }
|
||
pineal-mesh = { path = "00_unanchay/pineal/pineal-mesh" }
|
||
pineal-financial = { path = "00_unanchay/pineal/pineal-financial" }
|
||
pineal-polar = { path = "00_unanchay/pineal/pineal-polar" }
|
||
pineal-heatmap = { path = "00_unanchay/pineal/pineal-heatmap" }
|
||
pineal-treemap = { path = "00_unanchay/pineal/pineal-treemap" }
|
||
pineal-flow = { path = "00_unanchay/pineal/pineal-flow" }
|
||
pineal-phosphor = { path = "00_unanchay/pineal/pineal-phosphor" }
|
||
pineal-export = { path = "00_unanchay/pineal/pineal-export" }
|
||
pineal-hexbin = { path = "00_unanchay/pineal/pineal-hexbin" }
|
||
pineal-contour = { path = "00_unanchay/pineal/pineal-contour" }
|
||
pineal-bars = { path = "00_unanchay/pineal/pineal-bars" }
|
||
pineal = { path = "00_unanchay/pineal/pineal-umbrella" }
|
||
|
||
# ============================================================
|
||
# Intra-workspace deps de iniy (laboratorio semántico de creencias)
|
||
# ============================================================
|
||
iniy-core = { path = "01_yachay/iniy/iniy-core" }
|
||
iniy-ingest = { path = "01_yachay/iniy/iniy-ingest" }
|
||
iniy-extract = { path = "01_yachay/iniy/iniy-extract" }
|
||
iniy-nli = { path = "01_yachay/iniy/iniy-nli" }
|
||
iniy-nli-llm = { path = "01_yachay/iniy/iniy-nli-llm" }
|
||
iniy-graph = { path = "01_yachay/iniy/iniy-graph" }
|
||
iniy-store = { path = "01_yachay/iniy/iniy-store" }
|
||
|
||
# === auto: declarados por crates internos faltantes ===
|
||
cosmos-coords = { path = "01_yachay/cosmos/cosmos-coords" }
|
||
cosmos-core = { path = "01_yachay/cosmos/cosmos-core" }
|
||
cosmos-ephemeris = { path = "01_yachay/cosmos/cosmos-ephemeris" }
|
||
cosmos-time = { path = "01_yachay/cosmos/cosmos-time" }
|
||
cosmos-wcs = { path = "01_yachay/cosmos/cosmos-wcs" }
|
||
|
||
# === auto: externas de eternal ===
|
||
celestial-eop-data = { version = "0.1"}
|
||
approx = "0.5"
|
||
byteorder = "1.5"
|
||
cc = "1.0"
|
||
chrono = "0.4"
|
||
crc32fast = "1.4"
|
||
criterion = "0.5"
|
||
csv = "1.4"
|
||
flate2 = "1.0"
|
||
glob = "0.3"
|
||
indicatif = "0.18"
|
||
lz4_flex = "0.11"
|
||
memmap2 = "0.9"
|
||
mockito = "1.0"
|
||
ndarray = "0.15"
|
||
num-traits = "0.2"
|
||
once_cell = "1.19"
|
||
parking_lot = "0.12"
|
||
png = "0.18"
|
||
proptest = "1.4"
|
||
quick-xml = "0.31"
|
||
rayon = "1.8"
|
||
regex = "1.11"
|
||
reqwest = "0.12"
|
||
tiff = "0.11"
|
||
wide = "0.7"
|
||
wiremock = "0.6"
|
||
|
||
# === i18n (rimay-localize) ===
|
||
fluent-bundle = "0.15"
|
||
unic-langid = { version = "0.9", features = ["macros"] }
|
||
sys-locale = "0.3"
|
||
|
||
# === Servo (puriy-engine) ===
|
||
# Crates publicados de Servo embebibles individualmente. html5ever/markup5ever
|
||
# ya entran via ammonia→surrealdb→nakui, así que alineamos versión para no
|
||
# duplicar el árbol. markup5ever_rcdom es el DOM Rc-based simple (suficiente
|
||
# para Fase 2: parsear y renderizar, sin scripting). cssparser es el tokenizer
|
||
# CSS de Stylo, sirve para inline styles. ureq = HTTP síncrono minimalista,
|
||
# evita pull de tokio en el engine.
|
||
html5ever = "0.39"
|
||
markup5ever = "0.39"
|
||
markup5ever_rcdom = "0.39"
|
||
cssparser = "0.35"
|
||
url = "2"
|
||
ureq = { version = "2", default-features = false, features = ["tls"] }
|
||
|
||
# === takiy-synth (SoundFont MIDI) ===
|
||
# rustysynth = sintetizador SF2 puro Rust, MIT. Reemplaza el oscilador
|
||
# feo de takiy-synth por muestras reales (FluidR3, GeneralUser GS, etc).
|
||
rustysynth = "1.3"
|
||
|
||
# === takiy-playback (audio device output) ===
|
||
# cpal = backend de audio cross-platform (ALSA/PulseAudio/Pipewire en
|
||
# Linux, WASAPI en Windows, CoreAudio en macOS). Lo usamos sólo para
|
||
# abrir el device default y empujar muestras f32 — nada de mezclado
|
||
# ni efectos en el callback.
|
||
cpal = "0.15"
|
||
|
||
# === media-source-wav (decoder PCM en disco) ===
|
||
# hound = lector/escritor WAV puro-Rust, sin deps nativas. Soporta PCM
|
||
# entero (8/16/24/32) y float (32). Suficiente para abrir samples y
|
||
# stems de prueba sin meter ffmpeg/symphonia.
|
||
hound = "3.5"
|
||
|
||
# === media-source-{mp3,flac,vorbis} (decoders vía symphonia) ===
|
||
# symphonia es una colección de decoders puro-Rust mantenida. `mp3` cubre
|
||
# media-source-mp3; `flac` (decoder + demuxer FLAC nativo) cubre
|
||
# media-source-flac (lossless); `vorbis` + `ogg` (codec + demuxer Ogg)
|
||
# cubren media-source-vorbis (lossy clásico, libre de patentes). Sin aac:
|
||
# ese tier patentado entra por shared/foreign-av.
|
||
symphonia = { version = "0.5", default-features = false, features = ["mp3", "flac", "vorbis", "ogg"] }
|
||
|
||
# === media-source-opus (decoder Opus NATIVO puro-Rust) ===
|
||
# Opus es el formato de audio nativo de gioser (par del video AV1). ogg
|
||
# demuxea las páginas Ogg; opus-wave es un port puro-Rust de libopus
|
||
# (SILK+CELT, sin C ni FFI) — par del rav1d del lado video.
|
||
ogg = "0.9"
|
||
opus-wave = "3"
|
||
|
||
# === media-source-webm (demux nativo Matroska/WebM) ===
|
||
# matroska-demuxer es un demuxer puro-Rust de MKV/WebM (EBML). Saca los
|
||
# paquetes de los tracks V_AV1 y A_OPUS para alimentar a media-source-av1
|
||
# y media-source-opus — un .webm AV1+Opus se reproduce 100% nativo.
|
||
matroska-demuxer = "0.7"
|