Packages
membrane_core
1.3.3
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.7
1.2.6
1.2.5
retired
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.2.0-rc1
1.1.2
1.1.1
1.1.0
1.1.0-rc1
1.1.0-rc0
1.0.1
1.0.0
1.0.0-rc1
1.0.0-rc0
0.12.9
0.12.8
0.12.7
0.12.6
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
retired
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.2
0.10.1
0.10.0
0.9.0
0.8.2
0.8.1
0.8.0
0.7.0
0.6.1
0.6.0
0.5.3
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.2
0.2.1
0.2.0
0.1.1
0.1.0
Membrane Multimedia Framework (Core)
Current section
Files
Jump to
Current section
Files
lib/membrane/buffer.ex
defmodule Membrane.Buffer do
@moduledoc """
Structure representing a single chunk of data that flows between elements.
For now, it is just a wrapper around bitstring with optionally some metadata
attached to it, but in future releases we plan to support different payload
types.
"""
alias __MODULE__
alias Membrane.Payload
alias Membrane.Time
@type metadata :: map
@typedoc @moduledoc
@type t :: %Buffer{
pts: Time.t() | nil,
dts: Time.t() | nil,
payload: Payload.t(),
metadata: metadata
}
@enforce_keys [:payload]
defstruct @enforce_keys ++ [pts: nil, dts: nil, metadata: Map.new()]
@doc """
Returns `t:Membrane.Buffer.t/0` `:dts` if available or `:pts` if `:dts` is not set.
If none of them is set `nil` is returned.
"""
@spec get_dts_or_pts(__MODULE__.t()) :: Time.t() | nil
def get_dts_or_pts(buffer) do
buffer.dts || buffer.pts
end
end