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 from a DekTec card. see: NorskInput.dektec() |
|
SDI output on a DekTec card. see: NorskOutput.dektec() |
|
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: NorskInput.icecast() |
|
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 |
|
Norsk-to-Norsk link input. Its audio and video are timestamp-corrected, so it stays one continuous timeline when the output it receives from restarts (unless it adopts its inbound timestamps, see NorskLinkInputSettings.adoptInboundTimestamps). see: NorskInput.norskLink(). |
|
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: NorskInput.rist() |
|
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() |
|
A shared SRT listener port. It carries no media and is not a media node: nothing subscribes to it and it appears in no workflow. It owns a port, and the SRT outputs configured with One port instead of one per output is the point: libsrt gives every bound port its own send and receive threads, so collapsing many outputs onto a few ports removes threads and the context switching that comes with them. Shard across several multiplexes rather than putting everything on one — those threads are per port and serial across the connections on it. The port lives as long as this object: SrtMultiplexEgest.close(), or closing the Norsk instance, drops it and every consumer connected over it. |
|
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() |
|
The error a node’s |
|
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) | |
| fromTsConnectionHealth(orig) | |
| 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. |
|
The settings for an audio encode that don’t depend on the codec 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() |
|
A DekTec card, as reported by NorskSystem.hardwareInfo(). |
|
Lock an output to the SDI reference signal on another port of the card. |
|
Settings for SDI capture from a DekTec card. see: NorskInput.dektec() |
|
Settings for SDI output on a DekTec card. see: NorskOutput.dektec() |
|
One port of a DekTec card, as reported by NorskSystem.hardwareInfo(). |
|
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 |
|
A sender a udpTs input is refusing while another holds it. |
|
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() |
|
Where a segment of an indexed TS file starts. see: FileTsOutputSettings.segmentIndex |
|
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() |
|
Settings for an Icecast input see: NorskInput.icecast() |
|
Settings for an Icecast output see: NorskOutput.icecast() |
|
The settings for a Image Preview Output see NorskOutput.imagePreview() |
|
The |
|
A recording of one source of a running input: see the input’s |
|
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() |
|
One JPEG XS receiver constraint set: the raw video terms plus the JPEG XS ones AMWA BCP-006-01 adds over BCP-004-01. Each optional term left out (or empty) means "any". The receiver always adds Packet Transmission Mode |
|
Capabilities for an ST 2110-22 JPEG XS receiver (VSF TR-08). Progressive only for now: an SDP with |
|
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.
|
|
The verified claims of the session a MoQ publisher connected on (listener auth required). |
|
Path statistics for each subscriber of a MoQ output. |
|
Periodic ingest-side statistics for a MoQ input. |
|
Settings for a MoQ ingest listener that accepts publisher connections. |
|
Settings for a MoQ input in relay-listener mode: instead of listening for publishers, the input dials a MoQ relay (MoqInputSettings.url) and takes every publisher announced there under a namespace prefix. Each namespace announced at the relay under the prefix is a connection, exactly as a publisher connecting to a listener is: it is offered to MoqInputSettings.onConnection ( |
|
MoQ auth on a listener. |
|
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() |
|
How a MoQ connection’s QUIC path is doing, as its transport sees it from this end. Counters are cumulative since the connection opened. Reported only by a transport that measures its path (msquic, the default for raw QUIC). |
|
One subscriber connected directly to a MoQ output’s listener, and its path. |
|
A track arriving on a MoQ input, as MoqInputSettings.onTrack is told of it. |
|
Per-track ingest counters for a MoQ input. Cumulative since the input started, except |
|
Where a MoQ input track comes out. Each part left out keeps the input’s own: the publisher’s source name, programme 1, the CMAF |
|
A key trusted to sign MoQ auth tokens (EdDSA JWT, Ed25519). A token is accepted only if its |
|
Settings for an MP2 (MPEG-1/2 Audio Layer II) encode, constant bitrate, mono or stereo (channel layout and bitrate are on AudioEncodeSettings). As for MP3 the bitrate must be one the sample rate allows, and at the MPEG-1 rates (32 / 44.1 / 48 kHz) Layer II also ties the bitrate to the channel layout: the lowest are mono only and the highest stereo only (see Mp2Mpeg1MonoBitrate, Mp2Mpeg1StereoBitrate, Mp2Mpeg2Bitrate). Anything else is rejected. see: NorskTransform.audioEncode() |
|
Settings for an MP3 (MPEG-1/2 Layer III) encode, constant bitrate, mono or stereo (channel layout and bitrate are on AudioEncodeSettings). A constant-bitrate MP3 can only have one of a fixed set of bitrates, and which set depends on the sample rate - so the two are typed together, see AudioEncodeSettings. Anything else is rejected rather than encoded at some other bitrate. see: NorskTransform.audioEncode() |
|
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. |
|
One audio group of an HLS multi variant playlist ( Each group’s audio carries |
|
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 |
|
Settings for a Norsk-to-Norsk link input — receives raw media from a NorskOutput.norskLink() output on another Norsk instance running the same build, on the same machine, with zero-copy shared-memory payloads. |
|
Settings for a Norsk-to-Norsk link output — forwards raw media to NorskInput.norskLink() inputs on other Norsk instances running the same build, on the same machine, with zero-copy shared-memory payloads. |
|
A NorskOutput.norskLink() output’s statistics. |
|
One connected input, as seen by a NorskOutput.norskLink() output. |
|
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. |
|
What a card’s NVENC can encode for one codec. 4:2:0 8-bit is implied by the codec being listed at all; each flag adds to it. |
|
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. |
|
A RIST input’s flow, as librist reports it. The counts are since the receiver was made (a kick makes a new one — see |
|
Settings for a RIST input (VSF TR-06-1 / TR-06-2). RIST carries MPEG-TS, so this decodes through the same path as NorskInput.udpTs() and produces the same streams and events; what RIST adds is retransmission, and in main profile encryption, SRP authentication and virtual ports. The see: NorskInput.rist() |
|
One path of a RIST flow. |
|
One of the redundant paths of a RIST input. see: RistInputSettings.redundantPeers |
|
The knobs that apply to any one RIST peer. Every one is optional; leaving it unset keeps librist’s own default rather than a second copy of it here. see: NorskInput.rist() |
|
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. |
|
One path of an ST 2022-7 pair. |
|
The redundant path of an ST 2022-7 pair. see: UdpTsInputSettings.seamlessProtection |
|
How an ST 2022-7 pair is behaving. |
|
Runtime-updatable SeiInjection fields. see SeiInjectionNode.updateConfig() |
|
Settings for an SeiInjectionNode. see: NorskTransform.seiInjection() |
|
Settings for a SIP node. A SIP node is configured with an account and can make any number of calls over its lifetime, one at a time. Everything here is fixed for the life of the node (to use a different account, create a different node); calls are what come and go — placed with SipNode.dial() (or on creation, see |
|
Recording every source of an input from its creation, each to |
|
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. Input is converted to 8-bit BGRA for analysis, so results for 10-bit sources report an effective bit depth of 8. |
|
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. |
|
An SRT output that sends as a bonded caller over several links — SRT connection bonding, SRT’s equivalent of ST 2022-7 (see SrtBondingSettings). It has no single see: NorskOutput.srt() |
|
One link of a bonded SRT caller. |
|
SRT connection bonding for a caller: one stream over several links, SRT’s equivalent of ST 2022-7. In |
|
One link of a bonded SRT connection. Counters are cumulative for the link. |
|
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 |
|
An SRT egest that owns its own port: today’s shape, and the default. Either see: NorskOutput.srt() |
|
Settings for an SRT Input node see: NorskInput.srt() |
|
An SRT egest that reaches its consumers over a port owned by an SrtMultiplexEgest shared with other outputs, instead of binding one of its own. Consumers connect to the multiplex’s host and port and select this output with
see: NorskOutput.srt() |
|
The settings for an SRT multiplex — see NorskOutput.srtMultiplex(). |
|
One consumer’s SRT transport stats as the sending side sees them, from SrtOutputSettingsCommon.onConnectionStats. Counters are cumulative since the consumer connected. |
|
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 recording of what an SRT output transmits; see SrtOutputNode.startRecording(). |
|
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. |
|
ST 2110-22 JPEG XS sender (VSF TR-08). Sends JPEG XS video per RFC 9134 (codestream packetization), with the RFC 9134 boxes in front of every frame and a Progressive only for now. |
|
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() |
|
A break in one stream’s timestamps, passed through by an input that adopts its inbound timestamps: the stream’s previous timestamp and the one that broke from it. |
|
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). |
|
ETR 101 290 occurrences by kind over a health sample, with the TS packets seen in it. The pcap probe’s field set, per sample rather than running. |
|
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. |
|
A UDP sender, as the socket reports it. |
|
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. |
|
The part of AudioEncodeSettings that ties the codec to the channel layouts and bitrates it can do. - MP3 is mono or stereo only, and its bitrate must be one that its sample rate allows (see Mp3Mpeg1Bitrate, Mp3Mpeg2Bitrate, Mp3Mpeg25Bitrate) - other values are rejected by the server too. MP2 is the same, except that at 32 / 44.1 / 48 kHz its bitrate also depends on the channel layout (see Mp2Settings). |
|
Settings for an audio encode: AudioEncodeCommonSettings plus the codec, channel layout and bitrate (AudioEncodeCodecSettings) see: NorskTransform.audioEncode() |
|
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) |
|
A DekTec card: by serial number (stable across reboots and slot moves; see DektecCard), or by position in serial-number order. |
|
Status of a DekTec output: * "active" — playing * "no_video_standard" — no SDI standard matches the incoming frames * "no_host" / "start_failed" — the card could not be started * "underrun" — nothing timely to play; the last frame is being repeated |
|
The pixel format frames are captured in, or converted to for output. * "uyvy" — 8-bit packed 4:2:2 * "yuv422p10le" — 10-bit planar 4:2:2: what Spectrum and the software encoders work in, so it needs no unpacking downstream * "v210" — 10-bit packed 4:2:2: a third less memory traffic, but unpacked before most processing |
|
SDI video standards supported by DekTec’s Matrix API. |
|
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 |
|
The connection state of an IcecastOutputNode, as reported to IcecastOutputSettings.onStatus. - |
|
An Icecast source client asking to publish, as given to IcecastInputSettings.onConnection. |
|
The answer to an Icecast source. A refusal is sent to the source client as an HTTP status and reason phrase, which source clients display; the default is |
|
Per-connection health for an input connection, as a discriminated union over the transport ( |
|
An event of a source’s recording: as an SRT output’s, naming the source. |
|
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 |
|
Where a media store player following the live edge (its last cut list entry has durationMs "live") stands against the recording. |
|
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 |
|
What a cut does with a segment whose range spans more than one recording session. Given on a cut request, and as a store’s default on its recorder, snapshot or asset settings: each field a cut request leaves out is its store’s, then the engine config’s ( |
|
Where a cut joined two recording sessions, and how. |
|
Result of a MoQ connection callback |
|
Lifecycle event for a single upstream MoQT relay an egest is publishing to. See MoqOutputSettings.onRelayStateChange. |
|
The answer to MoqInputSettings.onTrack: the track’s key and language, or refuse it (nothing of it comes out). |
|
The bitrates (bits per second) of a mono MP2 encode at 32 / 44.1 / 48 kHz |
|
The bitrates (bits per second) of a stereo MP2 encode at 32 / 44.1 / 48 kHz |
|
The bitrates (bits per second) of an MP2 encode at 16 / 22.05 / 24 kHz (as MP3’s) |
|
Every sample rate MP2 can be encoded at (MP3’s, less the "MPEG-2.5" rates) |
|
Settings for an MP3 codec (stream contains metadata in mp3 header) |
|
The bitrates (bits per second) of an MP3 encode at 32 / 44.1 / 48 kHz |
|
The MP3 sample rates that make an MPEG-1 stream |
|
The bitrates (bits per second) of an MP3 encode at 8 / 11.025 / 12 kHz |
|
The MP3 sample rates that make an "MPEG-2.5" stream |
|
The bitrates (bits per second) of an MP3 encode at 16 / 22.05 / 24 kHz |
|
The MP3 sample rates that make an MPEG-2 stream |
|
Every sample rate MP3 can be encoded at |
|
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. |
|
The health of a NorskInput.norskLink() input’s connection to its output. It reconnects by itself. |
|
The health of the inputs connected to a NorskOutput.norskLink() output. A peer is one connected input; its id is the output’s own, for the life of the connection. |
|
Which fabric a remote norsk-link uses. - Use a |
|
How a NorskInput.norskLink() / NorskOutput.norskLink() node moves media to its peer. Omit (or |
|
What a NorskOutput.norskLink() output does for an input that is behind. |
|
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. |
|
RIST profile. * |
|
How arriving media is stamped. * |
|
|
|
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). |
|
How an input records a source’s bytes as they arrive, before any demux. |
|
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. - |
|
|
|
see: NorskOutput.srt() |
|
The engine-parsed streamid (Haivision access-control form). |
|
Wire-format encoding for an audio sender: ST 2110-30 |
|
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. |
|
Whether an active video receiver’s wire fits the frame its SDP describes. |
|
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 |
|
What the engine said to a |
|
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 Denying a SHRUNK context (one source of several having gone away) is a deliberate and often correct choice: it avoids churning a node whose every context change is expensive, such as a foreach over many streams whose children restart on each change. But a denied context is not passed on to the node’s internals, so anything they are holding for the departed stream is held until a context IS accepted. On the hardware composes ( |
|
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. |
|
Tags an application sets on its recordings in a media store’s TAMS view (see MediaStoreRecorderNode.setSourceTags()). A value is a string or a list of strings; the two mean the same thing, one value reads back as a string and several as an array. An empty list removes the tag. |
|
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. |
|
Why a timestamp nudge was not applied: - - - - - |
|
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 |
|
Resampling filter for resizes Norsk performs on Nvidia hardware (encode ladder rungs, video transform, smooth switcher). Every filter is anti-aliased when downscaling. - |
|
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 |