Advanced Video Features
Use this page when a project needs more than a single camera input and a simple encoded output. These features are still configuration tasks, so they live with the rest of the camera, scene, layout, and stream settings.
Auto Video Packing
Auto Video Packing lets the Player report which videos are visible and how much screen space they occupy. The Streamer then scales and packs those video sources into the encoded output so small or hidden feeds do not consume full resolution.
Use it when:
-
A Player layout shows several camera feeds and the visible layout changes at runtime.
-
The operator UI can show the same source at different sizes.
-
The Streamer should avoid sending full-resolution video for feeds that are off-screen or visually small.
Configure it from the Player project settings:
- Automatic Video Packing
-
Enables Player-driven packing.
- Apply Auto Crop
-
Takes viewport crop into account when calculating video size. When disabled, Oden sends the full video source and estimates screen occupation from the visible area instead of cropping the source to that area.
- Use Fixed Streamer Resolution
-
Keeps the output resolution fixed instead of allowing dynamic output size.
- Fixed Streamer Resolution
-
The fixed output size used when fixed resolution is enabled.
On the Streamer, the Output panel shows the current packed output resolution, maximum Streamer resolution, Player screen resolution, and per-video packing data.
When Auto Video Packing is enabled, use Per Megapixel Bitrate in Bitrate Control and Auto Video Packing so bitrate follows the dynamic packed resolution.
Prefer auto packing over maintaining separate Streamer scenes only to change camera layouts.
The screen analyzer also works through Virtual Cameras that are visible in the Player viewport.
Per-video packing data includes the original resolution, screen occupation, crop percentage, cropped resolution, downscale factor, scale, and scaled resolution.
Downscale is a priority multiplier from 0.0 to 1.0; the default 1.0 keeps normal priority, while lower values tell the packer that the source may be reduced more aggressively.
Important limits:
-
Auto packing supports up to 16 video sources.
-
Hidden videos are sent at no more than
32x32. -
Showing the same video several times can make that source consume more output resolution.
Output Alignment
Use Output Alignment on the Streamer when several 2D videos must be placed precisely inside the encoded output.
Make the 2D Video entities children of the Output Alignment entity.
The entity sends alignment metadata with the stream so the Player can split the incoming encoded texture back into named sub-streams. The Player can receive:
- LLTP
-
The complete encoded output texture.
- Stream
-
A cropped sub-stream corresponding to one aligned video source.
- Focus Region Composite
-
A region-of-interest stream assembled from one or more focus-region sources.
Key settings:
- Enabled
-
Locks the camera to the output-alignment layout. Keep it enabled while streaming or alignment metadata will be wrong.
- Snap to Output
-
Adjusts focus-region placement to avoid encoder artifacts. Keep it enabled when using focus regions.
- Auto-Layout
-
Attempts to place child 2D videos automatically inside the output area.
- Id
-
The sub-stream identifier shown on the Player side.
- Position, Scale, Rotation, Mirror
-
Pixel placement and orientation for each source. Per-source settings appear after a child
2D Videohas an active input source. The output coordinate origin is the upper-left corner. Sources may be placed partly outside the encoded output when a project intentionally crops them. Scale can be edited as pixels or percentage while keeping aspect ratio. Rotation is limited to right-angle rotations, and rotation or mirror settings also affect focus-region placement. Output Alignment affects child2D Videoentities; other child entity types are not remapped into the encoded output.
Focus regions are useful when one part of a camera needs more detail than the rest.
Use one 2D video as the full source and another clone-stream 2D video as the focus source, then tune Focus Center and Focus Size.
Validate every resolution scale used by bandwidth control, because encoder block boundaries can create artifacts at focus-region edges.
Video Composition and Virtual Cameras
Use Video Composition when multiple video inputs should become one larger texture before being cloned or displayed.
The composition entity does not display video by itself; clone it into another video input or layout entity.
Common settings:
- Resolution
-
Output texture size.
- Background
-
RGBA background color for empty areas.
- Add Source
-
Adds a source video to the composition. The source behaves like a clone of the selected video source.
- Origin
-
Upper-left pixel position for a source inside the composed texture.
- Size
-
Pixel size for the source inside the composed texture. Preserve aspect ratio unless the project intentionally stretches the image.
- Texture preview
-
Shows the composed texture.
- Save Texture as png
-
Writes the current composed texture to an image file for inspection or support.
Use Virtual Camera when a scene view should become a video source.
Typical uses are extracting a 2D view from stitched video, rendering a subset of the scene, or creating a camera view that can be cloned into a Player layout.
Virtual Camera settings to check:
- Resolution
-
Output texture size.
- Field of View
-
Camera field of view.
- Only Render
-
Restricts rendering to entities with matching reference names to reduce load.
- Set To Current View
-
Copies the current viewport position, rotation, field of view, and resolution into the virtual camera.
- Keep Aspect Ratio
-
Preserves the configured aspect ratio when the rendered target changes size.
- Background
-
Sets the virtual camera background.
- Texture preview and Save Texture
-
Inspect or export the rendered virtual camera texture.
- Move View to Virtual Camera
-
Moves the viewport to the virtual camera position. It does not change the viewport aspect ratio or field of view.
A Virtual Camera does not display anything by itself.
Consume it through a 2D Video, Clone Stream, composition, or plugin workflow.
Color and Keying
Oden processes video and color internally with high-precision floating point color. Most camera and output color-format defaults are correct, but some sources expose color-standard choices such as BT.601 or BT.709, reduced or full range. Change them only when the source or display path is known to use a different standard. Common YCbCr choices are SD or HD, reduced or full range, with BT.601 usually matching SD sources and BT.709 usually matching HD sources.
Color tools are available on video-oriented entities, including 2D Video and stitched video:
- Opacity
-
Adjusts texture transparency.
- Use LUT
-
Applies a
.cube3D lookup table. - Curve
-
Adjusts contrast and brightness response.
- Contrast, Brightness, Gain, Hue, Saturation
-
Basic color correction.
These controls are post-adjustments in Oden; they do not change camera firmware settings. Use LUTs from grading or calibration tools after basic correction when the same look should be reused across projects. For stitched video, individual per-camera RGB gain controls can be used where exposed to correct camera-to-camera mismatch before applying global corrections.
For multi-camera stitched video, a typical color workflow is:
-
Synchronize colors between cameras.
-
Make global corrections until the image is neutral.
-
Apply a 3D LUT for the final look.
Chroma Key removes a colored backdrop from a video surface. Tune it in this order:
-
Match the key color to the real backdrop color, including hue.
-
Increase hue and saturation tolerance before increasing value tolerance.
-
Raise
Threshold: Cutuntil the backdrop becomes transparent. -
Adjust
Threshold: Blendfor a smooth edge. -
Use color correction and
Threshold: Colorto reduce colored fringes on retained objects.
Matte and chroma-key settings should be validated on the real camera and lighting setup, not only on a still frame.
AI Inference
Oden can run neural networks through NVIDIA TensorRT when the build and hardware support it. Supported model formats are ONNX and TensorRT engine files. ONNX models are converted to a device-optimized TensorRT engine at runtime, which can take several minutes.
Requirements:
-
NVIDIA GPU on desktop or Jetson.
-
TensorRT available to the Oden process.
-
CUDA and cuDNN available when ONNX import/conversion is needed.
On Windows, install the TensorRT release supported by the deployed Oden version and make sure the TensorRT lib directory is on PATH.
Inference settings:
- Add Neural Network
-
Loads an ONNX or TensorRT model.
- IO Tensors
-
Shows input/output tensors and lets you select a video stream as input.
- Info
-
Shows network UUID and runtime duration.
- Manually Trigger
-
Runs inference only when triggered through the plugin API instead of every frame.
Use the plugin API to retrieve inference output. For plugin loading and project deployment details, see Plugins.
Hardware Decoding
Oden supports hardware decoding for H.264/AVC, H.265/HEVC, and MJPEG on supported NVIDIA, Intel, and AMD paths. Current GPU drivers matter; install and validate drivers before diagnosing decode behavior.
Hardware decoder settings can appear on supported inputs:
- Preferred Decoder
-
Selects which GPU decodes when the computer has more than one supported GPU. Restart Oden after changing it.
- Skip Frame
-
Drops decoded frames to reduce decoder load. This is mainly useful for MJPEG sources running faster than the needed stream frame rate.
- Decode Device
-
NVIDIA CUDA device ID for NVDEC.
- FPS Match
-
Matches decode cadence to render cadence where available.
- Min Queue, Max Queue, Decode Queue
-
Queue sizes that trade latency against stability.
- Max Dec. Surfaces
-
Number of decode surfaces held by NVDEC. Higher values can improve performance but use more memory.
- CUDA Buf. Depth
-
Extra CUDA buffering when decoding on a non-default device.
For camera-specific hardware decode options, see Camera Inputs.