Packages
membrane_rtp_plugin
0.11.0
0.31.5
0.31.4
0.31.3
0.31.2
0.31.1
0.31.0
0.30.0
0.29.1
0.29.0
0.28.0
0.27.1
0.27.0
0.26.0
0.25.0
0.24.1
0.24.0
0.23.2
0.23.1
0.23.0
0.22.1
0.22.0
0.21.0
0.20.0
0.19.1
0.19.0
0.18.0
0.17.1
0.17.0
0.16.0
0.15.0
0.15.0-rc.1
0.14.0
0.13.0
0.12.2
0.12.1
0.12.0
0.11.0
0.10.0
0.9.0
0.8.2
0.8.1
0.8.0
0.7.1-alpha.3
0.7.1-alpha.2
0.7.0-alpha.2
0.7.0-alpha.1
0.7.0-alpha
0.6.1
0.6.0
0.5.1
0.5.0
0.4.0-alpha
Membrane Multimedia Framework plugin for RTP
Current section
Files
Jump to
Current section
Files
lib/membrane/rtp/header.ex
defmodule Membrane.RTP.Header do
@moduledoc """
Describes RTP Header defined in [RFC3550](https://tools.ietf.org/html/rfc3550#page-13)
```
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| contributing source (CSRC) identifiers |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
```
"""
alias Membrane.RTP
@typedoc """
This field identifies the version of RTP. The version defined by this specification is 2.
"""
@type version :: 2
@typedoc """
The interpretation of the marker is defined by a profile
"""
@type marker :: boolean()
@typedoc """
Timestamp of a packet in ticks of clock according to `t:RTP.clock_rate_t/0`.
Its initial value is random, so it should not be interpreted as an absolute time, but rather used to calculate
time difference from other timestamps.
"""
@type timestamp_t() :: non_neg_integer()
@typedoc """
A 16-bit integer sequential number of a packet.
Its initial value should be random.
"""
@type sequence_number_t() :: non_neg_integer()
@type t :: %__MODULE__{
version: version(),
ssrc: RTP.ssrc_t(),
marker: marker(),
payload_type: RTP.payload_type_t(),
timestamp: timestamp_t(),
sequence_number: sequence_number_t(),
csrcs: [RTP.ssrc_t()],
extensions: [__MODULE__.Extension.t()]
}
@enforce_keys [
:ssrc,
:payload_type,
:timestamp,
:sequence_number
]
defstruct @enforce_keys ++
[
version: 2,
marker: false,
csrcs: [],
extensions: []
]
end