# Membrane RTP plugin v0.31.5 - Table of Contents

> Membrane Multimedia Framework plugin for RTP

## Pages

- [Membrane RTP plugin](readme.md)
- [License](license.md)

## Modules

- [Membrane.SRTCP.Decryptor](Membrane.SRTCP.Decryptor.md): Converts SRTCP packets to plain RTCP.

- RTP session
  - [Membrane.RTP.SessionBin](Membrane.RTP.SessionBin.md): Bin handling one RTP session, that may consist of multiple incoming and outgoing RTP streams.
  - [Membrane.RTP.SessionBin.RTXInfo](Membrane.RTP.SessionBin.RTXInfo.md): A struct used to inform SessionBin about availability of RTX stream
with data allowing to set up proper part of a pipeline

- RTP
  - [Membrane.RTP.Demuxer](Membrane.RTP.Demuxer.md): Element capable of receiving a raw RTP stream and demuxing it into individual parsed streams based on packet ssrcs.
  - [Membrane.RTP.DepayloaderBin](Membrane.RTP.DepayloaderBin.md): Modules responsible for reordering incoming RTP packets using a jitter buffer
to later depayload packet's payload from RTP format.
  - [Membrane.RTP.Header](Membrane.RTP.Header.md): Describes RTP Header defined in [RFC3550](https://tools.ietf.org/html/rfc3550#page-13)
  - [Membrane.RTP.Header.Extension](Membrane.RTP.Header.Extension.md): Describes RTP Header Extension defined in [RFC8285](https://datatracker.ietf.org/doc/html/rfc8285)
and provides common functions for interacting with extensions placed in buffers.
  - [Membrane.RTP.HeaderGenerator](Membrane.RTP.HeaderGenerator.md): Given following RTP payloads and their minimal metadata, creates their proper header information,
incrementing timestamps and sequence numbers for each packet. Header information then is put
inside buffer's metadata under `:rtp` key.
  - [Membrane.RTP.InboundPacketTracker](Membrane.RTP.InboundPacketTracker.md): Module responsible for tracking statistics of incoming RTP packets for a single stream.
  - [Membrane.RTP.JitterBuffer](Membrane.RTP.JitterBuffer.md): Element that buffers and reorders RTP packets based on `sequence_number`.
  - [Membrane.RTP.Metrics](Membrane.RTP.Metrics.md): Defines list of metrics, that can be aggregated based on events from membrane_rtp_plugin.

  - [Membrane.RTP.Muxer](Membrane.RTP.Muxer.md): Element that combines multiple streams into a single RTP stream.
  - [Membrane.RTP.OutboundRtxController](Membrane.RTP.OutboundRtxController.md)
  - [Membrane.RTP.OutboundTrackingSerializer](Membrane.RTP.OutboundTrackingSerializer.md): Tracks statistics of outbound packets.
  - [Membrane.RTP.Packet](Membrane.RTP.Packet.md): Defines a struct describing an RTP packet and a way to parse and serialize it.
Based on [RFC3550](https://tools.ietf.org/html/rfc3550#page-13)
  - [Membrane.RTP.Packet.PayloadType](Membrane.RTP.Packet.PayloadType.md): This module contains utility to translate numerical payload type into an atom value.

  - [Membrane.RTP.PacketsDiscardedEvent](Membrane.RTP.PacketsDiscardedEvent.md): Event carrying information about how many packets has been discarded by some element.

  - [Membrane.RTP.Parser](Membrane.RTP.Parser.md): Identifies RTP/RTCP packets, then tries to parse RTP packet (parsing header and preparing payload)
and forwards RTCP packet to `:rtcp_output` pad unchanged.
  - [Membrane.RTP.PayloadFormatResolver](Membrane.RTP.PayloadFormatResolver.md): Wrapper over `Membrane.RTP.PayloadFormat` that returns payloaders and depayloaders, or an error
if they can't be resolved.

  - [Membrane.RTP.PayloaderBin](Membrane.RTP.PayloaderBin.md): Module responsible for payloading a stream to RTP format and preparing RTP headers.
  - [Membrane.RTP.RTXParser](Membrane.RTP.RTXParser.md): An element responsible for handling retransmission packets (`rtx`) defined in
[RFC 4588](https://datatracker.ietf.org/doc/html/rfc4588#section-4).
  - [Membrane.RTP.RetransmissionRequestEvent](Membrane.RTP.RetransmissionRequestEvent.md): An event used to request a retransmission of packet(s).
  - [Membrane.RTP.SSRCRouter](Membrane.RTP.SSRCRouter.md): A filter separating RTP packets from different SSRCs into different outpts.
  - [Membrane.RTP.SSRCRouter.StreamsInfo](Membrane.RTP.SSRCRouter.StreamsInfo.md): A struct sent as a message to `Membrane.RTP.SSRCRouter` with info about known streams
and streams that will be identified by extensions and should not be reported until they are present
  - [Membrane.RTP.SequenceNumberTracker](Membrane.RTP.SequenceNumberTracker.md): A module used to map 16-bit sequence number to a continuous index without rollovers.
It also detectes repeated and lost packets

  - [Membrane.RTP.Serializer.Stats](Membrane.RTP.Serializer.Stats.md): Serializer stats that can be used for Sender Report(SR) generation

  - [Membrane.RTP.SilenceDiscarder](Membrane.RTP.SilenceDiscarder.md): Element responsible for dropping silent audio packets.
  - [Membrane.RTP.StreamReceiveBin](Membrane.RTP.StreamReceiveBin.md): This bin gets a parsed RTP stream on input and outputs raw media stream.
  - [Membrane.RTP.StreamSendBin](Membrane.RTP.StreamSendBin.md): Bin payloading and serializing media stream to RTP.
  - [Membrane.RTP.TCP.Decapsulator](Membrane.RTP.TCP.Decapsulator.md): This element provides functionality of packetizing bytestream from TCP
into RTP and RTCP Packets. The encapsulation is described in RFC 4571.
  - [Membrane.RTP.TCP.Encapsulator](Membrane.RTP.TCP.Encapsulator.md): This element provides functionality of serializing RTP and RTCP packets into a bytestream
that can be send over TCP connection. The encapsulation is described in RFC 4571.
  - [Membrane.RTP.TWCCReceiver](Membrane.RTP.TWCCReceiver.md): The module defines an element responsible for recording transport-wide statistics of incoming packets
and generating TWCC feedbacks.
  - [Membrane.RTP.TWCCSender](Membrane.RTP.TWCCSender.md): The module defines an element responsible for tagging outgoing packets with transport-wide sequence numbers and
estimating available bandwidth.
  - [Membrane.RTP.VAD](Membrane.RTP.VAD.md): Vad based on audio level sent in RTP header.
  - [Membrane.RTP.Vad.IsSpeakingEstimator](Membrane.RTP.Vad.IsSpeakingEstimator.md): Module for estimating if the user is speaking inspired by
[*Dominant Speaker Identification for Multipoint Videoconferencing*](https://israelcohen.com/wp-content/uploads/2018/05/IEEEI2012_Volfin.pdf)
by Ilana Volfin and Israel Cohen
  - [Membrane.RTP.VadEvent](Membrane.RTP.VadEvent.md): An event informing about Voice Activity Detection status changes

- RTCP
  - [Membrane.RTCPEvent](Membrane.RTCPEvent.md): Event carrying a parsed RTCP packet.

  - [Membrane.RTCP.AppPacket](Membrane.RTCP.AppPacket.md): Parses RTCP Application-defined (APP) packets
defined in [RFC3550](https://tools.ietf.org/html/rfc3550#section-6.7)

  - [Membrane.RTCP.ByePacket](Membrane.RTCP.ByePacket.md): Parses and constructs RTCP BYE packets defined in
[RFC3550](https://tools.ietf.org/html/rfc3550#section-6.6)

  - [Membrane.RTCP.FeedbackPacket](Membrane.RTCP.FeedbackPacket.md): Abstraction and generic encoding/decoding functionality for
[RTCP payload-specific feedback packets](https://datatracker.ietf.org/doc/html/rfc5104#section-4.3).

  - [Membrane.RTCP.FeedbackPacket.AFB](Membrane.RTCP.FeedbackPacket.AFB.md): [Application Layer Feedback](https://datatracker.ietf.org/doc/html/rfc4585#section-6.4) packets.
  - [Membrane.RTCP.FeedbackPacket.FIR](Membrane.RTCP.FeedbackPacket.FIR.md): Encodes and decodes [Full Intra Request](https://datatracker.ietf.org/doc/html/rfc5104#section-4.3.1) packets.

  - [Membrane.RTCP.FeedbackPacket.PLI](Membrane.RTCP.FeedbackPacket.PLI.md): Encodes and decodes [Picture Loss Indication](https://datatracker.ietf.org/doc/html/rfc4585#section-6.3.1) packets.

  - [Membrane.RTCP.Header](Membrane.RTCP.Header.md): Struct describing 32-bit header common to all RTCP packets

  - [Membrane.RTCP.Packet](Membrane.RTCP.Packet.md): Functions common to all RTCP Packets

  - [Membrane.RTCP.Parser](Membrane.RTCP.Parser.md): Element responsible for receiving raw RTCP packets, parsing them and emitting proper RTCP events.
  - [Membrane.RTCP.Receiver](Membrane.RTCP.Receiver.md): Element exchanging RTCP packets and RTCP receiver statistics.
  - [Membrane.RTCP.ReceiverReport.Stats](Membrane.RTCP.ReceiverReport.Stats.md): JitterBuffer stats that can be used for Receiver report generation

  - [Membrane.RTCP.ReceiverReport.StatsEvent](Membrane.RTCP.ReceiverReport.StatsEvent.md): Event carrying statistics for a receiver report.

  - [Membrane.RTCP.ReceiverReport.StatsRequestEvent](Membrane.RTCP.ReceiverReport.StatsRequestEvent.md): Event to be sent to jitter buffer to request statistics.

  - [Membrane.RTCP.ReceiverReportPacket](Membrane.RTCP.ReceiverReportPacket.md): Parses and constructs RTCP Receiver Report defined in
[RFC3550](https://tools.ietf.org/html/rfc3550#section-6.4.2)

  - [Membrane.RTCP.ReportPacketBlock](Membrane.RTCP.ReportPacketBlock.md): Parses and constructs report blocks, which are parts of RTCP Sender and Receiver Reports
defined in [RFC3550](https://tools.ietf.org/html/rfc3550#section-6.4)

  - [Membrane.RTCP.SdesPacket](Membrane.RTCP.SdesPacket.md): Parses Source Description (SDES) RTCP Packets defined in
[RFC3550](https://tools.ietf.org/html/rfc3550#section-6.5)

  - [Membrane.RTCP.SenderReportPacket](Membrane.RTCP.SenderReportPacket.md): Parses and constructs RTCP Sender Report defined in
[RFC3550](https://tools.ietf.org/html/rfc3550#section-6.4.1)

  - [Membrane.RTCP.TransportFeedbackPacket](Membrane.RTCP.TransportFeedbackPacket.md): Abstraction and generic encoding/decoding functionality for
[RTCP transport layer feedback packets](https://datatracker.ietf.org/doc/html/rfc4585#section-6.1).

  - [Membrane.RTCP.TransportFeedbackPacket.NACK](Membrane.RTCP.TransportFeedbackPacket.NACK.md): Generic Negative Acknowledgment packet that informs about lost RTP packet(s)
  - [Membrane.RTCP.TransportFeedbackPacket.TWCC](Membrane.RTCP.TransportFeedbackPacket.TWCC.md): Encodes and decodes [Transport-wide congestion control](https://datatracker.ietf.org/doc/html/draft-holmer-rmcat-transport-wide-cc-extensions-01)
feedback packets.

- SRTP
  - [Membrane.SRTP.Decryptor](Membrane.SRTP.Decryptor.md): Converts SRTP packets to plain RTP.
  - [Membrane.SRTP.Encryptor](Membrane.SRTP.Encryptor.md): Converts plain RTP packets to SRTP.

## See Also

- [Membrane Framework AI Skill](https://hexdocs.pm/membrane_core/skill.md)
- [Membrane Core](https://hexdocs.pm/membrane_core/llms.txt)
