Skip to main content
updateSendSettings(settings) Controls simulcast layer configuration and which layers are sent. Useful for adapting to poor network conditions or high CPU load, or for ensuring high-quality video when conditions allow.

Parameters

settings
DailySendSettings
required
An object configuring send settings per track type. All keys are optional. Each value accepts a preset string (see below) or a DailyVideoSendSettings object:
  • video — local camera track. Also supports allowAdaptiveLayers (see below).
  • customVideoDefaults — default settings for all custom video tracks. Uses camera presets.
  • screenVideo — screen share track. Uses screen share presets.
  • [customKey: string] — settings for a specific named custom track, using the track’s trackName as the key.

Camera and custom track presets

PresetDescription
'quality-optimized'Higher resolutions and bitrate; best for good networks
'bandwidth-and-quality-balanced'High resolution with bandwidth savings; suitable for most networks (default)
'bandwidth-optimized'Lower bitrate; best for constrained networks (e.g., cellular)
'default-video'Resets to default (same as 'bandwidth-and-quality-balanced')

Screen share presets

PresetDescription
'detail-optimized'Low bitrate and frame rate (max 5 fps); best for static content like slides
'motion-and-detail-balanced'Balanced; max 15 fps; good for whiteboards and document editing
'motion-optimized'Full motion; max 30 fps; 2 Mbps cap to protect call quality (default)
'default-screen-video'Resets to default (same as 'motion-optimized')
Send only a single simulcast layer for screen video. Define only the "low" layer and set maxQuality to "low". Multiple layers are supported but screen shares are bandwidth-intensive and additional layers can degrade performance.

Return value

Returns Promise<DailySendSettings> that resolves with the updated send settings. Also triggers a send-settings-updated event.

Examples

// Switch camera to bandwidth-optimized preset
await call.updateSendSettings({
  video: 'bandwidth-optimized',
});
// Custom screen share with a single simulcast layer
call.updateSendSettings({
  screenVideo: {
    encodings: {
      low: { maxBitrate: 1500000, maxFramerate: 25 },
    },
    maxQuality: 'low',
  },
});
// Custom encodings for all custom video tracks
call.updateSendSettings({
  customVideoDefaults: {
    encodings: {
      low: { maxBitrate: 100000, scaleResolutionDownBy: 4, maxFramerate: 10 },
      medium: { maxBitrate: 200000, scaleResolutionDownBy: 2, maxFramerate: 15 },
      high: { maxBitrate: 700000, scaleResolutionDownBy: 1, maxFramerate: 25 },
    },
  },
});
// Override settings for a specific named custom track
await call.updateSendSettings({
  myCustomVideo: {
    maxQuality: 'medium',
  },
});

See also