View Source Membrane.RTP.H264.FU.Header (Membrane RTP H264 Plugin v0.19.1)

Defines a structure representing Fragmentation Unit (FU) header which is defined in RFC6184

  +---------------+
  |0|1|2|3|4|5|6|7|
  +-+-+-+-+-+-+-+-+
  |S|E|R|  Type   |
  +---------------+

Summary

Types

MUST be set to true only in the last packet in a sequence.

MUST be set to true only in the first packet in a sequence.

t()

Functions

Parses Fragmentation Unit Header

Types

@type end_flag() :: boolean()

MUST be set to true only in the last packet in a sequence.

@type start_flag() :: boolean()

MUST be set to true only in the first packet in a sequence.

@type t() :: %Membrane.RTP.H264.FU.Header{
  end_bit: end_flag(),
  start_bit: start_flag(),
  type: Membrane.RTP.H264.NAL.Header.type()
}

Functions

Link to this function

add_header(payload, start_bit, end_bit, type)

View Source
@spec add_header(binary(), 0 | 1, 0 | 1, Membrane.RTP.H264.NAL.Header.type()) ::
  binary()

Adds FU header

@spec parse(data :: binary()) ::
  {:error, :packet_malformed} | {:ok, {t(), nal :: binary()}}

Parses Fragmentation Unit Header

It will fail if the Start bit and End bit are both set to one in the same Fragmentation Unit Header, because a fragmented NAL unit MUST NOT be transmitted in one FU.