Changelog & Release Notes
All notable changes, bug fixes, and feature additions to the now2sdk framework will be documented on this page.
Version 0.1.1 (July 24, 2026)
New Features & APIs
- 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.