This commit refactors the WebRenderer to use a server-side streaming architecture with OGG-FLAC sink instead of the previous WebSocket-based approach. The changes include: - Replaced WebSocket communication with HTTP streaming using DirectOggFlacSink - Implemented a new pipeline architecture with dedicated handlers for UPnP commands - Added new modules for registration, registry, and streaming - Updated the renderer to work with a pipeline control system - Removed old WebSocket session management - Added support for HTTP streaming with gapless playback - Updated dependencies and features for the new architecture The WebRenderer now acts as a MediaRenderer UPnP device that serves audio streams via HTTP endpoints, with commands relayed to the audio pipeline through a new control system.
42 lines
1.3 KiB
TOML
42 lines
1.3 KiB
TOML
[package]
|
|
name = "pmoaudio-ext"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
|
|
[dependencies]
|
|
# Core audio types
|
|
pmoaudio = { path = "../pmoaudio" }
|
|
pmocovers = { path = "../pmocovers"}
|
|
|
|
# Optional dependencies for cache-sink feature
|
|
pmoaudiocache = { path = "../pmoaudiocache", optional = true }
|
|
pmoflac = { path = "../pmoflac", optional = true }
|
|
pmometadata = { path = "../pmometadata", optional = true }
|
|
|
|
# Optional dependencies for playlist integration
|
|
pmoplaylist = { path = "../pmoplaylist", optional = true }
|
|
pmocache = { path = "../pmocache", optional = true }
|
|
|
|
# Async runtime
|
|
tokio = { workspace = true }
|
|
tokio-util = { version = "0.7" }
|
|
async-trait = "0.1"
|
|
|
|
# Utilities
|
|
tracing = "0.1"
|
|
rand = "0.8"
|
|
|
|
# HTTP streaming dependencies
|
|
bytes = { version = "1.0", optional = true }
|
|
serde = { workspace = true, optional = true }
|
|
serde_json = { workspace = true, optional = true }
|
|
reqwest = { workspace = true, features = ["stream"], optional = true }
|
|
futures = { version = "0.3", optional = true }
|
|
|
|
[features]
|
|
default = []
|
|
cache-sink = ["dep:pmoaudiocache", "dep:pmoflac", "dep:pmometadata", "dep:serde_json"]
|
|
playlist = ["cache-sink", "dep:pmoplaylist", "dep:pmocache"]
|
|
http-stream = ["dep:pmoflac", "dep:pmometadata", "dep:bytes", "dep:serde", "dep:reqwest", "dep:futures"]
|
|
all = ["cache-sink", "playlist", "http-stream"]
|