Neat Library Release Notes
Release notes for the SiMa.ai Neat Library.
Unreleased
Breaking changes
- The Neat Library C++ ABI is now 4 and the shared-library SONAME is
libsima_neat.so.4. Tensors now carry feature-extractor semantic metadata, public GenAI request/result types carry ASR task, language, and probe metadata, andGraphLinkOptionscontains realtime admission limits. Rebuild C++ applications and plugins and install matching Core runtime and development packages. - Realtime graph composition now uses
GraphLinkOptions,Graph::connect(), andGraph::build(). The previewRealtimeGraphLinkOptions,connect_realtime(),build_fused_realtime_sources()/build_fused_realtime_source(), andRealtimeEveryFrameByStreamAPIs were removed. Saved graphs containingrealtime_every_frame_by_streammust be recreated with a supported policy; see Connect live fragments.
Runtime changes
-
Native H.265/HEVC decode is available through
SimaDecodeandRtspDecodedInputin C++ and Python.RtspEncodedInputprovides parsed H.265 access units without decoding them. H.265 inputs must use HEVC Main profile, 8-bit, 4:2:0. The codec selectors accept bothH265andHEVC; H.264 selectors also acceptAVC.FormatTag/pyneat.Formataccept the same aliases at encoded graph boundaries, and still serialize asH264andH265. -
VideoSenderforwards encoded H.264 or H.265 as RTP over UDP without re-encoding throughVideoSenderOptions::Passthrough(codec)/pyneat.VideoSenderOptions.passthrough(codec). H.265 uses RTP payload type 98 by default; H.264 keeps 96.H264RtpUdpFromEncoded()is deprecated in favor ofPassthrough(RtspCodec::H264). -
Raw
VideoSenderinput now omits its format conversion automatically for proven NV12 in system or SiMaAI memory when the installed encoder advertisesinput-layout-aware=true. Other raw formats, unknown memory/layouts, and inputs without a reliable format contract retain the existing conversion to NV12. TheH264RtpUdpFromRaw(...)C++ and Python APIs are unchanged. -
RTSP inputs select the RTP payload type with a single codec-neutral
payload_typefield onRtspEncodedInputOptionsandRtspDecodedInputOptions:-1selects the codec default (96 for H.264/H.265, 26 for MJPEG),0disables payload filtering, and a positive value selects an exact payload.RtspEncodedInputOptions::h264_payload_typeandmjpeg_payload_typeare deprecated and warn once at runtime when they change the resolved payload. -
Ordinary
build()now selects fused lowering automatically for eligible live fan-in. A direct encoded H.264 or H.265VideoSenderbranch is fused before decode without a decoded-frame CPU copy. The source, decoder, and sender must agree on codec; a mismatched pair stays in separate pipeline segments. Set that edge toRealtimeLatestByStreamfor live preview so a slow video receiver replaces stale access units instead of backpressuring the decoder branch. -
Added C++ and Python
CameraInputdocumentation and tutorial coverage for MIPI/libcamera source-owned graphs, including adaptive SiMaAI memory handoff before CVU/MLA model routes. -
MetadataSendernow keeps UDP payloads within 1200 bytes by chunking larger JSON messages. Update Insight to a version with metadata chunk reassembly before or together with this Neat Library version; older Insight versions continue to support unchanged JSON payloads up to 1200 bytes.
Graph construction and validation
- Graph composition now treats one Node object as one logical vertex. Duplicate insertion and
overlapping fragment imports fail atomically, while repeated
connect()calls reuse an existing Node for fan-out. - Every materialized pipeline segment now validates final GStreamer names during
build(); an explicitvalidate()call is not required. Duplicate or dropped names fail withmisconfig.pipeline_shapeinstead of producing a truncated pipeline. - Custom fragments now report all explicit names and transform named-pad references together with declarations. Name collisions are rejected rather than auto-renamed.
| Release | Compatible Neat SDK | Notes |
|---|---|---|
| 0.4.0 | 2.1.3.0 | Neat Library 0.4.0 |
| 0.3.0 | 2.1.2.3 | Neat Library 0.3.0 |
| 0.2.2 | 2.1.2.2 | Neat Library 0.2.2 |
| 0.2.1 | 2.1.2.1 | Neat Library 0.2.1 |
| 0.2.0 | 2.1.2 | Neat Library 0.2.0 |
| 0.1.0 | 2.0.0 | Neat Library 0.1.0 |