Core Calling Features
Voice Calls
High-quality audio calls powered by WebRTC with enterprise-grade infrastructure designed for reliability and clarity. How It Works: Voice calls use WebRTC’s audio processing pipeline with automatic codec selection (Opus preferred) for optimal quality. The SDK handles all the complexity of establishing peer connections, managing ICE candidates, and maintaining stable audio streams. Technical Capabilities:- Adaptive bitrate encoding that adjusts to network conditions
- Automatic noise cancellation and echo reduction
- Automatic gain control for consistent volume levels
- Low latency audio streaming optimized for real-time communication
- Automatic reconnection on network interruptions
- 1-to-1 private voice calls
- Group voice calls with multiple participants
- Audio-only mode in video calls
Video Calls
HD video calling with adaptive quality optimization that delivers smooth video across varying network conditions. How It Works: Video calls leverage WebRTC’s video processing with VP8/VP9/H.264 codec support. The SDK automatically selects the best codec based on browser/device capabilities and negotiates optimal resolution and framerate. Technical Capabilities:- HD video support with adaptive bitrate
- Automatic quality adjustment based on network conditions
- Front/back camera switching on mobile devices
- Camera on/off toggle during calls
- Video preview before joining calls
Group Calls
Multi-participant calling with intelligent layout management and active speaker detection. How It Works: Group calls use a Selective Forwarding Unit (SFU) architecture where media streams are routed through CometChat’s servers. This enables efficient bandwidth usage as each participant only uploads one stream while receiving multiple streams. Participant Features:- Support for multiple simultaneous video/audio participants
- Dynamic participant join/leave handling
- Participant list with real-time status (muted, video off)
- Active speaker detection and highlighting
Call Layouts
Three view modes that automatically adapt to participant count and call context. Available Layouts:| Layout | Description | Best For |
|---|---|---|
| Tile | Grid layout with equally-sized tiles | Group discussions, team meetings |
| Sidebar | Main speaker with participants in a sidebar | Presentations, webinars |
| Spotlight | Large view for active speaker, small tiles for others | One-on-one calls, focused discussions |
- Set initial layout when joining a session
- Switch layouts dynamically during calls
- Each participant can independently choose their preferred layout
- Automatic layout optimization based on participant count
Screen Sharing
Share your screen with other participants during a call. How It Works: Screen sharing uses the browser’sgetDisplayMedia API (web) or native screen capture APIs (mobile). The shared content is encoded as a video stream and transmitted to other participants.
Sharing Options (Web):
- Entire screen
- Application window
- Browser tab
- Start/stop screen sharing programmatically
- Screen share events for local and remote participants
- Configurable screen share button visibility
- Button click interception for custom behavior
Recording
Server-side call recording with cloud storage for later playback and compliance. How It Works: Recording happens on CometChat’s media servers, not on participant devices. This ensures consistent quality regardless of individual network conditions and eliminates the risk of lost recordings due to client crashes.Recording must be enabled for your CometChat app. Contact support if you need to enable this feature.
- Auto-start recording when session begins (configurable)
- Manual start/stop recording during calls
- Recording status indicators for all participants
- Recording events (started, stopped)
- Access recordings via CometChat Dashboard or REST API
startRecording()- Begin recordingstopRecording()- End recordingautoStartRecordingsetting for automatic recording
Virtual Background
Replace or blur your real background with AI-powered segmentation for privacy and professionalism. How It Works: Virtual backgrounds use machine learning models to segment the person from the background in real-time. The segmentation mask is applied to each video frame, replacing the background with blur or a custom image. Background Options:- Blur: Gaussian blur applied to background (adjustable intensity via
setVirtualBackgroundBlurLevel) - Image: Custom image as background (via
setVirtualBackgroundImage) - Clear: Remove virtual background (via
clearVirtualBackground)
- Built-in virtual background settings dialog
- Configurable button visibility
- Real-time background replacement
Audio Modes
Switch between different audio output routes on mobile devices. Available Modes:| Mode | Description |
|---|---|
SPEAKER | Routes audio through the device loudspeaker |
EARPIECE | Routes audio through the phone earpiece (for private calls) |
BLUETOOTH | Routes audio through a connected Bluetooth device |
HEADPHONES | Routes audio through wired headphones |
- Set initial audio mode when joining
- Change audio mode dynamically during calls
- Audio mode change events via
MediaEventsListener - Automatic detection of connected audio devices
- Configurable audio mode button visibility
Raise Hand
Virtual hand-raising feature for orderly communication in group calls without verbal interruption. How It Works: Participants can raise their hand to signal they want to speak. Other participants see a visual indicator, enabling orderly communication. Features:raiseHand()- Show hand-raised indicatorlowerHand()- Remove hand-raised indicator- Events for when participants raise/lower hands
- Configurable raise hand button visibility
Idle Timeout
Automatic session termination when a participant is alone in a call, preventing abandoned sessions. How It Works: When all other participants leave, a countdown timer starts. After the timeout period, a prompt is shown. If no response, the session ends automatically. Configuration:idleTimeoutPeriodBeforePrompt- Time before showing the timeout prompt (default: 60 seconds)idleTimeoutPeriodAfterPrompt- Time after prompt before ending session (default: 120 seconds)
- Configurable timeout periods
- Session timeout event (
onSessionTimedOut) - Can be effectively disabled by setting very long timeout periods
Advanced Features
Custom Control Panel
Build a fully customized control panel by hiding default controls and implementing your own UI. How It Works: Configure session settings to hide the default control panel (hideControlPanel: true), then implement your own buttons that call SDK actions.
Customization Options:
- Hide entire control panel
- Hide individual buttons (mute, video, screen share, recording, etc.)
- Intercept button clicks for custom behavior
- Build completely custom UI with SDK actions
muteAudio()/unMuteAudio()pauseVideo()/resumeVideo()switchCamera()startScreenSharing()/stopScreenSharing()startRecording()/stopRecording()leaveSession()
Picture-in-Picture
Continue video calls in a floating window while using other content. How It Works: Picture-in-Picture uses the browser’s Picture-in-Picture API (web) or native PiP frameworks (Android) to display the call video in a floating overlay window. Features:enablePictureInPictureLayout()- Enable PiP modedisablePictureInPictureLayout()- Return to normal view- Floating video window that stays on top
- Works when switching tabs or apps
- Chrome 70+
- Safari 13.1+
- Edge (Chromium-based)
- Opera 57+
Device Management
Select and switch between available cameras and microphones during calls. How It Works: The SDK enumerates available media devices and allows users to select their preferred input/output devices. Changes take effect immediately without interrupting the call. Features:getAudioInputDevices()- List available microphonesgetAudioOutputDevices()- List available speakersgetVideoInputDevices()- List available camerassetAudioInputDevice(deviceId)- Switch microphonesetAudioOutputDevice(deviceId)- Switch speakersetVideoInputDevice(deviceId)- Switch camera- Device change events when devices are connected/disconnected
- Built-in settings dialog (
showSettingsDialog())
VoIP Calling
Native VoIP integration with system-level call handling for a phone-like calling experience. How It Works: VoIP calling integrates with the operating system’s native call infrastructure (CallKit on iOS, ConnectionService on Android) to provide system-level call UI and lock screen controls. iOS (CallKit) Features:- Native iOS incoming call UI (full screen)
- Lock screen call controls
- Call appears in Phone app’s Recents
- CarPlay integration
- Do Not Disturb respect
- System notification with call controls
- Foreground service for reliable call handling
- Lock screen call controls
- VoIP push certificate (iOS)
- Push notifications configured
- Platform-specific implementation (CallManager, PushKit delegate)
Background Handling
Keep calls alive when users navigate away from your app on mobile devices. How It Works: Background handling uses platform-specific APIs to keep the call active when the user switches to another app or locks their device. On Android, this is achieved throughCometChatOngoingCallService - a foreground service.
Android Features:
CometChatOngoingCallService.launch()- Start foreground serviceCometChatOngoingCallService.abort()- Stop service- Ongoing notification in status bar
- Tap notification to return to call
- Customizable notification appearance
- Audio continues in background (requires Background Modes capability)
- CallKit integration for lock screen controls
- Background task handling
In-Call Chat
Enable text messaging during calls by integrating the chat button with your messaging solution. How It Works: The SDK provides a chat button in the control panel and events to help you build a custom chat experience. The actual messaging functionality should be implemented using the CometChat Chat SDK or your own messaging solution. Features:- Chat button visibility control (
hideChatButton) - Chat button click events (
onChatButtonClicked) - Unread message badge (
setChatButtonUnreadCount)
- Show/hide chat button in call UI
- Listen for chat button clicks
- Open your chat interface (using CometChat Chat SDK or custom)
- Update unread badge count
Platform Availability: Not all features are available on every platform. See the Compatibility page for a detailed feature comparison matrix.