Crate map

Remotia is organized as a workspace of crates. The remotia umbrella crate re-exports them behind feature flags so you only compile what you need.

Core crate

Feature flagCratePurposeKey types
(always enabled)remotia-coreCore traits, pipeline engine, built-in processorsFrameProcessor, FrameProperties, FrameError, Pipeline, Component, PipelineFeeder, PipelineHandle, PipelineRegistry, Ticker, Switch, CloneSwitch, OnErrorSwitch, PoolingSwitch, DepoolingSwitch, Sequential, Function, Closure, AsyncFunction

Optional crates (feature flags on the remotia crate)

Feature flagCrate(s)PurposeKey types
buffersremotia-buffer-utils, remotia-buffer-utils-macrosBuffer pool management and allocationBuffersPool, BufferAllocator, BufferBorrower, BufferRedeemer, PoolRegistry, #[buffers_map] macro
captureremotia-core-capturersScreen and file captureScrapFrameCapturer, Y4MFrameCapturer, Y4MRGBAFrameCapturer, yuv420_to_rgba()
renderremotia-core-renderersWindow rendering via winit + pixelsWinitRenderer, WinitRunner
transmissionremotia-core-transmissionTCP frame transportTcpFrameSender, TcpFrameReceiver
profilationremotia-profilation-utilsProfiling, logging, frame-droppingTimestampAdder, TimestampDiffCalculator, ProfiledSequential, ThresholdBasedFrameDropper, TimestampBasedFrameDropper, ConsoleAverageStatsLogger, CSVFrameDataSerializer, ConsoleDropReasonLogger
serializationremotia-serialization-utilsBincode serialization of frame dataBincodeSerializer, BincodeDeserializer

External crates (separate Cargo dependencies)

These live in separate repositories and are not part of the remotia umbrella crate. Add them as direct dependencies.

CratePurposeKey types
remotia-ffmpeg-codecsFFmpeg encoder/decoder integration via pusher/puller architectureEncoderPusher, EncoderPuller, DecoderPusher, DecoderPuller, EncoderBuilder, DecoderBuilder, ScalerBuilder
remotia-srtSRT protocol sender/receiver processorsSRT sender/receiver processors

Feature flag usage

[dependencies.remotia]
version = "0.1.0"
default-features = false
features = ["capture", "transmission"]  # only what you need

All features are off by default. Enable only the ones you use to minimize compile time and dependencies.