Skip to content

node-av / lib / CodecParameters

Class: CodecParameters

Defined in: src/lib/codec-parameters.ts:60

Codec parameters for stream configuration.

Stores essential codec parameters without requiring a full codec context. Used to describe stream properties in containers, transfer codec configuration between contexts, and initialize decoders/encoders. Contains format, dimensions, sample rates, and other codec-specific parameters.

Direct mapping to FFmpeg's AVCodecParameters.

Example

typescript
import { CodecParameters, CodecContext, FFmpegError } from 'node-av';

// Create and allocate parameters
const params = new CodecParameters();
params.alloc();

// Copy from stream
const stream = formatContext.streams[0];
const ret = stream.codecpar.copy(params);
FFmpegError.throwIfError(ret, 'copy');

// Transfer to codec context
const ret2 = params.toContext(codecContext);
FFmpegError.throwIfError(ret2, 'toContext');

// Get parameters info
console.log(`Codec: ${params.codecId}`);
console.log(`Dimensions: ${params.width}x${params.height}`);
console.log(`Bitrate: ${params.bitRate}`);

See

Implements

Constructors

Constructor

new CodecParameters(): CodecParameters

Defined in: src/lib/codec-parameters.ts:63

Returns

CodecParameters

Accessors

bitRate

Get Signature

get bitRate(): bigint

Defined in: src/lib/codec-parameters.ts:178

Bit rate.

Average bitrate in bits per second.

Direct mapping to AVCodecParameters->bit_rate.

Returns

bigint

Set Signature

set bitRate(value): void

Defined in: src/lib/codec-parameters.ts:182

Parameters
value

bigint

Returns

void


bitsPerCodedSample

Get Signature

get bitsPerCodedSample(): number

Defined in: src/lib/codec-parameters.ts:194

Number of bits per coded sample.

Bits per sample/pixel from the demuxer (needed by some codecs). For uncompressed formats, this is the bits per sample.

Direct mapping to AVCodecParameters->bits_per_coded_sample.

Returns

number

Set Signature

set bitsPerCodedSample(value): void

Defined in: src/lib/codec-parameters.ts:198

Parameters
value

number

Returns

void


bitsPerRawSample

Get Signature

get bitsPerRawSample(): number

Defined in: src/lib/codec-parameters.ts:210

Number of bits per raw sample.

Bits per sample before compression/encoding. Only set when different from bitsPerCodedSample.

Direct mapping to AVCodecParameters->bits_per_raw_sample.

Returns

number

Set Signature

set bitsPerRawSample(value): void

Defined in: src/lib/codec-parameters.ts:214

Parameters
value

number

Returns

void


channelLayout

Get Signature

get channelLayout(): ChannelLayout

Defined in: src/lib/codec-parameters.ts:392

Audio channel layout.

Configuration of audio channels.

Direct mapping to AVCodecParameters->ch_layout.

Returns

ChannelLayout

Set Signature

set channelLayout(value): void

Defined in: src/lib/codec-parameters.ts:396

Parameters
value

ChannelLayout

Returns

void


channels

Get Signature

get channels(): number

Defined in: src/lib/codec-parameters.ts:407

Number of audio channels.

Deprecated

Use channelLayout.nbChannels instead

Direct mapping to AVCodecParameters->channels.

Returns

number

Set Signature

set channels(value): void

Defined in: src/lib/codec-parameters.ts:411

Parameters
value

number

Returns

void


chromaLocation

Get Signature

get chromaLocation(): AVChromaLocation

Defined in: src/lib/codec-parameters.ts:377

Chroma sample location.

Location of chroma samples.

Direct mapping to AVCodecParameters->chroma_location.

Returns

AVChromaLocation

Set Signature

set chromaLocation(value): void

Defined in: src/lib/codec-parameters.ts:381

Parameters
value

AVChromaLocation

Returns

void


codecId

Get Signature

get codecId(): AVCodecID

Defined in: src/lib/codec-parameters.ts:89

Codec ID.

Specific codec identifier (e.g., AV_CODEC_ID_H264).

Direct mapping to AVCodecParameters->codec_id.

Returns

AVCodecID

Set Signature

set codecId(value): void

Defined in: src/lib/codec-parameters.ts:93

Parameters
value

AVCodecID

Returns

void


codecProperties

Get Signature

get codecProperties(): AVCodecProp

Defined in: src/lib/codec-parameters.ts:515

Codec properties.

Bitfield of AV_CODEC_PROP_* flags indicating codec features.

Direct mapping to AVCodecDescriptor->props.

Example
typescript
import { AV_CODEC_PROP_FIELDS } from 'node-av/constants';

const props = params.codecProperties;
if (props & AV_CODEC_PROP_FIELDS) {
  console.log('Codec supports interlaced video (fields)');
}
See

hasProperties For checking specific properties

Returns

AVCodecProp


codecTag

Get Signature

get codecTag(): number

Defined in: src/lib/codec-parameters.ts:104

Codec tag.

Additional codec tag used by some formats.

Direct mapping to AVCodecParameters->codec_tag.

Returns

number

Set Signature

set codecTag(value): void

Defined in: src/lib/codec-parameters.ts:108

Parameters
value

string | number

Returns

void


codecTagString

Get Signature

get codecTagString(): string | null

Defined in: src/lib/codec-parameters.ts:126

Codec tag as string (FourCC).

Human-readable string representation of the codec tag. Returns the FourCC (Four Character Code) format.

Returns

string | null


codecType

Get Signature

get codecType(): AVMediaType

Defined in: src/lib/codec-parameters.ts:74

Codec type.

Media type (video, audio, subtitle, etc.).

Direct mapping to AVCodecParameters->codec_type.

Returns

AVMediaType

Set Signature

set codecType(value): void

Defined in: src/lib/codec-parameters.ts:78

Parameters
value

AVMediaType

Returns

void


colorPrimaries

Get Signature

get colorPrimaries(): AVColorPrimaries

Defined in: src/lib/codec-parameters.ts:332

Color primaries.

Chromaticity coordinates of source primaries.

Direct mapping to AVCodecParameters->color_primaries.

Returns

AVColorPrimaries

Set Signature

set colorPrimaries(value): void

Defined in: src/lib/codec-parameters.ts:336

Parameters
value

AVColorPrimaries

Returns

void


colorRange

Get Signature

get colorRange(): AVColorRange

Defined in: src/lib/codec-parameters.ts:317

Color range.

MPEG (limited) or JPEG (full) range.

Direct mapping to AVCodecParameters->color_range.

Returns

AVColorRange

Set Signature

set colorRange(value): void

Defined in: src/lib/codec-parameters.ts:321

Parameters
value

AVColorRange

Returns

void


colorSpace

Get Signature

get colorSpace(): AVColorSpace

Defined in: src/lib/codec-parameters.ts:362

Color space.

YUV colorspace type.

Direct mapping to AVCodecParameters->color_space.

Returns

AVColorSpace

Set Signature

set colorSpace(value): void

Defined in: src/lib/codec-parameters.ts:366

Parameters
value

AVColorSpace

Returns

void


colorTrc

Get Signature

get colorTrc(): AVColorTransferCharacteristic

Defined in: src/lib/codec-parameters.ts:347

Color transfer characteristic.

Color transfer function (gamma).

Direct mapping to AVCodecParameters->color_trc.

Returns

AVColorTransferCharacteristic

Set Signature

set colorTrc(value): void

Defined in: src/lib/codec-parameters.ts:351

Parameters
value

AVColorTransferCharacteristic

Returns

void


extradata

Get Signature

get extradata(): Buffer<ArrayBufferLike> | null

Defined in: src/lib/codec-parameters.ts:137

Extra codec data.

Codec-specific initialization data (e.g., H.264 SPS/PPS).

Direct mapping to AVCodecParameters->extradata.

Returns

Buffer<ArrayBufferLike> | null

Set Signature

set extradata(value): void

Defined in: src/lib/codec-parameters.ts:141

Parameters
value

Buffer<ArrayBufferLike> | null

Returns

void


extradataSize

Get Signature

get extradataSize(): number

Defined in: src/lib/codec-parameters.ts:152

Extra data size.

Size of extradata buffer in bytes.

Direct mapping to AVCodecParameters->extradata_size.

Returns

number


format

Get Signature

get format(): AVPixelFormat | AVSampleFormat

Defined in: src/lib/codec-parameters.ts:163

Pixel or sample format.

Format of video pixels or audio samples.

Direct mapping to AVCodecParameters->format.

Returns

AVPixelFormat | AVSampleFormat

Set Signature

set format(value): void

Defined in: src/lib/codec-parameters.ts:167

Parameters
value

AVPixelFormat | AVSampleFormat

Returns

void


frameRate

Get Signature

get frameRate(): Rational

Defined in: src/lib/codec-parameters.ts:301

Frame rate.

Video frame rate in frames per second.

Direct mapping to AVCodecParameters->framerate.

Returns

Rational

Set Signature

set frameRate(value): void

Defined in: src/lib/codec-parameters.ts:306

Parameters
value

Rational

Returns

void


frameSize

Get Signature

get frameSize(): number

Defined in: src/lib/codec-parameters.ts:439

Audio frame size in samples.

Number of samples per audio frame for codecs with constant frame size. For AAC this is typically 1024, for MP3 it's 1152. For codecs with variable frame size, this may be 0.

Direct mapping to AVCodecParameters->frame_size.

Returns

number

Set Signature

set frameSize(value): void

Defined in: src/lib/codec-parameters.ts:443

Parameters
value

number

Returns

void


height

Get Signature

get height(): number

Defined in: src/lib/codec-parameters.ts:270

Video height.

Height of video frames in pixels.

Direct mapping to AVCodecParameters->height.

Returns

number

Set Signature

set height(value): void

Defined in: src/lib/codec-parameters.ts:274

Parameters
value

number

Returns

void


initialPadding

Get Signature

get initialPadding(): number

Defined in: src/lib/codec-parameters.ts:456

Initial audio padding.

Amount of padding (priming) samples at the beginning of the audio stream. For AAC encoding, this is typically 1024 samples. The muxer uses this value to correctly calculate packet timestamps.

Direct mapping to AVCodecParameters->initial_padding.

Returns

number

Set Signature

set initialPadding(value): void

Defined in: src/lib/codec-parameters.ts:460

Parameters
value

number

Returns

void


level

Get Signature

get level(): number

Defined in: src/lib/codec-parameters.ts:240

Codec level.

Level within the profile.

Direct mapping to AVCodecParameters->level.

Returns

number

Set Signature

set level(value): void

Defined in: src/lib/codec-parameters.ts:244

Parameters
value

number

Returns

void


nbCodedSideData

Get Signature

get nbCodedSideData(): number

Defined in: src/lib/codec-parameters.ts:492

Number of coded side data entries.

Returns the count of coded side data attached to codec parameters.

Example
typescript
console.log(`Codec has ${params.nbCodedSideData} side data entries`);
Returns

number

Number of side data entries


profile

Get Signature

get profile(): AVProfile

Defined in: src/lib/codec-parameters.ts:225

Codec profile.

Profile level (e.g., baseline, main, high for H.264).

Direct mapping to AVCodecParameters->profile.

Returns

AVProfile

Set Signature

set profile(value): void

Defined in: src/lib/codec-parameters.ts:229

Parameters
value

AVProfile

Returns

void


sampleAspectRatio

Get Signature

get sampleAspectRatio(): Rational

Defined in: src/lib/codec-parameters.ts:285

Sample aspect ratio.

Pixel aspect ratio for video.

Direct mapping to AVCodecParameters->sample_aspect_ratio.

Returns

Rational

Set Signature

set sampleAspectRatio(value): void

Defined in: src/lib/codec-parameters.ts:290

Parameters
value

Rational

Returns

void


sampleRate

Get Signature

get sampleRate(): number

Defined in: src/lib/codec-parameters.ts:422

Audio sample rate.

Sample rate in Hz.

Direct mapping to AVCodecParameters->sample_rate.

Returns

number

Set Signature

set sampleRate(value): void

Defined in: src/lib/codec-parameters.ts:426

Parameters
value

number

Returns

void


videoDelay

Get Signature

get videoDelay(): number

Defined in: src/lib/codec-parameters.ts:472

Video delay in frames.

Number of frames the decoded output will be delayed relative to the encoded input. Used for timestamp correction in video streams.

Direct mapping to AVCodecParameters->video_delay.

Returns

number

Set Signature

set videoDelay(value): void

Defined in: src/lib/codec-parameters.ts:476

Parameters
value

number

Returns

void


width

Get Signature

get width(): number

Defined in: src/lib/codec-parameters.ts:255

Video width.

Width of video frames in pixels.

Direct mapping to AVCodecParameters->width.

Returns

number

Set Signature

set width(value): void

Defined in: src/lib/codec-parameters.ts:259

Parameters
value

number

Returns

void

Methods

[dispose]()

[dispose](): void

Defined in: src/lib/codec-parameters.ts:846

Dispose of the codec parameters.

Implements the Disposable interface for automatic cleanup.

Returns

void

Example

typescript
{
  using params = new CodecParameters();
  params.alloc();
  // Use params...
} // Automatically disposed when leaving scope

addCodedSideData()

addCodedSideData(type, data): number

Defined in: src/lib/codec-parameters.ts:817

Add coded side data to codec parameters.

Attaches additional data to the codec parameters. The data is copied. Commonly used for HDR metadata, Dolby Vision configuration, etc.

Direct mapping to av_packet_side_data_add() for coded_side_data.

Parameters

type

AVPacketSideDataType

Type of side data

data

Buffer

Side data buffer

Returns

number

0 on success, negative AVERROR on error

Example

typescript
import { FFmpegError } from 'node-av';
import { AV_PKT_DATA_DOVI_CONF } from 'node-av/constants';

// Add Dolby Vision configuration
const doviConf = Buffer.from([...]); // Dolby Vision config data
const ret = params.addCodedSideData(AV_PKT_DATA_DOVI_CONF, doviConf);
FFmpegError.throwIfError(ret, 'addCodedSideData');

See

getCodedSideData To retrieve side data


alloc()

alloc(): void

Defined in: src/lib/codec-parameters.ts:571

Allocate codec parameters.

Allocates memory for the parameters structure.

Direct mapping to avcodec_parameters_alloc().

Returns

void

Throws

If allocation fails (ENOMEM)

Example

typescript
const params = new CodecParameters();
params.alloc();
// Parameters ready for use

See

free To deallocate


copy()

copy(dst): number

Defined in: src/lib/codec-parameters.ts:617

Copy parameters to destination.

Copies all codec parameters to another instance.

Direct mapping to avcodec_parameters_copy().

Parameters

dst

CodecParameters

Destination parameters

Returns

number

0 on success, negative AVERROR on error:

  • AVERROR_ENOMEM: Memory allocation failure

Example

typescript
import { FFmpegError } from 'node-av';

const dst = new CodecParameters();
dst.alloc();
const ret = src.copy(dst);
FFmpegError.throwIfError(ret, 'copy');

free()

free(): void

Defined in: src/lib/codec-parameters.ts:591

Free codec parameters.

Releases all memory associated with the parameters.

Direct mapping to avcodec_parameters_free().

Returns

void

Example

typescript
params.free();
// Parameters now invalid

See


fromContext()

fromContext(codecContext): number

Defined in: src/lib/codec-parameters.ts:644

Fill parameters from codec context.

Extracts codec parameters from a configured codec context.

Direct mapping to avcodec_parameters_from_context().

Parameters

codecContext

CodecContext

Source codec context

Returns

number

0 on success, negative AVERROR on error:

  • AVERROR_ENOMEM: Memory allocation failure

Example

typescript
import { FFmpegError } from 'node-av';

// Extract parameters from encoder
const ret = params.fromContext(encoderContext);
FFmpegError.throwIfError(ret, 'fromContext');

See

toContext To apply to context


getAllCodedSideData()

getAllCodedSideData(): object[]

Defined in: src/lib/codec-parameters.ts:786

Get all coded side data entries.

Returns all side data attached to the codec parameters. Each entry contains the type and data buffer. This allows iteration over all side data like FFmpeg CLI does.

Direct mapping to accessing AVCodecParameters.coded_side_data array.

Returns

object[]

Array of side data entries with type and data

Example

typescript
// Iterate all side data like FFmpeg does (ffmpeg_mux_init.c)
const allSideData = params.getAllCodedSideData();
for (const sd of allSideData) {
  console.log(`Type: ${sd.type}, Size: ${sd.data.length}`);
  // Copy to output stream
  outParams.addCodedSideData(sd.type, sd.data);
}

See


getCodedSideData()

getCodedSideData(type): Buffer<ArrayBufferLike> | null

Defined in: src/lib/codec-parameters.ts:756

Get coded side data.

Retrieves additional data associated with the codec parameters (e.g., HDR metadata, Dolby Vision configuration, mastering display).

Direct mapping to accessing AVCodecParameters.coded_side_data.

Parameters

type

AVPacketSideDataType

Type of side data to retrieve

Returns

Buffer<ArrayBufferLike> | null

Side data buffer, or null if not present

Example

typescript
import { AV_PKT_DATA_MASTERING_DISPLAY_METADATA } from 'node-av/constants';

// Get HDR mastering display metadata
const hdrData = params.getCodedSideData(AV_PKT_DATA_MASTERING_DISPLAY_METADATA);
if (hdrData) {
  console.log(`HDR metadata: ${hdrData.length} bytes`);
}

See


getNative()

getNative(): NativeCodecParameters

Defined in: src/lib/codec-parameters.ts:828

Internal

Get the underlying native CodecParameters object.

Returns

NativeCodecParameters

The native CodecParameters binding object

Implementation of

NativeWrapper.getNative


hasProperties()

hasProperties(...props): boolean

Defined in: src/lib/codec-parameters.ts:544

Check if codec has specific properties.

Tests whether all specified properties are present using bitwise AND.

Parameters

props

...AVCodecProp[]

One or more property values to check

Returns

boolean

true if all specified properties are present, false otherwise

Example

typescript
import { AV_CODEC_PROP_FIELDS, AV_CODEC_PROP_REORDER } from 'node-av/constants';

if (params.hasProperties(AV_CODEC_PROP_FIELDS)) {
  console.log('Codec supports interlaced video (fields)');
}

// Check multiple properties
if (params.hasProperties(AV_CODEC_PROP_LOSSY, AV_CODEC_PROP_REORDER)) {
  console.log('Codec is lossy and supports frame reordering');
}

See

codecProperties For direct properties access


parseExtradata()

parseExtradata(): number

Defined in: src/lib/codec-parameters.ts:708

Parse extradata to extract codec parameters.

Opens a decoder to parse extradata (SPS/PPS for H.264, etc.) and extract codec parameters like width/height for video or sample_rate for audio. This is used when extradata exists (e.g., from SDP sprop-parameter-sets) but dimensions are missing due to insufficient probesize.

Uses FFmpeg's decoder to parse extradata, same as avformat_find_stream_info() does internally. Works for all codecs (H.264, H.265, VP9, AV1, etc.).

Returns

number

0 on success, negative error code on failure

Example

typescript
import { FFmpegError } from 'node-av';

// After opening RTSP with low probesize
const input = await Demuxer.open('rtsp://...', {
  options: { probesize: 32 }
});

const stream = input.video();
if (stream.codecpar.width === 0 && stream.codecpar.extradata) {
  // Parse extradata to get dimensions
  const ret = stream.codecpar.parseExtradata();
  FFmpegError.throwIfError(ret, 'parseExtradata');
  console.log(`Dimensions: ${stream.codecpar.width}x${stream.codecpar.height}`);
}

toContext()

toContext(codecContext): number

Defined in: src/lib/codec-parameters.ts:673

Apply parameters to codec context.

Configures a codec context with these parameters. Essential for initializing decoders with stream parameters.

Direct mapping to avcodec_parameters_to_context().

Parameters

codecContext

CodecContext

Destination codec context

Returns

number

0 on success, negative AVERROR on error:

  • AVERROR_ENOMEM: Memory allocation failure

Example

typescript
import { FFmpegError } from 'node-av';

// Configure decoder with stream parameters
const stream = formatContext.streams[0];
const ret = stream.codecpar.toContext(decoderContext);
FFmpegError.throwIfError(ret, 'toContext');

See

fromContext To extract from context


toJSON()

toJSON(): Record<string, any>

Defined in: src/lib/codec-parameters.ts:726

Convert to JSON representation.

Returns all codec parameters as a plain object. Useful for debugging and serialization.

Returns

Record<string, any>

Object with all parameter values

Example

typescript
const json = params.toJSON();
console.log(JSON.stringify(json, null, 2));