getSupportedAudioCodecs static method

Future<List<AudioCodec>> getSupportedAudioCodecs()

Returns a list of audio codecs supported by WebRTC for this device.

This method queries the native WebRTC RTP sender capabilities API to retrieve the actual audio codecs supported by the WebRTC library. This is the most efficient way to discover available codecs as it uses the platform's built-in capabilities query without creating any peer connections or media streams.

The method directly calls getRtpSenderCapabilities('audio') which queries:

  • Native platforms (iOS/Android): WebRTC native library via platform channel
  • Web platform: Browser's RTCRtpSender.getCapabilities('audio') API

Common codecs returned include: Opus, PCMU, PCMA, G722, RED, CN, and telephone-event.

Implementation

static Future<List<AudioCodec>> getSupportedAudioCodecs() async {
  try {
    GlobalLogger().d('Querying WebRTC audio codecs via RTP capabilities');

    // Query capabilities directly from WebRTC without creating a peer connection
    final capabilities = await getRtpSenderCapabilities('audio');

    // Convert to AudioCodec list
    final codecs = _convertCapabilitiesToAudioCodecs(capabilities);

    GlobalLogger().d(
      'Retrieved ${codecs.length} audio codecs: ${codecs.map((c) => c.mimeType).toList()}',
    );

    return codecs;
  } catch (e) {
    GlobalLogger().e('Error retrieving supported audio codecs: $e');
    return [];
  }
}