S4-260193 - AI Summary

[FS_ACAPI] WebRTC Injectable Codecs

Back to Agenda Download Summary
AI-Generated Summary AI

Summary of S4-260193: WebRTC Injectable Codecs

Document Overview

This pCR proposes adding detailed technical clauses to 3GPP TR 26.858 regarding support for injectable codecs in libwebrtc. The contribution addresses the need for greater flexibility in codec selection beyond the traditionally fixed set of audio and video codecs supported by libwebrtc.

Main Technical Contributions

5.3.2.4 Injectable Codec Support in libwebrtc

5.3.2.4.1 Introduction

  • Feature Origin: Injectable codec mechanism introduced in Chromium M63
  • Purpose: Enables integration of additional or custom audio codecs into WebRTC media pipeline without core source code modification
  • Key Benefit: Provides flexibility for diverse communication scenarios and evolving service requirements
  • 3GPP Relevance: Identified as suitable mechanism to extend libwebrtc with 3GPP codecs

5.3.2.4.2 Architecture and Principles of Operation

High-Level Architecture
  • Implementation Approach: Utilizes customizable encoder and decoder factory interfaces
  • Key Interfaces:
  • AudioEncoderFactory class
  • AudioDecoderFactory class
  • Integration Point: Factories supplied to CreatePeerConnectionFactory() API during initialization
  • Design Principle: Decouples codec implementation from core library
  • Media Engine Role: Utilizes provided factories for codec negotiation, instantiation, and media processing
Codec Registration and Negotiation Flow

Three-Step Workflow:
1. Implementation or selection of encoder and decoder factories for desired codecs
2. Registration of factories with PeerConnectionFactory
3. Negotiation of codec capabilities during session establishment via SDP offer/answer exchange

Technical Requirements:
- Factories must support SDP mapping functions (e.g., SdpToConfig())
- Must correctly advertise codec capabilities and parameters
- Runtime codec selection based on negotiated SDP attributes and payload types
- Provides fine-grained control over codec selection and interoperability

5.3.2.4.3 Usage Examples

Built-in Codecs

Basic Approach: Demonstrates usage of built-in codecs (Opus, G.711) through:
- CreateBuiltinAudioEncoderFactory()
- CreateBuiltinAudioDecoderFactory()

Selective Approach: Shows how to specify codec subset using template-based factory creation:
- CreateAudioEncoderFactory<AudioEncoderOpus, AudioEncoderPCM>()
- CreateAudioDecoderFactory<AudioDecoderOpus, AudioDecoderPCM>()

External (Injectable) Codecs

Implementation Steps:
1. Load external codec module via dynamic linking (e.g., libamr_codec_module.so)
2. Lookup factory entry points using dlsym()
3. Create codec factories from external module
4. Optionally combine with built-in codecs
5. Pass combined factories into PeerConnectionFactory

Key Capability: Enables runtime integration of external codecs with flexible combination of built-in codecs for advanced interoperability scenarios

5.3.2.4.4 Build and Deployment Options

Integration Approaches:
- Built-in only
- External module only
- Hybrid approaches

Configuration: Controlled via GN flags and build scripts in libwebrtc's build system, supporting both static and dynamic linking of codec modules

Proposal

The document proposes adding these clauses to TR 26.858, either as:
- A separate clause, or
- Under existing clause 5.3.2.3 ("Libwebrtc")

Document Information
Source:
Fraunhofer IIS
Type:
pCR
For:
Agreement
Original Document:
View on 3GPP
Title: [FS_ACAPI] WebRTC Injectable Codecs
Agenda item: 7.7
Agenda item description: FS_ACAPI (Study on Audio Codec APIs)
Doc type: pCR
For action: Agreement
Release: Rel-20
Specification: 26.858
Version: 0.8.0
Related WIs: FS_ACAPI
Spec: 26.858
Contact: Stefan Doehla
Uploaded: 2026-02-03T20:16:20.553000
Contact ID: 45140
TDoc Status: agreed
Reservation date: 03/02/2026 17:03:30
Agenda item sort order: 19