View Source Membrane.Caps.Matcher (Membrane Core v0.10.2)
Module that allows to specify valid caps and verify that they match specification.
Caps specifications (specs) should be in one of the formats:
- simply module name of the desired caps (e.g.
Membrane.Caps.Audio.Raw
orRaw
with proper alias) - tuple with module name and keyword list of specs for specific caps fields (e.g.
{Raw, format: :s24le}
) - list of the formats described above
Field values can be specified in following ways:
- By a raw value for the field (e.g.
:s24le
) - Using
range/2
for values comparable withKernel.<=/2
andKernel.>=/2
(e.g.Matcher.range(0, 255)
) - With
one_of/1
and a list of valid values (e.gMatcher.one_of([:u8, :s16le, :s32le])
) Checks on the values from list are performed recursively i.e. it can contain anotherrange/2
, for exampleMatcher.one_of([0, Matcher.range(2, 4), Matcher.range(10, 20)])
If the specs are defined inside of Membrane.Element.WithInputPads.def_input_pad/2
and
Membrane.Element.WithOutputPads.def_output_pad/2
module name can be omitted from
range/2
and one_of/1
calls.
example
Example
Below is a pad definition with an example of specs for caps matcher:
alias Membrane.Caps.Video.Raw
def_input_pad :input,
demand_unit: :buffers,
caps: {Raw, format: one_of([:I420, :I422]), aligned: true}
Link to this section Summary
Functions
Function determining whether the caps match provided specs.
Returns opaque specification of list of valid values for caps field.
Returns opaque specification of range of valid values for caps field.
Function used to make sure caps specs are valid.
Link to this section Types
Link to this section Functions
@spec match?(caps_specs_t(), struct() | any()) :: boolean()
Function determining whether the caps match provided specs.
When :any
is used as specs, caps can by anything (i.e. they can be invalid)
Returns opaque specification of list of valid values for caps field.
Returns opaque specification of range of valid values for caps field.
@spec validate_specs(caps_specs_t() | any()) :: :ok | {:error, reason :: tuple()}
Function used to make sure caps specs are valid.
In particular, valid caps:
- Have shape described by
caps_specs_t/0
type - If they contain keyword list, the keys are present in requested caps type
It returns :ok
when caps are valid and {:error, reason}
otherwise