norsk-sdk package
Classes
| Class | Description |
|---|---|
see: NorskInput.browser() |
|
A processor that takes video frames as input and produces two outputs: the original input frames passed through, and browser-rendered frames synchronized to each input frame’s metadata. The HTML page receives frame metadata via a 'norsk-frame' CustomEvent and must call window.cefQuery({request: 'ready'}) when the DOM update is complete. A 'norsk-context' event is dispatched on context changes. |
|
A CMAF ingest input node that receives fMP4 segments via HTTP PUT/POST. Once created, the ingest endpoint accepts segments at: - |
|
A CMAF TTML output node (TTML subtitles as |
|
SDI capture through a DeckLink card. see: NorskInput.deckLink(). |
|
SDI capture through a Deltacast card. see: NorskInput.deltaCast(). |
|
A media node that can run a generic AI model for tasks like object detection. |
|
see: NorskInput.fileMp3() |
|
see: NorskInput.fileMp4() |
|
see: NorskInput.fileTs() |
|
see: NorskOutput.fileTs() |
|
see: NorskInput.fileWav() |
|
see: . |
|
see: NorskOutput.whep() |
|
A media node that uses the Gemini Live API to continuously analyse video/audio, dispatching tool calls and text in real time. |
|
A session for interactively planning a LiveSpec via AI. This wraps a bidirectional gRPC stream for the Live Plan API, allowing you to submit a query, refine the proposed spec, and accept the final result. |
|
see: . |
|
see: NorskInput.m3u8MultiVariant() Pulls an HLS master playlist and emits a single set of streams covering every TS rendition the master enumerates. All renditions share one TimeDomain, so their timestamps are anchored to a common clock. Subtitle ( |
|
see: |
|
see: NorskInput.moq() |
|
see: NorskOutput.moq() |
|
MXL Input Node - reads media from an MXL shared memory domain. see: NorskInput.mxl() |
|
MXL Output Node - writes media to an MXL shared memory domain. see: NorskOutput.mxl() |
|
NDI Capture see: NorskInput.ndi(). |
|
see: NorskOutput.ndi() |
|
The entrypoint for all Norsk Media applications |
|
see: NorskInspect.qualityMonitoring() QualityMonitoring is a ProcessorNode — it analyses incoming video frames, annotates them with quality decisions, and forwards the annotated frames to downstream subscribers (e.g. a QualityReporting node). |
|
A media node that evaluates video frames against a ReasoningSpec. Subscribes to a video source, sends frames to the evaluation LLM, and emits tool calls and responses as events. |
|
A session for interactively planning a ReasoningSpec via AI. This is NOT a media node. It wraps a bidirectional gRPC stream for the Plan API, allowing you to submit a query, refine the proposed spec, and accept the final result. |
|
see: NorskOutput.rtmp() |
|
see: NorskInput.rtp() |
|
see: NorskDuplex.sip() |
|
Spectrum input inference node — subscribes to a video stream, samples frames, and streams auto-detection results (colour primaries, transfer function, etc.). see: NorskControl.spectrumInputInference() |
|
Spectrum video processor - applies an expression-based processing pipeline to video. Supports resize, crop, compose, color grading, tone mapping, LUT, transfer function, and gamut mapping operations. see: NorskTransform.spectrum() |
|
see: NorskInput.srt() |
|
see: NorskOutput.srt() |
|
Experimental: passive SRT probe from a live packet capture. see: NorskInput.srtPcapCapture() |
|
Experimental: passive SRT probe from a packet capture. see: NorskInput.srtPcap() |
|
see: NorskInput.srtRaw() |
|
StreamSourceSequence — plays an ordered sequence of sources gaplessly. |
|
see: |
|
see: NorskInput.tcpTs() |
|
see: NorskOutput.tcpTs() |
|
see: NorskInput.udpTs() |
|
see: NorskOutput.udpTs() |
|
Experimental: a UDP-TS input fed from a packet capture. see: NorskInput.udpTsPcapCapture() |
|
see: NorskOutput.whep() |
|
see: NorskInput.whip() |
|
see: NorskOutput.whip() |
Functions
| Function | Description |
| — | — |
| addInterval(a, b) | |
| ancillaryStreamKeys(streams) | Returns the stream keys for ancillary streams in a media context |
| ancillaryStreams(streams) | Filters a context to only the ancillary streams within it |
| ancillaryToPin(pin) | |
| audioStreamKeys(streams) | Returns the stream keys for audio streams in a media context |
| audioStreams(streams) | Filters a context to only the audio streams within it |
| audioToPin(pin) | |
| avToPin(pin) | |
| clientHostExternal() | |
| clientHostInternal() | |
| clientPortExternal() | |
| clientPortInternal() | |
| colorPrimariesFromProto(cp) | Reverse-map a protobuf ColorPrimaries enum value to a SDK string type |
| colorPrimariesToProto(cp) | |
| createLicenseChallengeResponder(identity) | Build an onLicenseChallenge responder from an identity. This is the "designer" response: it proves the caller’s identity by signing the nonce and declares the licensed product, carrying no per-workflow signature — the right response for a direct-SDK client authoring its own workflows. Pass the result straight to NorskSettings.onLicenseChallenge:
const norsk = await Norsk.connect({
onLicenseChallenge: createLicenseChallengeResponder({
certJson: fs.readFileSync("identity.cert.json", "utf-8"),
keyPem: fs.readFileSync("identity.key.pem", "utf-8"),
productName: "acme-product",
imageRef: "acme/acme-product:1.0.0",
}),
});
|
| debugUrlPrefix() | |
| decodeMeasurement(m, tapNames) | |
| extractSourcePins(expr) | Extract all source pin names from a spectrum expression tree. Source nodes with no name default to "video". |
| forEachStream(source, filter, keyHandler) | |
| fromInterval(interval) | |
| getAmountOfChannels(layout) | |
| intervalToMs(interval) | |
| isAdMarker(seg) | |
| isHlsTag(seg) | |
| isMediaSegment(seg) | |
| isProgramDateTime(seg) | |
| isScheduledTag(seg) | |
| mkDtmf(digits) | Construct a waveform representing a string of DTMF digits. This is of finite duration, you may wish to sequence silence afterwards |
| mkEncryption(encryption, pssh) | Generate encryption parameters from from an encryption KeyID and Key, in the form KEYID:KEY, both 16byte hexadecimal |
| mkSine(freq) | Provided for compatibilty, this is just e.g. { type: "sine", freq: 444 } |
| msToInterval(ms) | |
| nativeToListValue(input) | |
| nativeToStruct(input) | |
| nativeToValue(input) | |
| newSilentMatrix(rows, cols) | |
| norskErrorCode(err) | Extract the engine’s structured error code from a rejected node/create error, when it carried one (in the gRPC error_code trailer). Returns undefined for errors without a recognised code. Lets a client cleanly handle, e.g., a port-already-in-use listener failure:
try { await norsk.input.srt({ ... }); }
catch (e) { if (norskErrorCode(e) === "port_in_use") { ...surface to user... } else throw e; }
|
| norskHost() | |
| norskPort() | |
| playlistStreamKeys(streams) | Returns the stream keys for playlist streams in a media context |
| playlistStreams(streams) | Filters a context to only the playlist streams within it |
| publicUrlPrefix() | |
| requireAV(ctx) | Validation function to require at least one audio and at least one video stream. Often the default validation will happen to ensure this, as audio and video are subscribed from separate media nodes, but when one media node will produce both audio and video, default validation cannot know that both are required. |
| requireExactAV({ audio, video }) | Validation function to require exactly N audio and exactly M video streams. Often the default validation will happen to ensure this, as audio and video are subscribed from separate media nodes, but when one media node will produce both audio and video, default validation cannot know that both are required. |
| selectAll(streams) | Select all the streams from the input |
| selectAncillary(streams) | Select all the ancillary data streams from the input |
| selectAudio(streams) | Select all the audio streams from the input |
| selectAudioRendition(renditionName) | Select the audio stream with the given renditionName — e.g. to subscribe to one named output of an NorskTransform.audioGraph() node. |
| selectAV(streams) | Select all the audio and video streams from the input |
| selectExactKey(key) | |
| selectLocalPlaylist(streams) | Select only the locally-served playlist streams — the subset of selectPlaylist() whose origin is local. |
| selectPlaylist(streams, opts) | Select the playlist streams in a media context.
With no options (or when passed by reference as a sourceSelector) this returns ALL playlist streams, preserving the historical behaviour. Pass { from: 'local' } or { from: 'remote' } to restrict to a single origin — e.g. against an NorskOutput.hlsTsCombinedPush() node, which exposes both its locally-served and its remotely-pushed media playlists. |
| selectPushedPlaylist(streams) | Select only the remotely-pushed playlist streams — the subset of selectPlaylist() whose origin is remote. |
| selectSubtitles(streams) | Select all the subtitle streams from the input |
| selectVideo(streams) | Select all the video streams from the input |
| selectVideoRendition(renditionName) | Create a selector selecting all the video streams from the input with the specified rendition name |
| signLicenseChallenge(keyPem, challenge) | Sign an engine license-challenge nonce with an identity’s Ed25519 private key (PKCS#8 PEM). Exposed for runtimes that assemble a richer challenge response (e.g. relaying a signed workflow); most callers want createLicenseChallengeResponder(). |
| sourceToPin(source, pin) | |
| spectrumExpressionToProto(expr) | Convert a SpectrumExpression to its protobuf representation |
| streamKeysAreEqual(l, r) | Compares two stream keys by value, returning true if the stream keys refer to the same stream |
| subtitlesToPin(pin) | |
| subtitleStreamKeys(streams) | Returns the stream keys for subtitle streams in a media context |
| subtitleStreams(streams) | Filters a context to only the subtitle streams within it |
| toDeinterlaceSettings(settings) | |
| toFrameRateSettings(settings) | |
| toHealthThresholds(s) | |
| toSourceTime(apiSourceTime) | |
| transferFunctionFromProto(tf) | Reverse-map a protobuf TransferFunction enum value to a SDK string type |
| transferFunctionToProto(tf) | |
| valueToNative(value) | |
| videoRangeFromProto(vr) | Reverse-map a protobuf VideoRange enum value to a SDK string type |
| videoRangeToProto(vr) | |
| videoStreamKeys(streams) | Returns the stream keys for video streams in a media context |
| videoStreams(streams) | Filters a context to only the video streams within it |
| videoToPin(pin) | |
Interfaces
| Interface | Description |
|---|---|
Settings for an AAC encode see: NorskTransform.audioEncode() |
|
Settings for an AC-3 (Dolby Digital) encode. Supports mono/stereo/surround/5.1 at 32/44.1/48 kHz (channel layout and bitrate are on AudioEncodeSettings). see: NorskTransform.audioEncode() |
|
Settings shared by every standalone analysis tool node. |
|
Capabilities for an ST 2110-40 ancillary receiver. |
|
Settings for an Ancillary node see NorskTransform.ancillary() |
|
Settings for an Audio Build Multichannel Node see: NorskTransform.audioBuildMultichannel() |
|
Settings for an AudioDecode operation see: NorskTransform.audioDecode() |
|
One local audio output device. |
|
Settings for an audio encode see: NorskTransform.audioEncode() |
|
Audio energy analysis data from the aggregated local analysis. |
|
Audio energy tool configuration. |
|
Settings for an Audio Gain node see: NorskTransform.audioGain() |
|
An update operation for an Audio Gain node see: AudioGainNode.updateConfig() |
|
Builds a spectrum-audio processing graph. Start from AudioGraphBuilder.input (the single source); each operation takes input handle(s) + params and returns a new handle. Operations are added one at a time as the library grows. |
|
A measurement emitted by an analysis tap in an NorskTransform.audioGraph() graph, delivered to AudioGraphSettings.onMeasurement. |
|
A runtime parameter update for AudioGraphNode.setParams(). Fields are op-friendly (mapped to the engine’s parameter names internally); only those the target node supports take effect. Grows as ops gain runtime parameters. |
|
Settings for an AudioMeasureLevelsNode see: NorskControl.audioMeasureLevels() |
|
Settings for the Audio Mix Matrix Node see: NorskTransform.audioMixMatrix() |
|
Config update for the AudioMixMatrixNode. Call AudioMixMatrixNode.updateConfig() for updating the config. |
|
The settings for an AudioMix operation see: NorskTransform.audioMix() |
|
An update operation for an AudioMix node see: AudioMixNode.updateConfig() |
|
The settings for a single source within an AudioMix operation see: NorskTransform.audioMix() |
|
Settings for an Audio Signal Generator see: NorskInput.audioSignal() |
|
Settings for an Audio Split Multichannel node see: NorskTransform.audioSplitMultichannel() |
|
Settings for an Audio Transcribe operation using AWS see: NorskTransform.audioTranscribeAws() |
|
Settings for an audio transcribe/translate operation using Azure Speech Service see: NorskTransform.audioTranscribeAzure() |
|
Settings for an Audio Transcribe operation using Whisper sdk (whisper-cpp) see: NorskTransform.audioTranscribeWhisper() |
|
Settings for whisper-cpp VAD model see: AudioTranscribeWhisperSettings |
|
Configuration for pushing a segmented media stream directly to AWS S3 |
|
There are three possible modes: - "abr": encode in average bitrate mode, specified in kilobits/sec (note, 1 kilobit is 1000 bits). You can make use of the vbv settings to control the bounds on how much the actual bitrate can fluctuate within the bounds of the average - "cqp": encode in constant quantizer mode. In general, crf will give better results, although cqp can be faster to encode - "crf": encode in constant rate factor mode. This will give a constant 'quality' to the encode, but with a variable bitrate |
|
Settings for a Browser Application (Chromium Embedded Framework - CEF). Multiple browser input nodes will share an underlying CEF instance if the BrowserAppSettings are the same |
|
Settings for a Browser Input see: NorskInput.browser() |
|
A settings update for a running browser see: BrowserInputNode.updateConfig() |
|
Settings for a BrowserRenderNode see: NorskTransform.browserRender() |
|
Configures C2PA (Content Provenance and Authenticity) signing of CMAF or MoQ output segments. When set on an output, every init segment and media segment is signed in-process before being delivered to its destination. |
|
Configures C2PA (Content Provenance and Authenticity) verification of CMAF or MoQ input segments. When set on an input, every incoming init segment and media segment is validated against the C2PA Live Video continuity chain (spec §19.3); outcomes are surfaced via the Verification is reporting-only and fail-open: media continues to flow even when a segment fails to validate. |
|
Settings for an Caption Transform operation see: NorskTransform.captionTransform() |
|
Settings for updating a Caption Transform operation at runtime see: CaptionTransformNode.updateConfig() |
|
Settings for a CMAF Audio Output see NorskOutput.cmafAudio() |
|
How a CMAF output’s push destinations start. Local pull destinations are unaffected (a preview keeps working while held). |
|
Settings for a CMAF ingest input. Receives fMP4 init and media segments via HTTP PUT/POST. |
|
Settings for a CMAF Multi Variant Playlist see NorskOutput.cmafMultiVariant() |
|
Settings for a CMAF Audio and Video Outputs see NorskOutput.cmafAudio(), NorskOutput.cmafVideo() |
|
Settings for a CMAF TTML Output. TTML subtitles (ISO/IEC 14496-30, |
|
Settings for a CMAF Video Output see NorskOutput.cmafVideo() |
|
Settings for a CMAF WebVTT Output see NorskOutput.cmafWebVtt() |
|
Colour information for a raw video stream, as named values (the SDK maps them to the wire’s H.273 code points, or Norsk-private code points for the camera curves/gamuts H.273 cannot express — e.g. "logc4" + "arri-wide-gamut-4" for ARRI footage). Set on StreamMetadataOverrideSettingsUpdate to force a source’s colour metadata (e.g. BT.709) so it matches its siblings and avoids a downstream switch seeing a colour-context change — or to declare camera-log input so downstream colour processing linearizes it correctly. |
|
A layer to be composited on top of the base image |
|
Fields common to every per-connection health report, regardless of transport. |
|
Settings to configure a DeckLink (BlackMagic) output for SDI/HDMI playback see NorskOutput.deckLink() |
|
Settings to control SDI capture through a Deltacast card see: NorskInput.deltaCast() |
|
A single detected face. Landmarks are the YuNet 5-point set (right eye, left eye, nose tip, right mouth corner, left mouth corner), normalised 0-1. |
|
A single detected object from object detection analysis. |
|
Settings for a Dolby E encode. Dolby E is video-frame-locked: subscribe BOTH an audio source (the PCM to encode, on the "audio" pin) and a video source (timing only, on the "video" pin) — the Dolby E frame rate is derived from the video stream. Use with audioToPin()("audio") and videoToPin()("video"). see: NorskTransform.dolbyEEncode() |
|
Drop a number of frames after a certain N frames have already been accepted |
|
Drop every N frames from an incoming video stream |
|
Randomly drop frames on a stream - 0.0 means don’t drop any frames - 1.0 means drop every single frame |
|
Drop the first N frames from an incoming video stream |
|
Settings for an E-AC-3 (Dolby Digital Plus) encode. As AC-3, plus the bitstream mode (bsmod). see: NorskTransform.audioEncode() |
|
Settings for audio-input models |
|
Represents a single output tensor from an inference operation. |
|
Settings for video-input models |
|
LLM response time statistics emitted after each evaluation response. |
|
An event that the evaluation LLM can raise. The declaration (name, description, fields) is sent to the planning LLM so it can design the spec around these events. At evaluation time, events are emitted via onLLMResponse. |
|
A single field definition for a event declaration. |
|
Face detection data from the aggregated local analysis. |
|
Face detection tool configuration (YuNet). |
|
Settings for an image file source see: NorskInput.fileImage() |
|
Settings for a File Based MP3 Input see: NorskInput.fileMp3() |
|
Settings to control MP3 file output see NorskOutput.fileMp3() |
|
Information about an Mp4 File |
|
Settings for an File Based Mp4 Input see: NorskInput.fileMp4() |
|
Settings for updating a file-based Mp4 Input see: FileMp4InputNode.updateSettings() |
|
Settings to control MP4 file output see NorskOutput.fileMp4() |
|
Information about an Mp4 File track (i.e. an audio or video stream) |
|
The settings for an output Transport Stream written to file see: NorskOutput.fileTs() |
|
Settings for an File Based WAV Input see: NorskInput.fileWav() |
|
Settings to control WAV file output see NorskOutput.fileWav() |
|
Settings to control MP4 file output see NorskOutput.fileMp4() |
|
Settings for Gemini Video |
|
Options that affect automatic conversion behaviour (e.g. decode steps inserted when subscribing between nodes). Only supplied fields are changed; omitted fields retain their current (or default) values. Changes take effect on future subscriptions only. |
|
Per-connection health sampling configuration. Health events are on by default at a conservative interval; set |
|
Opt-in thresholds that make an input emit |
|
Settings for an HlgToSdrNode see: |
|
Configuration for pushing a segmented media stream directly to a generic http server |
|
Settings for a HLS TS Audio Output see NorskOutput.hlsTsAudio() |
|
Settings for a HLS Transport Stream Combined Push Output As well as pushing the muxed-TS segments and playlist to the configured , the node always serves the very same segments and playlist locally from the Norsk web server (byte-identical to what is pushed). Retrieve the local pull url with HlsTsCombinedPushOutputNode.url() — useful for a downstream tool that needs to read the playlist without configuring a second, independent destination. |
|
Settings for a Hls Ts Multivariant Playlist see NorskOutput.hlsTsMultiVariant() |
|
Settings for a HLS TS Video Output see NorskOutput.hlsTsVideo() |
|
The settings for a Image Preview Output see NorskOutput.imagePreview() |
|
The |
|
Base settings for most input nodes |
|
Per-stream wallclock-vs-media health within a connection health sample. See the SRT input metrics documentation for how to read these together. |
|
Shared configuration for inputs that have a start-up threshold that is to say, they drop data until the input has stopped bursting/settled down |
|
Settings to subtitles inspect node see NorskInspect.subtitles() |
|
A time interval measured as ticks / (ticks per second) This represents Norsk’s internal arbitrary precision timestamp. See addInterval(), intervalToMs(), |
|
A dedicated iroh listener identity (own key/allow-list/relay mode on its own endpoint) for a single MoQ input/output. Note the default-closed policy: relayMode 'default' (publicly reachable) with no allow-list refuses to start. |
|
Endpoint-level connection event on the shared iroh endpoint — delivered via the onIrohEndpointEvent SDK setting. remoteNodeId is TLS-verified. |
|
Configuration for the shared per-instance iroh endpoint (key-addressed QUIC: peers dial the endpoint’s public key — its NodeId — rather than an ip:port). All fields optional; unset fields fall back to the NORSK_IROH_* environment, then defaults (fresh unpersisted identity; inbound rejected until an allow-list is set). |
|
One live iroh listener — the shared endpoint (slot 0) or a dedicated one (matched by the slot configured in irohDedicated). |
|
Shared configuration for outputs that use a jitter buffer |
|
Settings for a Jitter Buffer see: NorskTransform.jitterBuffer() |
|
Information about a channel within a license |
|
License information, as reported by the Kantar Snap Embedder; see NorskKantarEmbedder.kantarEmbedder() |
|
OfflineLicense definition for the NorskKantarEmbedder.kantarEmbedder() |
|
The base OfflineLicense interface for the NorskKantarEmbedder.kantarEmbedder() |
|
OnlineLicense definition for the NorskKantarEmbedder.kantarEmbedder() |
|
The base OnlineLicense interface for the NorskKantarEmbedder.kantarEmbedder() |
|
Online License information, as reported by the Kantar Snap Embedder; see NorskKantarEmbedder.kantarEmbedder() |
|
Settings for an Kantar Audio Watermark Embedder node see: NorskKantarEmbedder.kantarEmbedder() |
|
Event raised by the Kantar Snap Embedder; see NorskKantarEmbedder.kantarEmbedder() |
|
Kantar version information |
|
Settings for a LiveEvaluateNode. The spec carries the configuration from the live plan phase. |
|
Token usage statistics from a live evaluate turn. |
|
Video configuration for the live evaluate node. |
|
Settings for creating a live plan session. |
|
The specification produced by the Live Plan phase. Describes how to configure a Live API session for real-time video analysis. |
|
Settings for the local audio monitor output see NorskOutput.localAudioMonitor() |
|
The standard settings for any node reading from a file |
|
Configuration for the serving of segments and playlists directly from the Norsk Web Server Note: While this is both useful for local testing and for sitting behind a reverse caching proxy / CDN it is not expected that Norsk serve as the edge server in most scenarios |
|
Settings for an LutProcessorNode see: |
|
Settings for Media Store playback see: NorskMediaStore.player() |
|
Settings to configure a media store recorder see NorskMediaStore.recorder() |
|
Settings to configure a media store snapshot see NorskMediaStore.snapshot() |
|
Settings for a MetadataCombineNode, see NorskTransform.metadataCombine() |
|
A metadata message as carried in a Transport Stream |
|
Settings for metrics node see |
|
The six verbs of a live migration between two Norsk instances, as one node speaks them. Every participating node — each rendition’s CMAF output, the multi-variant playlist — answers all six, so a coordinator never has to special-case a participant that implements only some. The same A handover, in order: 1.
|
|
What a migration verb answers with.
|
|
Periodic ingest-side statistics for a MoQ input. |
|
Settings for a MoQ ingest listener that accepts publisher connections. |
|
Settings for starting a QUIC listener for direct MoQT subscriber connections. Multiple egests on the same port share a single listener via the listener pool. |
|
Settings for connecting to a MoQT relay (e.g. CDN primary or backup). |
|
Settings to configure a Moq Egest see NorskOutput.moq() |
|
Per-track ingest counters for a MoQ input. Cumulative since the input started, except |
|
Weights controlling the MQA-AUDIO composite score aggregation (SVTA registry 24). Same start-at-100-subtract-penalties model as MQA-VIDEO; see the PureScript QualityMetrics module for the exact math. |
|
Tunable aggregation weights for the MQA quality-metrics pipeline. All sub-objects are optional — the server falls back to the defaults defined in Avp.Types.QualityMetrics for any missing piece. |
|
Weights driving the transport-stream error aggregation inside the composite MQA-VIDEO score. All values are non-negative per-event penalty weights. |
|
Weights controlling the MQA-VIDEO composite score aggregation. The score starts at 100 and subtracts a penalty per metric, clamped to [0..100]. See the PureScript QualityMetrics module for the exact math. |
|
Local MXL fabrics (cross-host RDMA/TCP transfer) interface selection. All fields optional; the best available interface is chosen when unset. |
|
The serialized fabrics TargetInfo for one pre-declared flow. Carry the targetInfo string out-of-band to the sending Norsk instance and pass it to its MXL output as a fabrics target. Security note: possession of a TargetInfo grants raw write access to the flow’s ring buffer — verbs/RoCE has no authentication or encryption, so treat these as credentials and use trusted networks only. |
|
Settings to configure an MXL (Media eXchange Layer) input. Reads v210 video and float32 audio from an MXL domain. see: NorskInput.mxl() |
|
Local MXL fabrics interface selection for an output. See the input-side MxlFabricsInterfaceSettings for field semantics. |
|
Configuration for a single MXL output flow (becomes an input pin on the node). |
|
Settings to configure an MXL (Media eXchange Layer) output. Writes v210 video and float32 audio to an MXL domain for consumption by other MXL-enabled applications. see: NorskOutput.mxl() |
|
A media node’s stream failed; see NorskSettings.onNodeError. |
|
Settings common to all media nodes |
|
Methods that allow you to manipulate color space, transfer functions etc in your video streams |
|
Methods that allow you to control and monitor media streams |
|
Methods that allow you to both ingest and egest media from your application at the same time |
|
Methods that allow you to inspect media streams, for monitoring, decisioning or debug purposes. |
|
Methods that allow you to embed audio watermarks into your media streams |
|
Methods to interact with the Media Store live-to-vod recording engine |
|
Methods that allow you to egest media from your application |
|
Top level Norsk configuration |
|
Methods that allow you query and update the features of the system that Norsk is running in |
|
TODO see: NorskTransform.videoEncode() |
|
Methods that allow you to manipulate your media streams |
|
Per-architecture knobs for NR-IQA models on the QualityMonitoring node. Only the sampling cadence lives here; hysteresis thresholds have moved to QualityReportingVideoSettings. |
|
Settings for a H264 Encode using Nvidia hardware A detailed description of these params can be found on the Nvidia Encoder Documentation If left undefined, all will default to Nvidia’s own defaults If a preset is configured, then all will default to the values provided by that preset |
|
Settings for a HEVC Encode using Nvidia hardware A detailed description of these params can be found on the Nvidia Encoder Documentation If left undefined, all will default to Nvidia’s own defaults If a preset is configured, then all will default to the values provided by that preset |
|
The rate control options for an nvidia encode For further info, consult the Nvidia Encoder docs |
|
Object detection analysis data from the aggregated local analysis. |
|
Object detection tool configuration. |
|
Configuration for pushing a segmented media stream directly to OCI Object Storage — natively via the OCI API (not the S3-compatibility layer), so OCI instance principals can be used (see OciAuth). |
|
OCR data from the aggregated local analysis. |
|
A single recognised text region from OCR. |
|
OCR tool configuration (PP-OCR text detection + recognition). |
|
A rectangle used for describing a subset of an image |
|
Settings for an Opus encode see: NorskTransform.audioEncode() |
|
A transition for a video composition part. A transition interpolates the source_rect, dest_rect, and opacity properties over the specified duration according to the specified easing function. As a special case, if a transition is specified and the input pin of the part changes, an opacity fade from one to the other will occur. |
|
Settings for an AV1 Encode using Netint Quadra hardware A detailed description of these params can be found on the Netint Quadra Encoder Documentation These fields have deliberately been written to maintain the same semantics as the Quadra documentation where possible. If left undefined, all will default to Quadra’s own defaults |
|
Settings for a H264 Encode using Netint Quadra hardware A detailed description of these params can be found on the Netint Quadra Encoder Documentation These fields have deliberately been written to maintain the same semantics as the Quadra documentation where possible. If left undefined, all will default to Quadra’s own defaults |
|
Settings for a HEVC Encode using Netint Quadra hardware A detailed description of these params can be found on the Netint Quadra Encoder Documentation These fields have deliberately been written to maintain the same semantics as the Quadra documentation where possible. If left undefined, all will default to Quadra’s own defaults |
|
Audio monitoring configuration. Each detector carries only operational params (threshold / window); the duration-based hysteresis is configured on the QualityReporting node. |
|
Black-frame detection configuration for the QualityMonitoring node. Only operational parameters live here; hysteresis thresholds have moved to QualityReportingVideoSettings. |
|
Dynamic configuration update for the QualityMonitoring node. Only NR-IQA sample cadence, the latency budget, and the black-detect threshold can be changed at runtime. |
|
Frozen-frame detection configuration for the QualityMonitoring node. Presence enables freeze-detect processing; all hysteresis configuration has moved to QualityReportingVideoSettings. |
|
Settings for the QualityMonitoring node. see NorskInspect.qualityMonitoring() |
|
Silence detection operational params. The threshold + analysis window live here; the duration-based hysteresis is configured on the QualityReporting node. |
|
Video-side quality monitoring configuration. Each detection is individually configurable; omit to disable. |
|
Audio reporting configuration. Silence hysteresis is duration-based (ms), since audio frames are variable-size; the level threshold is set on the QualityMonitoring node. |
|
Dynamic configuration update for the QualityReporting node. All fields are optional — only provided fields are updated; omitted fields keep their current values. |
|
Settings for the QualityReporting node. see NorskInspect.qualityReporting() |
|
A raised event — the unified shape shared by generative (onLLMResponse.toolCalls) and live (onEvent) evaluation. Fields are decoded native values, validated against the declared event schema; mismatches are surfaced in warnings, never dropped. |
|
Settings for a ReasoningEvaluateNode. The spec carries the prompt and state from the plan phase - evaluate just needs the spec, a provider, and video configuration. |
|
Settings for creating a reasoning plan session. Two modes of operation: - Event mode: provide |
|
The specification produced by the planning phase. - state: opaque JSON designed by the planning LLM for the evaluation LLM to track temporal context. Norsk does not interpret this. - prompt: the instruction sent to the evaluation LLM alongside each frame and the current state. - explanation: optional reasoning from the planning LLM about its design choices (why it chose certain state fields, etc.) - localAnalysis: optional list of local analysis tools to enable - includeFrame: whether to include JPEG frames in LLM calls (default true). Pass { on: "sceneChange" } to attach a frame only on the first call and after scene cuts (requires a scene_change tool in localAnalysis); everyNCalls adds a periodic refresh floor. A large token saver on static scenes. - events: function declarations the evaluation LLM can call. Carried through from the plan phase so the same events are registered at evaluation time. Internally, the SDK implementation may carry additional handler state but this is not part of the public interface. |
|
Video configuration for the evaluate node |
|
Base settings for any input node requiring access to a host:port pair |
|
The resolution of a video within Norsk |
|
Status update emitted when the LLM provider returns a retryable error (e.g. 429 rate limit). Sent before each retry attempt so the user has real-time visibility into transient failures. |
|
Region-of-interest metadata to attach to raw video frames. An empty |
|
A single rectangular region of interest. Coordinates are normalised to [0, 1] relative to the frame’s own width / height; |
|
Health for an RTMP input connection. Delivered to an RTMP input’s |
|
The settings for an RTMP output see: NorskOutput.rtmp() |
|
Settings to control how RTMP streams can be included as sources in your media workflow see: NorskInput.rtmpServer() |
|
A description of an Eac3 stream being delivered via RTP |
|
A description of an H264 stream delivered over RTP |
|
A description of an HEVC stream delivered over RTP |
|
Settings for an RTP input see: NorskInput.rtp() |
|
A description of a LinearPCM stream being delivered via RTP |
|
A description of a Mpeg4 Generic Aac stream |
|
A description of an incoming RTP stream |
|
This is the SAR/PAR for a video stream and is an expression of what shape each pixel has within a video stream x:1, y:1 being a square and the most common value for this |
|
Scene change detection data from the aggregated local analysis. |
|
Scene change detection tool configuration. |
|
Zero-shot scene classification data from the aggregated local analysis. label = best-matching configured label; confidence = softmax over the label cosines (CLIP 100x logit scale); scores = raw per-label cosine similarities (empty for summarised/bucketed aggregation entries). |
|
Zero-shot scene classification tool configuration (CLIP). Each label is embedded through the CLIP text encoder at instance creation (wrapped in "a photo of {label}"); every sampled frame is classified against the set by cosine similarity. |
|
Runtime-updatable SeiInjection fields. see SeiInjectionNode.updateConfig() |
|
Settings for an SeiInjectionNode. see: NorskTransform.seiInjection() |
|
Settings for a SIP session |
|
Settings for a SourceTime node see NorskTransform.streamSync() |
|
One scored utterance from speaker identification: speaker is undefined when no enrolled voice cleared the match threshold; confidence is the best cosine similarity either way. |
|
Speaker identification tool configuration (CAM++ voice embeddings against an enrolled gallery). Requires the vad tool in localAnalysis — only VAD-active audio is accumulated, and utterances are scored at speech end (or at maxUtteranceMs during long speech). Broadcast audio carries music beds and channel colour, hence the conservative default matchThreshold; lower it for clean speech. |
|
An artifact requirement declared by a flow-designing planner (see ReasoningPlanSettings.allowedTools): something the planner cannot invent — face gallery images, speaker gallery WAVs, customer model files — keyed by the localAnalysis instance id it applies to. Attach the artifact to the spec before evaluation, or start empty and use the runtime gallery APIs. Informational at evaluation time. |
|
Per-Spectrum-pipeline build-time knobs. Every field is INDEPENDENTLY optional: each one you leave unset keeps the server’s own default for that field, so setting just |
|
Result from Spectrum input inference analysis |
|
Settings for a SpectrumInputInference node. Analyzes video input to detect colour primaries, transfer function, video range, and other metadata with confidence scoring. |
|
One Spectrum output: a named expression tree plus an optional output pixel format. The name is mandatory and unique within a Spectrum node; it is used as both the OutputExpression name passed to the engine and the per-output rendition name observed downstream. |
|
Settings for an SRT Input node see: NorskInput.srt() |
|
Health for an SRT input connection. Delivered to an SRT input’s |
|
SRT transport stats for a connection at a health sample. Gauges are instantaneous; the packet counters are cumulative totals since the connection started (diff across samples for a per-interval rate). |
|
Settings for an SRT Connection node: one accepted connection of an SRT listener running |
|
Settings for an SRT Input node see: NorskInput.srt() |
|
The settings for an SRT output see: NorskOutput.srt() |
|
Settings for an SRT pcap live-capture input node. Experimental: passive SRT probe from a live packet capture. The node captures off a host interface (a |
|
Settings for an SRT pcap input node. Experimental: passive SRT probe from a packet capture. The node replays the SRT sessions found in a classic pcap file as if they had been sent to an SRT listener: one connection per session, the same connection callbacks and health events as NorskInput.srt() in listener mode, and the node closes once the capture has been delivered. see: NorskInput.srtPcap() |
|
Experimental. Passive-probe SRT stats for a pcap-derived SRT input ( |
|
Settings for an SRT Raw Input node see: NorskInput.srtRaw() |
|
A TsTable together with the source name of the SRT connection it was decoded from. |
|
Norsk-internal performance knobs for an ST 2110 receiver. Defaults work for typical workflows. |
|
Settings to create an ST2110 NMOS Node see: NorskSystemST2110.node() |
|
ST 2110-40 ancillary sender. Transports SMPTE 291 VANC packets (closed captions, SCTE-104 splice commands, AFD, SMPTE 12M timecode, etc.) at the matching video session’s frame rate. On the wire the SDP advertises Pair with a sibling video sender carrying the same |
|
Norsk-internal performance knobs for an ST 2110 audio sender. Defaults work for typical workflows. |
|
Settings to create an ST2110 Output see: |
|
ST 2110-40 subtitle sender. Wire-identical to ST2110OutputAncillarySender (same SMPTE 291 / RFC 8331 framing, same SDP) but accepts Subtitle stream inputs (CEA-708 / CEA-608 / OP-47) instead of Ancillary. A wire stream that needs to carry both subtitles AND ancillary today takes two separate senders. |
|
ST 2110-43 TTML sender. Carries TTML2/IMSC1.2 caption documents over RFC 8759 on a dedicated RTP session at 90 kHz. Wire is fundamentally different from ST2110OutputAncillarySender (different SDP, different RFC) so this is its own sender shape.
|
|
Norsk-internal performance knobs for an ST 2110 video sender. Defaults work for typical workflows; consult Norsk support before overriding. |
|
Per-sender SDP attribute overrides. Each field replaces the value Norsk would otherwise auto-derive. Leave a field unset / empty to keep the auto-derived value (the common case). Use these only for deployments where the controller / receivers expect a specific SDP value Norsk can’t infer from its own state — e.g. an explicit |
|
Schema for one state field. fieldType is a JSON-schema type name; itemType is the element type when fieldType is "array". |
|
Settings for a StreamAlign node This will reset all streams to the same framerates/sample rates and align their timestamps so that they completely line up for downstream operations see NorskTransform.streamAlign() |
|
The settings for a Chaos Monkey see: NorskTransform.streamChaosMonkey() |
|
Settings for a Stream Key Override see: NorskTransform.streamKeyOverride() |
|
Settings for a Stream Metadata Override Node see: NorskTransform.streamMetadataOverride() |
|
Settings for the StreamSourceSequence node. see NorskControl.streamSourceSequence() Plays an ordered sequence of sources gaplessly. Companion to (and the recommended replacement for) the NorskControl.streamSwitchHard() playlist pattern. Downstream sees a single logical stream with stream keys stable across source turnover. Unlike |
|
Settings for a Stream Statistics Node see: NorskControl.streamStatistics() |
|
Settings for the Hard Stream Switch see: NorskControl.streamSwitchHard() |
|
Settings for a StreamSync node see NorskTransform.streamSync() |
|
Settings for a Stream Timestamp Nudge see: NorskTransform.streamTimestampNudge() |
|
Settings to control stream timestamp report see NorskInspect.streamTimestampReport() |
|
Aggregated local analysis data emitted at the configured analysis interval. |
|
Settings for an Subtitle Convert operation see: NorskTransform.subtitleTranslateAws() |
|
An individual timed subtitle fragment (usually a word) |
|
Settings for an DVB Subtitle to image operation see: NorskTransform.subtitleToImage() |
|
Settings for an Audio Transcribe operation using AWS see: NorskTransform.subtitleTranslateAws() |
|
Parameters for the SVT-JPEG-XS software encoder. JPEG-XS (ISO/IEC 21122) is a low-latency, intra-only mezzanine codec aimed at visually-lossless compression. Every field is optional and falls back to the encoder default. |
|
Client-supplied identity and metadata for a pushed flow. Anything omitted is left to the engine, so this can be as little as a label. |
|
The flow a push registered, as reported by |
|
Retry and backlog policy for a TAMS flow push. |
|
Settings for a TCP Transport Stream input. Norsk acts as the TCP client, connecting out to the configured host/port and reconnecting on failure. see: NorskInput.tcpTs() |
|
The settings for an output Transport Stream over TCP. Norsk acts as the TCP client, connecting to the destination host/port and reconnecting on failure. see: NorskOutput.tcpTs() |
|
Per-tool inference performance statistics (rolling window over the last ~50 inferences). framesInferred < framesSeen when an inferEveryMs cadence gate is active. For VAD, framesInferred counts 512-sample inference windows rather than frames. |
|
Parameters for the Tencent TSC SDK AV1 encoder (tenav1) |
|
Parameters for the Tencent TSC SDK H.264 encoder (ten264, x264-compatible). Note the TSC SDK licenses online at encoder start — the deployment needs a credentialed sdk_config. |
|
Parameters for the Tencent TSC SDK HEVC encoder (ten265) |
|
Health for a connection-less TS input (udpTs / tcpTs). Delivered to the input’s |
|
Transport-level stats for a connection-less TS input (udpTs / tcpTs). No SRT-style loss/RTT; just a packet-gap signal alongside the media health. |
|
Where the TSC SDK’s sdk_config (Tencent Cloud credentials + the SDK’s private config blob) comes from: a file path on the media engine’s host, or the raw JSON contents (materialised to a private temp file engine-side). When omitted, the engine’s TSC_SDK_CONFIG environment variable is used. |
|
One entry of the DVB content descriptor (genre) classification. |
|
A single event (programme) within an EIT. |
|
A longer event description (DVB extended event descriptor). Multi-part descriptors are already reassembled, so |
|
One item of an extended event description (e.g. a cast role and the actor). |
|
The event name and a short description (DVB short event descriptor). |
|
A single service entry within an SDT. |
|
EIT (Event Information Table) — the electronic programme guide for a service. |
|
SDT (Service Description Table) — the services carried in the transport stream. |
|
TDT (Time and Date Table) — DVB wall-clock time. |
|
TOT (Time Offset Table) — DVB wall-clock time (with local offset descriptors). |
|
Capabilities for an ST 2110-43 TTML receiver. |
|
Settings for a UDP Transport Stream input see: NorskInput.udpTs() |
|
The settings for an output Transport Stream over UDP see: NorskOutput.udpTs() |
|
Experimental: settings for a UDP-TS input fed from a packet capture. The reconstructed MPEG-TS runs through the SAME decode path as NorskInput.udpTs(), so the node produces the decoded A/V streams as a source (with the UDP-TS probe stats as an overlay). Sibling of SrtPcapCaptureInputSettings but for UDP-TS. see: NorskInput.udpTsPcapCapture() |
|
Experimental. One PCR pid’s clock measurement from the UDP-TS passive probe (id3as-ts, WallClock mode). Measured values, not error counters — the list is simply empty until enough samples exist. |
|
Experimental. Passive-probe UDP-TS stats — present only for a pcap-derived UDP-TS input (the |
|
An update request for credentials on a CMAF output |
|
Voice activity detection tool configuration. |
|
Per-constraint-set RX caps for an ST 2110-20 video receiver. Each field maps to the matching SDP Receiver-only: these constraints describe what incoming senders the receiver will accept. On the send side Norsk derives the matching values from its own pipeline state and writes them into the outgoing SDP, so customer configurability here would be meaningless. |
|
Settings for a VideoCompose node |
|
An update operation for a VideoCompose operation see: VideoComposeNode.updateConfig() |
|
A single rung in a video encode ladder see: NorskTransform.videoEncode() |
|
Settings for a VideoEncode operation see: NorskTransform.videoEncode() |
|
Settings for an Video Testcard Generator see: NorskInput.videoTestCard() |
|
Settings for a Video Transform node see: NorskTransform.videoTransform() |
|
Voice activity detection data from the aggregated local analysis. |
|
Settings for a WebRTC browser session see: NorskDuplex.webRtcBrowser() |
|
Settings to control WebSocket output see NorskOutput.webSocket() |
|
The settings for a WebRTC WHEP Output see NorskOutput.whep() |
|
The settings for a WebRTC Whip Output see NorskOutput.whip() |
|
X265 codec |
Type Aliases
| Type Alias | Description |
|---|---|
FDK AAC bitrate mode. "cbr" is constant bitrate; "vbr_1" through "vbr_5" are FDK’s variable-bitrate quality levels (1 = lowest, 5 = highest). |
|
Channel layout for an AAC audio stream |
|
Settings for an AAC raw bitstream codec (no ADTS/LATM encapsulation) |
|
Aggregation strategy for local analysis tools. |
|
One entry in a multi-output AudioGraphSettings.build: either a bare node handle, or a handle plus the tap handles whose latest readings pin into that output’s per-frame qualityMetrics. |
|
An opaque handle to a node in an AudioGraphBuilder. The only way to obtain one is to create a node, and every operation requires handles for its inputs — so the graph you build is acyclic by construction: you cannot reference a node that doesn’t exist yet (no cycles), nor name one that was never created (no dangling refs). Reuse a handle to fan it out. |
|
Compositing blend mode |
|
Selects which C2PA live-video signing/validation method to use. See C2paSigningSettings.scheme. |
|
Outcome of a single C2PA validation event reported by an input. Discriminated by |
|
CabrMode, please see CABR documentation for details |
|
Channel layout for an audio stream |
|
Possible destinations for a segmented media stream - HlsPushDestinationSettings: Push to a generic HTTP server - AwsS3PushDestinationSettings: Push to Amazon S3 - OciPushDestinationSettings: Push to OCI Object Storage (native API, instance principals) - LocalPullDestinationSettings: Serve directly from the Norsk Web Server |
|
Color primaries. Note: sRGB uses the same primaries as BT.709. Use "bt709" for sRGB primaries. BT.2100 uses the same primaries as BT.2020. Use "bt2020" for BT.2100 primaries. Vendor camera gamuts pair with their log curves (see TransferFunction): "sGamut3"/"sGamut3Cine" with "slog3", "arriWideGamut3" with "logc3", "arriWideGamut4" with "logc4", "canonCinemaGamut" with "clog2"/"clog3", "redWideGamut" with "log3g10". H.273 has no codes for any of them, so re-ingested output arrives tagged as Unspecified primaries. |
|
The return result of a compose callback, directing which pixels to place where |
|
Crop fill mode |
|
CTA-608 format (note this may be embedded in 708 according to output container) Aka CEA-608/EIA-608. Note restrictions on 608 captions - 31 characters per line, a low data rate of about 60 characters per second, in particular impacting any attempt to pop-on captions with revisions (eg adding word by word) |
|
CTA-708 P16 (16-bit) code set, for East-Asian services whose P16 captions are a legacy DBCS rather than Unicode. These are the WHATWG/IANA encoding labels: - |
|
CTA-708 format (this means native 708, not the embedding of 608 in 708). Note some providers claim 608/708 support but are unclear if this means true 708 or merely 608 embedded in 708. |
|
A decibel (dB). A null value represents -inf. |
|
Which ancillary data format (if any) the SDI input should decode. Orthogonal to subtitles — SCTE-104 can in principle coexist with OP47/CEA on the same signal, although this combination is rare in practice. * "none" — do not decode any ancillary data * "scte104" — SCTE-104 splice commands (SMPTE 2010, DID=0x41 SDID=0x07). Decoded messages are exposed as SCTE-35 |
|
Stable DeckLink device identity, as reported per card by DeckLinkCard. |
|
Selects the physical device for DeckLink capture/playback: exactly one of |
|
Settings for DeckLink SDI capture. Device selection is exactly one of |
|
Settings for DeckLink SDI/HDMI playback. Device selection is exactly one of |
|
Status of a DeckLink output |
|
Hardware profile for DeckLink cards that support multiple sub-device configurations. Cards like the DeckLink Duo 2 and Quad 2 can be configured to expose different numbers of sub-devices with different duplex modes. |
|
Which subtitle format (if any) the SDI input is expected to carry. A real SDI signal will usually carry at most one subtitle format; mixing OP47 teletext with SMPTE 334 CDP (CEA-708/608) is technically possible but rare and unsupported by Norsk. Configuring this explicitly means the input only advertises the subtitle context for the chosen format, so downstream consumers see a single, unambiguous subtitle stream. |
|
Deinterlace method |
|
Various options for de-interlacing video either in software or hardware (where available) |
|
Which encoder implementation backs an AC-3 / E-AC-3 encode. "ffmpeg" (the default) is always available; "dolby" requires a licensed Dolby Digital Plus encoder and is rejected at node creation until one is integrated. |
|
The Dolby E program configuration (DP |
|
The data type of the elements in a tensor. |
|
The union of all possible input type configurations for the EmbeddedAINode |
|
The pixel format that the model expects. |
|
Field order for interlaced content |
|
Frame rate conversion method |
|
A relative change in decibels, expressing a power ratio. A value of 0dB means no change, positive values mean an increase in power, and negative values mean a decrease in power. |
|
Gamut mapping method |
|
A boolean expression over upstream signal conditions. A tool with a gate only runs inference while the gate holds (inferEveryMs still applies on top: gate = qualitative, cadence = rate limit). Gates may only reference tools EARLIER in the localAnalysis list — signals flow with the frames — and this is validated at node creation. |
|
Gemini status enumeration |
|
Why an input connection went |
|
Per-connection health for an input connection, as a discriminated union over the transport ( |
|
Licensing V2: a product’s answer to the engine’s license challenge. Certs are Norsk-root-signed JSON envelopes; signatures are Ed25519 by the respective cert holder’s private key. |
|
Licensing V2: a Norsk-root-signed identity used to answer a V2 engine’s license challenge. The cert (role A direct-SDK integrator is issued an |
|
Status events from the live evaluate session. |
|
Union of all reasoning provider configurations |
|
Configuration for a single local analysis tool (discriminated union on |
|
The name of a local analysis tool. |
|
LUT interpolation method |
|
The surface of the generated grpc |
|
An HTTP object store that replicated segment objects are PUT to. Each segment (fragment) of a completed media-store file is uploaded as its own object under |
|
What happens to local files once replicated. Note that only the TAMS segment path reads from the remote copy: cuts and playback still need the local bytes, so do not use |
|
An OCI Object Storage bucket that replicated segment objects are uploaded to natively — via the OCI API rather than the S3-compatibility layer — so OCI instance principals can be used (see OciAuth). The canonical object URLs advertised in the TAMS get_urls are |
|
Background replication of recorded segments to a remote object store. |
|
An S3 (or S3-compatible) bucket that replicated segment objects are uploaded to via the AWS SDK. Credentials are optional — when omitted the SDK’s default provider chain (env / instance role) is used; supply them (and an |
|
Result of a MoQ connection callback |
|
Lifecycle event for a single upstream MoQT relay an egest is publishing to. See MoqOutputSettings.onRelayStateChange. |
|
Settings for an MP3 codec (stream contains metadata in mp3 header) |
|
A flow pre-declared on an MXL input so a remote fabrics initiator can push into it. RDMA registers ring buffers up front, so the geometry is fixed here and must match the sending flow. |
|
Named channel layout for an audio stream |
|
Colour of noise pixels in white noise mode |
|
A stable, machine-readable code the engine attaches to some node errors, so a client can branch on a symbol rather than parsing the human message. Extracted from the gRPC - |
|
Norsk license information, as reported by the engine’s hello. |
|
Retraction of a previously-raised notification (matched by |
|
See the Nvidia Encoder Docs for a description of this value |
|
See the Nvidia Encoder Docs for a description of this value |
|
See the Nvidia Encoder Docs for a description of this value |
|
See the Nvidia Encoder Docs for a description of this value |
|
See the Nvidia Encoder Docs for a description of this value |
|
See the Nvidia Encoder Docs for a description of this value |
|
See the Nvidia Encoder Docs for a description of this value |
|
See the Nvidia Encoder Docs for a description of this value |
|
See the Nvidia Encoder Docs for a description of this value |
|
How Norsk authenticates to OCI Object Storage — for a media-store MediaStoreOciRemoteStore or an OciPushDestinationSettings. |
|
Return type to enable control of an RTMP stream once media arrives on it |
|
Authentication for OpenAI Realtime |
|
Settings for an LPCM codec |
|
What is the source of program-date-time in HLS/Dash outputs? |
|
How should the system handle discontinuities in media playlists? |
|
Where a playlist stream is served from: |
|
Where a playlist stream is served from: |
|
Settings for influencing the encode pipeline built for a quadra rung within a ladder |
|
The algorithm used for rescales in quadra pipeline, in ffmpeg parlance this is 0 = default 1 = filterblit 2 = bicubic |
|
NR-IQA (no-reference image quality assessment) configuration. Pick exactly one model. The Spectrum preprocessor builds whatever per-scale ImageNet-normalised RGB float32 tensors the chosen model needs (DBCNN: a single 224²; LAR-IQA: 384² + 1280²; MUSIQ: 224² + 384² + 640²). scoreThreshold is interpreted on the common normalised [0..100] scale, regardless of the model’s native output range. |
|
Claude provider configuration for reasoning |
|
Gemini provider for reasoning |
|
Gemini provider configuration for reasoning |
|
Test-only provider that returns deterministic, scripted responses instead of calling a real LLM. Used by the ReasoningMock-tagged tests in client/workspaces/media-examples/tests/. Should not be used in production workflows. Modes: mirror — emit a function_call for the first non-reserved tool declared in the spec (i.e. not |
|
A scripted response the mock provider should emit on a given request. Test-only — used with ReasoningMockProvider. Should not be used in production workflows. |
|
OpenAI provider configuration for reasoning |
|
Union of all reasoning provider configurations |
|
Vertex AI provider for reasoning |
|
Resize interpolation algorithm. Note: Lanczos is implemented in the underlying Spectrum engine but intentionally not exposed here - the current implementation is too slow for production use. It will be re-exposed once optimised. Use "cubic" for the best quality/speed trade-off in the meantime. |
|
|
|
The stream keys in an RTMP input stream |
|
Audio sample rate, in Hz |
|
Schema type for event fields and response definitions. Maps to LLM tool parameter types (JSON Schema subset). |
|
Which flavour of SCTE-35 marker tags to emit into HLS media playlists. - |
|
A predicate over a single upstream tool’s latest signal (task 74 G1). |
|
Errors found while subscribing to a particular source, separated out by reason: - - - - - |
|
Speaker identification. The VAD gate the tool depends on is added to the chain automatically. |
|
Spectrum expression tree describing a video processing pipeline. Each expression takes a source (another expression) and transforms it. |
|
Accuracy-vs-speed preference for Spectrum’s integer fast paths. - |
|
Colour domain in which Spectrum’s compose / resize / spatial ops operate. Orthogonal to SpectrumPrecisionPreference: working space chooses which (both-valid) result is computed (visible on translucent pixels), precision chooses how exactly. - |
|
|
|
The engine-parsed streamid (Haivision access-control form). |
|
ST 2110-30 wire-format encoding for an audio sender. Norsk-internal audio is always PCM16; PCM24 results in zig padding each sample with a zero LSB on the way to the wire. Defaults to PCM16 when unset. |
|
SDP |
|
SDP |
|
Device-wide lifecycle for an ST 2110 NMOS sender or receiver device. Tracks how far through NMOS registration the device as a whole has progressed. Used by both ST2110OutputSettings.onDeviceStateChange and ST2110InputSettings.onDeviceStateChange. Sequence: "initialising" — server-side gen_server is up but no NMOS register calls have been issued yet (transient) "registering" — at least one resource (device / source / flow / sender / receiver) is awaiting first-registry confirmation "ready" — every currently-tracked resource is registered with at least one NMOS registry; an NMOS controller can discover the device and PATCH its senders/receivers "failed" — bring-up rejected; "ready" is sticky for the current resource set, but the device drops back to "registering" if new resources are added later (e.g. a contextChanged adding a flow). So "ready" always means "every resource we have right now is discoverable". |
|
NIC bring-up lifecycle stage. The sequence is: "initialising" — supervisor’s gen_server is up; pre-flight checks passed; heavy work queued via self-message "loadingHost" — spawning the isox plugin host OS process "waitingMtl" — MTL_Init / DPDK / NIC ramp running inside the host; awaiting completion "ready" — MTL up and accepting per-session create calls; the legacy |
|
PTP profile version. |
|
SDP |
|
Lifecycle event for a single receiver inside an ST 2110 NMOS input device. Mirror of ST2110SenderStateEvent for the input side — fires on every transition; see ST2110InputSettings.onReceiverStateChange. Sequence (per receiver): "idle" ↓ (controller PATCH master_enable=true, or new SDP) "starting" ↓ (first valid context lands from the underlying child workflow, i.e. multicast joined and packets are flowing) "active" { endpoints[], wirePixelFormat } ↓ (controller PATCH master_enable=false, or switch) "idle" At any time: "failed" { reason } — refusal at activation time (unsupported wire transport) or unexpected child-workflow death. |
|
How MTL schedules its internal tasklets for an ST 2110 NIC. - |
|
ST 2110-21 sender pacing profile, advertised in the outgoing SDP NARROW requires the host’s NIC to use pinned scheduling — see ST2110SchedulingMode. |
|
Lifecycle event for a single sender inside an ST 2110 NMOS output device. Fires on every transition; see ST2110OutputSettings.onSenderStateChange. Sequence (per sender): "idle" ↓ (controller PATCH master_enable=true) "starting" ↓ (server finishes per-sender setup, including any Spectrum wire-format conversion compile) "active" { destinations[], wirePixelFormat } ↓ (controller PATCH master_enable=false, or switch) "idle" At any time: "failed" { reason } |
|
Norsk-internal flat enum that bundles ST 2110-20 sampling, depth and byte-order into a single string. Each value maps to a specific combination of the SDP Preferred SDK usage is the orthogonal
|
|
Stability mode for jitter buffer - how to determine when input is stable |
|
Output pixel formats a NorskControl.streamSwitchSmooth() can emit: planar YUV at 4:2:0 / 4:2:2 / 4:4:4, 8 or 10 bit. Narrower than PixelFormat because the switch’s compose is shared with the nvidia and quadra backends, which support |
|
Errors found while setting up subscriptions, separated out by reason: - - - - |
|
Determines what to do with an incoming context - true/accept: Allow the incoming context through, and any subsequent/queued data that belongs to it - false/deny: Deny the incoming context, if no context has been accepted, then queue data until one is - accept_and_terminate: Allow the incoming context, then deny further data, flush and shut down the node this is useful for cleanly terminating outputs when the context is empty - deny_and_queue: Deny the incoming context, and revert to the original queueing behaviour as if no context has been accepted this is useful when switching from one full context to another, avoiding any "in-between" - deny_and_drop: Deny the incoming context, drop any currently queued data, and drop any further data that might be received this is useful if you have a lot of setup on start-up and would prefer not to queue data while waiting for that to take place |
|
The format to convert subtitles to |
|
Text alignment for subtitles |
|
Trades JPEG-XS encode latency against CPU usage. |
|
How the JPEG-XS codestream is split into packets. |
|
Quantization method applied to the JPEG-XS wavelet coefficients. |
|
Where a TAMS play range ends: anywhere a TamsPlayPosition can be, or a length measured from wherever the range starts. The latter composes with a relative start — |
|
One end of a TAMS play range. A bare string is an absolute timestamp on the TAMS timeline, in the wire form The relative forms are in milliseconds rather than TAMS' nanoseconds because seeking is segment-granular regardless: you land on the segment containing the position, so a millisecond is already finer than the request can be honoured. Absolute positions keep full precision, where it is real. |
|
The role a TCP node takes: "caller" connects out to the remote host/port, "listener" binds the host/port and accepts an incoming connection. |
|
Teletext subtitles format. |
|
Configuration that places an input into a named time domain. Inputs that reference the same domain (by id) within a Norsk instance share a coordinator for cross-input timestamp alignment. Omit this field for "default domain" (no coordination, today’s behaviour). |
|
Time-aligned mode (members share the same clock) — sub-typed by the kind of timestamp the members agree on. |
|
Tone mapping algorithm. - |
|
Transfer function (OETF/EOTF). Note: BT.2100 uses "pq" (HDR10) or "hlg" (HLG) transfer functions with BT.2020 primaries. Use "gamma26" for DCI-P3 gamma 2.6. Camera log curves ("slog3", "logc3", "logc4", "clog2", "clog3", "log3g10", "appleLog") are scene-referred: their linear value is scene reflection with 0.18 = mid-grey. "slog3" pairs with S-Gamut3/S-Gamut3.Cine primaries; "logc3" is ARRI LogC3 at EI 800; "logc4" is ARRI LogC4; "clog2"/"clog3" are Canon Log 2/3 (v1.2); "log3g10" is RED Log3G10; "appleLog" is Apple Log. H.273 has no transfer codes for camera logs, so re-ingested output will arrive tagged as Unspecified and must be re-declared explicitly. |
|
H264 profile for the Tencent TSC H.264 encoder |
|
Preset for the Tencent TSC encoders, trading compression efficiency against encoding speed (x264-style naming; HEVC/AV1 map onto the SDK’s numeric preset range) |
|
Tune options for the Tencent TSC encoders |
|
The running state of an event (DVB running_status). |
|
Which family an EIT belongs to: "now & next" (present/following) or the future schedule. Only "actual transport stream" EITs are surfaced. |
|
A PSI/SI table/section decoded from an MPEG transport stream, presented as a tagged union discriminated on |
|
TTML (Timed Text Markup Language) subtitles format. |
|
Experimental: how the captured UDP payloads are encapsulated. * |
|
Video chaos effect mode |
|
Settings for a VideoDecode operation see: NorskTransform.videoDecode() |
|
Video range |
|
Describes a waveform for use by audio signal generator. Constructed from simple sine waves, silence and sequences, loops, combinations of those. May be finite or infinite in duration, it may often make sense to follow a timed signal with silence. See mkDtmf() to construct DTMF tones. |
|
WebVTT format Also used as a generic "full text cue" transport for conversion to other output formats. |
|
The return value for the WhipInputSettings.onConnection callback determining what to do with an incoming stream |
|
See the X264 Docs for a description of this value |
|
Three possible values: - "none": specify no HRD information - "vbr": specify HRD information - "cbr": specify HRD information and pack the bitstream to the bitrate specified See the X264 Docs for a further description of this value |
|
See the X264 Docs for a description of this value |
|
See the X264 Docs for a description of this value |
|
See the X265 Docs for a description of this value |
|
See the X265 Docs for a description of this value |
|
See the X265 Docs for a description of this value |
|
See the X265 Docs for a description of this value |
|
See the X265 Docs for a description of this value |