Realm
GPU vision pipeline

Images and video.
Straight to the model.

From raw media to model-ready tensors.

Pedestrians detected and tracked on a rain-soaked city crossing

Image Processing

Comprehensive image transformations for machine learning. Resize, normalize, crop, and more — all optimized for GPU workloads.

City traffic mapped with colourful computer-vision traces

Video Decode

Vulkan Video decoding for H.264, H.265, AV1, and VP9 when the device exposes the required profiles and formats.

A robotic figure beside a sports car in a garage

Ml Bridge

Seamless integration with machine learning pipelines. Video frames become model-ready tensors in a single operation.

A human profile assembled from medical and vision images

Capability-Gated

One vendor-neutral API admits only the codec, format, queue, and kernel routes exposed by the selected device.

The runtime has a visible surface.

OA Viewer makes image and video state inspectable while the same device-resident values continue to serve a pipeline. These captures come from the C++ Viewer; matching Rust and Python Viewer previews now exist in the private development tree.

Everything between your media and your model.

Semantic images and video frames remain device-resident through ingest, transformation, model preparation, and preview. Stateful decode sessions exist only where media lifecycle requires them.

01

GPU Image Transforms

Resize, normalize, crop, flip, rotate, and blur — each available as a standalone call or chained in a pipeline. All operations run on the accelerator.
02

JPEG & PNG Ingest

Format-neutral JPEG, PNG, BMP, and TGA decode produces a semantic Image; WebP is available when its codec backend is built.
03

Hardware Video Decode

H.264, H.265, AV1, and VP9 streams decode through Vulkan Video when the device supports the required codec path.
04

Frame-to-Tensor Conversion

Single call converts decoded frames to tensors with optional normalisation. Automatic adaptation to device capabilities.
05

Capability Queries

Query supported codecs, maximum resolutions, and available features before opening a session. Know what your device can do.
06

Preview Output

The same decoded frame can feed a model and display output simultaneously. Multiple display modes available without restart.

Clean surface. No ceremony.

Each operation is a direct call. No pipeline objects to configure before you can resize an image. No session lifecycle for a normalisation pass. Stateful resources — decoders, encoders — exist where they earn their keep.

A short path from file to matrix.

This condensed SDK path decodes a JPEG, resizes it on the device, applies brightness and contrast, and reads the semantic image as a matrix. Rust and Python keep the same operation sequence.

1use oa::{Engine, ImageFormat, Path, image};
2
3let engine = Engine::new()?;
4let path = Path::asset_rel("image/visionTestPattern320x180.jpg");
5let source = image::decode_file(&engine, &path, ImageFormat::Rgb)?;
6let small = image::resize(&source, 160, 90,
7 image::InterpolationMode::Bilinear)?;
8let adjusted = image::brightness_contrast(&small, 0.05, 1.1)?;
9let values = adjusted.as_matrix().read_f32()?;
10assert_eq!(values.len(), 3 * 90 * 160);

Standard formats. Hardware decode where available.

Vision queries the selected device before opening a session, then admits only the codec, format, queue, conversion, and resolution routes it can support. Hardware-specific decisions stay private while availability remains explicit.

01

H.264 / AVC

Vulkan Video hardware decode when the selected device exposes the required profile, queue, and formats.
02

H.265 / HEVC

Capability-gated hardware decode with explicit admission rather than an unconditional platform claim.
03

AV1

Hardware decode where the device and driver expose the complete codec contract required by the stream.
04

VP9

A queried hardware path where available, with unsupported devices remaining explicit.
05

Zero-copy decode path

Decoded frames stay device-resident as they transition from video output to shader-readable work.
06

Hardware colour conversion

YCbCr-to-RGB uses sampler conversion where admitted and a measured compute route where required.
07

Ml and preview

One decoded frame can feed a normalized model input and an RGBA preview without a second decode.
08

Capability admission

Codec, resolution, format, queue, and conversion support are queried before a stateful session opens.

One library. Across the stack.

Follow the same Engine, values, and explicit execution contract into another module.