- Add new callback
handle_child_terminated/3
along with new assertions. #894 - Remove 'failed to insert a metric' stalker warning. #849
- Fix 'table identifier does not refer to an existing ETS table' error when inserting metrics into the observability ETS. #835
- Fix bug occuring in distributed atomic implementation. #837
- Add new callbacks
handle_child_setup_completed/3
andhandle_child_playing/3
in Bins and Pipelines. #801 - Deprecate
handle_spec_started/3
callback in Bins and Pipelines. #708 - Handle buffers from input pads having
flow_control: :auto
only if demand on all output pads havingflow_control: :auto
is positive. #693 - Set
:ratio
dependency version to"~> 3.0 or ~> 4.0"
. #780 - Deprecate
Membrane.Testing.Pipeline.message_child/3
. IntroduceMembrane.Testing.Pipeline.notify_child/3
instead. #779
- Specify the order in which state fields will be printed in the error logs. #614
- Fix clock selection #626
- Log messages in the default handle_info implementation #680
- Fix typespecs in Membrane.UtilitySupervisor #681
- Improve callback return types and group actions types #702
- Add
crash_reason
tohandle_crash_group_down/3
callback context in bins and pipelines. #720
- Introduce
:remove_link
action in pipelines and bins. - Add children groups - a mechanism that allows refering to multiple children with a single identifier.
- Rename
remove_child
action intoremove_children
and allow for removing a children group with a single action. - Add an ability to spawn anonymous children.
- Replace
Membrane.Time.round_to_<unit_name>
withMembrane.Time.as_<unit_name>/2
with second argument equal:round
. RenameMembrane.Time.round_to_timebase
toMembrane.Time.divide_by_timebase/2
. #494 - Remove
:playback
action. Introduce:setup
action. #496 - Add
Membrane.Testing.Pipeline.get_child_pid/2
. #497 - Make callback contexts to be maps. #504
- All Membrane Elements can be compatible till now on - pads working in
:pull
mode, handling differentdemand_units
, can be now linked. - Output pads working in
:pull
mode should have theirdemand_unit
specified. If case it's not available, it's assumed that the pad handles demands in both:bytes
and:buffers
units. - Rename callbacks
handle_process/4
andhandle_write/4
tohandle_buffer/4
in #506 - The flow control of the pad is now set with a single
:flow_control
option instead of:mode
and:demand_mode
options. - Remove _t suffix from types #509
- Implement automatic demands in Membrane Sinks and Endpoints. #512
- Add
handle_child_pad_removed/4
callback in Bins and Pipelines. #513 - Introduce support for crash groups in Bins. #521
- Remove
assert_pipeline_play/2
fromMembrane.Testing.Assertions
. #528 - Make sure enumerable with all elements being
Membrane.Buffer.t()
, passed as:output
parameter forMembrane.Testing.Source
won't get rewrapped inMembrane.Buffer.t()
struct. - Implement
Membrane.Debug.Filter
andMembrane.Debug.Sink
. #552 - Add
:pause_auto_demand
and:resume_auto_demand
actions. #586 - Send
:end_of_stream
, even if it is not preceded by:start_of_stream
. #557 - Fix process leak in starting clocks. #594
- Add child exit reason to the supervisor exit reason. #595
- Remove default implementation of
start_/2
,start_link/2
andterminate/2
in modules usingMembrane.Pipeline
. #598 - Remove callback Membrane.Element.WithInputPads.handle_buffers_batch/4. #601
- Sort component state fields in the error logs in the order from the most to the least important. #614
- Separate element_name and pad arguments in handle_element_{start, end}_of_stream signature #219
- Refine communication between parent and its children #270
- Add
handle_call/3
callback in the pipeline, as well as a:reply
and:reply_to
actions. Renamehandle_other/3
callback intohandle_info/3
#334 - Add
Membrane.FilterAggregator
that allows to run multiple filters sequentially within one process. #355 - Log info about element's playback state change as debug, not as debug_verbose. #430
- Rename
Membrane.Time.to_<unit name>/1
intoMembrane.Time.round_to_<unit name>/1
to indicate that the result will be rounded. MakeMembrane.Time.<plural unit name>/1
accept%Ratio{}
as an argument. AddMembrane.Time.round_to_timebase
function. - New
spec
action syntax - the structure of pipeline is now defined with the use ofMembrane.ChildrenSpec
- Rename
:caps
to:stream_format
. - Use Elixir patterns as
:accepted_format
in pad definition. - Delete
:ok
from tuples returned from callbacks. - Remove
:type
from specs passed todef_options/1
macro in bins and elements. - Add
Membrane.Testing.MockResourceGuard
.
- Remove all deprecated stuff #399
- Make
Membrane.Pipeline.{prepare, play, stop}
deprecated and add:playback
action instead - Make
Membrane.Pipeline.stop_and_terminate
deprecated and addMembrane.Pipeline.terminate/2
instead - Add
Membrane.RemoteControlled.Pipeline
- a basic implementation of aMembrane.Pipeline
that can be spawned and controlled by an external process #366 - Disallow sending buffers without sending caps first #341
- Refine the
Membrane.Testing.Pipeline
API - deprecate theMembrane.Testing.Pipeline.Options
usage, use keyword list as options inMembrane.Testing.Pipeline.start/1
andMembrane.Testing.Pipeline.start_link/1
- Automatic demands #313
- Stop forwarding notifications by default in bins #358
- More fine-grained control over emitted metrics #365
- Added log metadata when reporting init in telemetry #376
- Fix generation of pad documentation inside an element #377
- Leaving static pads unlinked and transiting to a playback state other than
:stopped
will result in runtime error (previously only a warning was printed out). #389 - It is possible now to assert on crash group down when using Testing.Pipeline. #391
- Fixed PadAdded spec #359
- Prevent internal testing notifications from reaching pipeline module #350
- Fix unknown node error on distribution changes #352
- Add new type of element,
Membrane.Endpoint
#382
- allow telemetry in version 1.0 only #347
- PTS and DTS timestamps were added to
Membrane.Buffer
structure explicitly. Timestamps should no longer live inMembrane.Buffer.metadata
field #335.