The core of the Membrane Framework, advanced multimedia processing framework
flow_control: :auto
.handle_spec_started/3
callback and Membrane.Testing.Pipeline.message_child/3
in favor of Membrane.Testing.Pipeline.notify_child/3
.Ratio
to ~> 3.0 or ~> 4.0
.~> 3.0 or ~> 4.0
by @FelonEkonom in https://github.com/membraneframework/membrane_core/pull/780
Full Changelog: https://github.com/membraneframework/membrane_core/compare/v1.0.1...v1.1.0-rc0
This release contains some bug fixes and small improvements. The most important are:
crash_reason
in Pipeline's and Bin's callback context that can be used in the handle_crash_group_down callback, added in #720.handle_info
callback implemented, just like in GenServer. See #680.Full Changelog: https://github.com/membraneframework/membrane_core/compare/v1.0.0...v1.0.1
Finally, we have released v1.0.0 of Membrane Core! 🎉🎉🎉 Comparing to v0.12.9, this releases contains many changes in API and framework private modules. We wrote a migration guide helping you adjust your code to Membrane Core v1.0.0. Let's take a look, at what changes are introduced with this release:
Release v1.0.0 contains a lot of changes in Membrane private modules responsible for managing the backpressure mechanism. The two biggest changes are:
:push
effective flow control in elements containing pads with flow_control: :auto
- it allows avoiding work related to the calculation of the value of auto-demand in input pads with flow_contro: :auto
, when a pipeline topology allows us to skip it without damage of backpressure mechanism. This change also fixes the problem with toilet overflow
error occurring far from the element, which works too slowly.demand
using :atomics
, instead of message passing - this change is a big performance and memory optimisation and allowed us to make auto-demands more precise in the amount of demanded data.This release brings compatibility with kino_membrane, the tool for visualization and introspection of Membrane pipelines in Livebook.
end of stream
, even if there was no start of stream
beforeSince now, we can send end of stream
on pads, even if we haven't sent start of stream
there yet. Moreover, before unlinking an input pad, every element will always execute handle_end_of_stream
for this pad, no matter, if it received start of stream
earlier, or not. This will happen before calling handle_pad_removed/3
in the case of dynamic pads and on entering terminating
state, in the case of static pads.
handle_process_list/4
and handle_write_list/4
callbacksSince v1.0.0
, you have to handle every single buffer separately in handle_buffer/4
callback, instead of handling whole list of buffers in this in handle_process_list/4
or handle_write_list/4
.
handle_process
and handle_write
are replaced with handle_buffer
for better consistency:mode
and :demand_mode
options in pad definition are replaced with :flow_control
, which may be :push
, :auto
or :manual
and defaults to :auto
whenever available.Membrane.RemoteControlled.Pipeline
to Membrane.RCPipeline
by @mat-hek in https://github.com/membraneframework/membrane_core/pull/505
:remove_link
action by @FelonEkonom in https://github.com/membraneframework/membrane_core/pull/487
Membrane.ResourceGuard.cleanup/1
by @FelonEkonom in https://github.com/membraneframework/membrane_core/pull/477
Membrane.Testing.Pipeline.get_child_pid/2
@FelonEkonom in https://github.com/membraneframework/membrane_core/pull/497
Full Changelog: https://github.com/membraneframework/membrane_core/compare/v0.12.9...v1.0.0
Here comes the second release candidate for Membrane Core 1.0.0! Compared to v1.0.0-rc0, this release does not contain a lot of changes in API, but it introduces many bug fixes, improvements and optimizations in the Membrane private modules. We wrote a migration guide, helping you in adjusting your code to this version of membrane_core
. But now, let's take a look at the summary, of what changes we have just introduced:
Release v1.0.0-rc1 contains a lot of changes in Membrane private modules responsible for managing the backpressure mechanism. The two biggest changes are:
:push
effective flow control in elements containing pads with flow_control: :auto
- it allows avoiding work related to the calculation of the value of auto-demand in input pads with flow_contro: :auto
, when a pipeline topology allows us to skip it without damage of backpressure mechanism. This change also fixes the problem with toilet overflow
error occurring far from the element, which works too slowly.demand
using :atomics
, instead of message passing - this change is a big performance and memory optimisation and allowed us to make auto-demands more precise in the amount of demanded data.This release brings compatibility with kino_membrane, the tool for visualization and introspection of Membrane pipelines in Livebook.
end of stream
, even if there was no start of stream
beforeSince now, we can send end of stream
on pads, even if we haven't sent start of stream
there yet. Moreover, before unlinking an input pad, every element will always execute handle_end_of_stream
for this pad, no matter, if it received start of stream
earlier, or not. This will happen before calling handle_pad_removed/3
in the case of dynamic pads and on entering terminating
state, in the case of static pads.
c:Membrane.Element.WithInputPads.handle_buffers_batch/4
This release reverts support for this callback, so if you have used it, you have to rewrite your element to use c:Membrane.Element.WithInputPads.handle_buffer/4
instead.
Until now, it was possible, to create a crash group only from the level of pipelines. v1.0.0-rc1
introduces support for doing it also from bins!
:pause_auto_demand
and :resume_auto_demand
actions by @FelonEkonom in https://github.com/membraneframework/membrane_core/pull/586
in_progress_memory
metric in performance benchmark by @varsill in https://github.com/membraneframework/membrane_core/pull/579
terminate: :normal
action by @varsill in https://github.com/membraneframework/membrane_core/pull/538
Full Changelog: https://github.com/membraneframework/membrane_core/compare/v1.0.0-rc0...v1.0.0-rc1
:pause_auto_demand
and :resume_auto_demand
actions. #586
Full Changelog: https://github.com/membraneframework/membrane_core/compare/v0.12.8...v0.12.9
Full Changelog: https://github.com/membraneframework/membrane_core/compare/v0.12.7...v0.12.8
in_progress_memory
metric in performance benchmark by @varsill in https://github.com/membraneframework/membrane_core/pull/579
Full Changelog: https://github.com/membraneframework/membrane_core/compare/v0.12.6...v0.12.7
Changes:
membrane_kino_dashboard
. #571
Full Changelog: https://github.com/membraneframework/membrane_core/compare/v0.12.5...v0.12.6
Changes:
Full Changelog: https://github.com/membraneframework/membrane_core/compare/v0.12.4...v0.12.5
Full Changelog: https://github.com/membraneframework/membrane_core/compare/v0.12.3...v0.12.4