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:900

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:871

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:840

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 ​


getCodecString() ​

getCodecString(): string | null

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

Get RFC 6381 codec string.

Returns a codec string suitable for MIME type parameters and WebCodecs configuration (e.g., avc1.64001f, hev1.1.6.L93.B0, mp4a.40.2).

Direct mapping to av_mime_codec_str().

Returns ​

string | null

Codec string, or null if not available

Example ​

typescript
const codecString = codecpar.getCodecString();
if (codecString) {
  console.log(`Codec: ${codecString}`);
  // Use with WebCodecs
  const supported = await VideoDecoder.isConfigSupported({
    codec: codecString,
  });
}

getCodedSideData() ​

getCodedSideData(type): Buffer<ArrayBufferLike> | null

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

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 ​


getDecoderConfigurationRecord() ​

getDecoderConfigurationRecord(): Buffer<ArrayBufferLike> | null

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

Get decoder configuration record (avcC/hvcC binary blob).

Returns the decoder configuration record in ISOM/MP4 format, suitable for use as the description field in WebCodecs VideoDecoder.configure(). For H.264, converts Annex B extradata to avcC format. For HEVC, converts Annex B extradata to hvcC format. For other codecs (AV1, VP9, etc.), returns raw extradata as-is.

Returns ​

Buffer<ArrayBufferLike> | null

Configuration record buffer, or null if no extradata

Example ​

typescript
const dcr = codecpar.getDecoderConfigurationRecord();
if (dcr) {
  // Use with WebCodecs
  const decoder = new VideoDecoder({ ... });
  decoder.configure({
    codec: codecpar.getCodecString()!,
    description: dcr,
  });
}

getNative() ​

getNative(): NativeCodecParameters

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

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:780

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));