Realm
GPU vision pipeline

Images and video.
Straight to the model.

From raw media to model-ready tensors.

Image Processing

Image Processing

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

Video Decode

Video Decode

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

Ml Bridge

Ml Bridge

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

Capability-Gated

Capability-Gated

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

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.

Image_ingest.rs

1use oa::{image, Engine, ImageFormat};
2
3let engine = Engine::new()?;
4let decoded = image::decode_file(&engine, path, ImageFormat::Rgb)?;
5let resized = image::resize(
6 &decoded,
7 224,
8 224,
9 image::InterpolationMode::Bilinear,
10)?;
11let input = image::normalize(&resized, image::NormalizationParams::default())?;
12let tensor = input.as_matrix();

Load and preprocess an image

One call from file path to normalised GPU tensor. Resize and ImageNet normalisation happen on the device.

Video_decode.rs

1use oa::{video, Engine};
2
3let engine = Engine::new()?;
4let mut source = video::VideoDemuxer::open("clip.mp4")?;
5let mut decoder = video::VideoDecoder::create(&engine, source.info())?;
6
7while let Some(packet) = source.read_next_packet()? {
8 if let Some(frame) = decoder.decode(&packet)? {
9 consume(frame);
10 }
11}

Decode video to Ml tensor

Open a decoder session, submit a compressed access unit, receive a normalised tensor in the same call.

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.