Skip to main content
updateSendSettings(settings) Prebuilt Custom 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