Packages
membrane_core
0.4.2
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/element.ex
defmodule Membrane.Element do
@moduledoc """
Module containing types and functions for operating on elements.
For behaviours for elements chceck `Membrane.Source`, `Membrane.Filter` and
`Membrane.Sink`.
"""
@typedoc """
Defines options that can be received in `c:Membrane.Element.Base.handle_init/1`
callback.
"""
@type options_t :: struct | nil
@typedoc """
Type that defines an element name by which it is identified.
"""
@type name_t :: atom | {atom, non_neg_integer}
@typedoc """
Defines possible element types:
- source, producing buffers
- filter, processing buffers
- sink, consuming buffers
"""
@type type_t :: :source | :filter | :sink
@typedoc """
Type of user-managed state of element.
"""
@type state_t :: map | struct
@doc """
Checks whether the given term is a valid element name
"""
defguard is_element_name(term)
when is_atom(term) or
(is_tuple(term) and tuple_size(term) == 2 and is_atom(elem(term, 0)) and
is_integer(elem(term, 1)) and elem(term, 1) >= 0)
@doc """
Checks whether module is an element.
"""
@spec element?(module) :: boolean
def element?(module) do
module |> Bunch.Module.check_behaviour(:membrane_element?)
end
end