Module media_engine

Module media_engine 

Source
Expand description

Media engine configuration for codecs and RTP extensions.

The media engine manages codec registration, RTP header extensions, and media capabilities negotiation for peer connections. It defines what codecs and features are available for encoding/decoding media streams.

§Overview

  • Codec Registration - Define supported audio/video codecs
  • Header Extensions - Configure RTP header extensions
  • Feedback Mechanisms - Register RTCP feedback types
  • Negotiation - Codec and extension negotiation with remote peers

§Examples

§Using Default Codecs

use rtc::peer_connection::configuration::media_engine::MediaEngine;

let mut media_engine = MediaEngine::default();

// Register standard WebRTC codecs
media_engine.register_default_codecs()?;
// Now supports: Opus, G722, PCMU, PCMA, VP8, VP9, H264, AV1

§Registering Custom Codec

use rtc::peer_connection::configuration::media_engine::{MediaEngine, MIME_TYPE_OPUS};
use rtc::rtp_transceiver::rtp_sender::{RTCRtpCodec, RtpCodecKind, RTCRtpCodecParameters};

let mut media_engine = MediaEngine::default();

// Register Opus with custom parameters
let opus_codec = RTCRtpCodecParameters {
    rtp_codec: RTCRtpCodec {
        mime_type: MIME_TYPE_OPUS.to_owned(),
        clock_rate: 48000,
        channels: 2,
        sdp_fmtp_line: "minptime=10;useinbandfec=1;stereo=1".to_owned(),
        rtcp_feedback: vec![],
    },
    payload_type: 111,
    ..Default::default()
};

media_engine.register_codec(opus_codec, RtpCodecKind::Audio)?;

§Registering RTP Header Extension

use rtc::peer_connection::configuration::media_engine::MediaEngine;
use rtc::rtp_transceiver::rtp_sender::{RtpCodecKind, RTCRtpHeaderExtensionCapability};
use rtc::rtp_transceiver::RTCRtpTransceiverDirection;

let mut media_engine = MediaEngine::default();

// Register audio level extension
media_engine.register_header_extension(
    RTCRtpHeaderExtensionCapability {
        uri: "urn:ietf:params:rtp-hdrext:ssrc-audio-level".to_string(),
    },
    RtpCodecKind::Audio,
    Some(RTCRtpTransceiverDirection::Sendrecv),
)?;

Structs§

MediaEngine
Media engine managing codecs and RTP capabilities for peer connections.

Constants§

MIME_TYPE_AV1
AV1 video codec MIME type.
MIME_TYPE_FLEX_FEC
FlexFEC forward error correction MIME type.
MIME_TYPE_FLEX_FEC03
FlexFEC-03 forward error correction MIME type.
MIME_TYPE_G722
G.722 audio codec MIME type.
MIME_TYPE_H264
H.264 video codec MIME type.
MIME_TYPE_HEVC
H.265/HEVC video codec MIME type.
MIME_TYPE_OPUS
Opus audio codec MIME type.
MIME_TYPE_PCMA
PCMA (G.711 A-law) audio codec MIME type.
MIME_TYPE_PCMU
PCMU (G.711 μ-law) audio codec MIME type.
MIME_TYPE_RTX
RTX (Retransmission) MIME type.
MIME_TYPE_TELEPHONE_EVENT
Telephone-event MIME type for DTMF tones.
MIME_TYPE_ULP_FEC
ULP FEC (Uneven Level Protection Forward Error Correction) MIME type.
MIME_TYPE_VP8
VP8 video codec MIME type.
MIME_TYPE_VP9
VP9 video codec MIME type.