Changelog & Release Notes
All notable changes, bug fixes, and feature additions to the now2sdk framework will be documented
on this page.
Version 0.2.1 (October 18, 2026)
New Features & APIs
- LPlaylist Playout Engine & Automation: Added broadcast playout playlist management class (
LPlaylist). Supports item sequencing (video/audio files, live feeds, graphics, animations), in/out point trimming, seamless gapless playback, loop modes, item insertion/removal, telemetry callbacks, and real-time state control. Fully integrated with C API (now2sdk_c_api.h) and C# / VB.NET wrappers (Now2Media.SDK).
Version 0.2.0 (September 27, 2026)
New Features & APIs
- Multi-Channel Audio Architecture: Overhauled the entire audio processing pipeline across
the SDK to support up to 16 channels dynamically. Modules like
LRecorder,LMixer,LReplay,LLive, andLFramenow natively capture, process, and pass through up to 16-channel PCM audio without forced downmixing. - Dynamic VU Metering in UI: Updated
LPreviewandLMultiview(OpenGL and Cairo rendering) to automatically detect the incoming stream's channel layout and render 2, 4, 6, 8, or 16 individual VU meters accordingly, complete with peak holds, gravity decay, and precise dB scales. - LMixer Scale Mode (Canvas & Absolute): Added
scale_modeglobal property toLMixer. When set to"canvas", all layers dynamically scale and position themselves proportionally relative to the current mixer output resolution based on theirrefCanvasWandrefCanvasHvalues."absolute"mode retains raw pixel coordinates regardless of output scaling. - Broadcast-Grade A/V PTS Synchronization & Buffer Tuning: Completely rebuilt the audio rendering loop in hardware output (
LOutput) and UI preview (LPreview/LVideoWidget) to enforce strict PTS-based (Presentation Time Stamp) A/V locking.- LOutput: Reduced latency to near zero by dropping audio queue sizes from 500 to 25 and synchronizing audio extraction strictly with active video PTS. Hardware (DeckLink) out-of-sync drifts during framerate switches (e.g. 50p to 25p) are entirely eliminated.
- LPreview: Solved UI audio bleeding during
LFilepause events. Mute toggles now manipulate real-time audio sample volumes (0.0fto1.0fmultiplier) rather than freezing the SDL device, preventing internal clock drift. Queue size restored to 500 packets to comfortably absorbLFileinitialization bursts without dropping early audio.
Version 0.1.1 (July 24, 2026)
New Features & APIs
- LCharacter Start & Stop Counter Tags: Enhanced
LCharacterdynamic tag engine with%countdown::START::STOP::FORMAT%and%countup::START::STOP::FORMAT%macros. Timers can start and freeze at precise start/stop boundaries (such as match halves, e.g. 45:00 to 90:00), supporting sub-secondHH:mm:ss:iiformats. - LFile Property-Based Daily Event & Crash Logging: Added thread-safe 24-hour daily event
and crash logging controlled via
setProps(log,log.path,log.name,log.file). Supports automatic home directory expansion (~), fallback to./logs/, and logs playout commands (PLAY,PAUSE,STOP,NEXT,BACK) alongside fatal OS crash signals. - LRecorder Auto-Split & Manual Split: Added time-based automatic file splitting
(
setSplitMinute(int minutes)) and instant manual file splitting (Split()) toLRecorder. Recording files can automatically rotate every N minutes or on demand without losing audio/video frames or stopping the recording pipeline. Filenames are automatically indexed (filename_001.mp4,filename_002.mp4). Also exported via C API (now2sdk_recorder_set_split_minute,now2sdk_recorder_split). - Full Medialooks Broadcast Matrix & Profile Matching: Updated
LRecorderwith a complete broadcast and web container/codec matrix (mp4,mov,mxf,mxf_d10,avi,mkv,webm,ts,mpg,dv,gxf). Integrated Avid DNxHR profile aliases (dnxhr_lb,dnxhr_sq,dnxhr_hq,dnxhr_hqx,dnxhr_444) and Apple ProRes profiles (prores_proxythroughprores_4444) with automatic pixel format mapping (yuv422p,yuv422p10le). - Dynamic Video Format Querying (
getAvailableVideoFormats): AddedLRecorder::getAvailableVideoFormats(container, codec)and C APInow2sdk_recorder_get_available_video_formats. Prevents UI option mismatches by constraining available resolution/FPS selections based on container and codec limitations (e.g. strict VC-3 standards fordnxhd, SD PAL/NTSC fordvandmxf_d10). - Multi-Channel Audio Recording Support (Up to 8-Channel / 16-Channel): Upgraded
LRecorderaudio pipeline to dynamically handle multi-channel layouts (such as 8-channel discrete broadcast PCM or surround sound), removing the previous 2-channel stereo limitation. - LMultiview GPU-Only Engine: Redesigned
LMultiviewrendering pipeline to run 100% on GPU shaders. Removed all CPU scaling (sws_scale), offscreen intermediate cell framebuffers, and cell RGB textures. Frames are uploaded natively and scaled directly to target viewports on the main FBO in a single pass. - Lock-Free Multiview Rendering Loop: Decoupled state locks from OpenGL uploads and draw
calls in
LMultiview, eliminating stutter during source switching and switcher transitions.
Version 0.1.0 (July 4, 2026)
New Features & APIs
- Modular UI Integration Plugins: Split Qt6 and GTK4 graphics backends out of the core
libnow2sdk.solibrary into separate runtime-loaded plugins (libnow2sdk_qt.soandlibnow2sdk_gtk.so). The core SDK now has zero compile-time and startup runtime dependencies on GTK4 or Qt6 widget packages.LPreviewdynamically and transparently loads the correct backend plugin viadlopen/dlsymat runtime when theui_frameworkproperty is set. - LMultiview Class: Added high-performance multi-view monitoring grid compositor. Layouts can be configured with Program (PGM) and Preview (PVW) screens at the top, bottom, left, or right, with up to 12 grid camera inputs. Built-in tally borders (Red/Green), dynamic cell name labels, and live VU audio peak level meters per cell rendered on offscreen GPU context.
- PNG Watermark Logo Overlay: Replaced the old pixelated bit text watermark with a
high-quality, pre-loaded transparent PNG logo (
logo-now2media.png) scaled to half-size. Set default opacity to 30% (70% transparent) and addedflipVerticalsupport insideLLicenseManager::applyWatermarkto handle vertically inverted OpenGL frames.
Performance & CPU Optimizations
- Audio Resampler Bypass: Bypassed CPU-based audio resampling (
swr_convert) insideLLive::processAudioFrameInternalwhen target audio format properties are not explicitly set (defaulting to pass-through), dramatically reducing CPU overhead for monitored sources. - Zero-Copy NDI Audio & Video Ingestion: Implemented custom
av_buffer_creatememory wrappers with dedicated free callbacks (ndi_frame_free_cb/ndi_audio_frame_free_cb) for NDI video and audio streams, avoiding heap allocations and memory copy overhead on the CPU. - CPU Spin Locks Prevention: Added millisecond safety sleeps inside NDI and VTP slicer loops when no source frames are received, avoiding tight CPU spinlocks when sources are idle.
- NDI Bandwidth & Decoding Optimization: Set NDI color format to
NDIlib_recv_color_format_fastestto optimize chroma upsampling during decoding.
Version 0.0.2 (June 28, 2026)
New Features & APIs
- LAudioMixer Class: Added a multi-channel audio mixing and VU level monitoring engine. Supports custom channel gains, channel mutes, master volume controls, and real-time left/right channel peak meters.
- Chain Pull-Rendering (Master Clock Sync): Integrated an on-demand frame pull mechanism. Switcher and Mixer layers can now synchronize their rendering pipelines to a downstream master clock, eliminating thread drift and display judder.
- Dynamic Timing Fallback Lifecycle: Implemented automatic thread control. The switcher thread automatically halts and joins when pull consumers are connected, and respawns a high-precision 50 FPS internal timer thread when all consumers disconnect.
- Hardware Ingest Drop Detection: Added automatic frame drop tracking for DeckLink inputs
using the
GetStreamTime()API, logging warnings ([DECKLINK DROP DETECTED] X frames dropped!) to console.
Reliability & Sync Fixes
- Jitter-Free DeckLink Audio-Video Sync: Video frame items and audio packets are now stamped
with a unified
steady_clocktimestamp at the hardware callback level (VideoInputFrameArrived), resolving OS thread scheduling audio cuts and lip-sync drift. - Limited Range YUV Correction: Fixed luma-key conversion values for broadcast inputs (mapping limited range [16, 235] to full range [0.0, 1.0]), preventing transparent slate/CG overlays from leaving grey halos or grass discoloration.
- NDI & VTP Dynamic Reconnection: Playout sinks (
SwitcherSink/MixerSink) now dynamically re-allocateSwsContextandSwrContextbuffers if NDI stream source dimensions, frame rates, or audio sample rates change mid-stream. - Native GPU Planar YUV Ingestion: Added direct GPU texture uploads for
YUV422P,YUVA422P, andYUVA420Pformats, saving CPU cycles by skipping software conversions. - Fast-Path SwScale Bypass: Bypasses
sws_scalescaling pipelines insideLSwitcherif the source layer format and resolution already match target output standard, minimizing CPU copies.
Build & Licensing
- LGPL FFmpeg 8.1.2 Isolation: Compiled FFmpeg from source using LGPL-only flags. Resolved
transition link configurations to exclude GPL dependencies (
libx264,libx265) while maintaining Nvidia GPU hardware-accelerated NVENC. - Cisco OpenH264 Integration: Integrated Cisco's patent-safe OpenH264 library as a CPU-fallback encoder for offline H.264 exports.
Version 0.0.1 (June 18, 2026)
- Initial Beta Release: Open-core C++ broadcast SDK for Linux featuring
LFileplayout,LLivecapture,LRecorderencoder,LStreamstreaming sink,LCharactergraphics, andLMixeroffscreen OpenGL compositor.