# Membrane Core v1.2.7 - Table of Contents Membrane Multimedia Framework (Core) ## Pages - [Membrane Framework AI Skill](skill.md) - [Membrane Framework](readme.md) - [Packages in the Membrane ecosystem](packages_list.md) - [Changelog](changelog.md) - [Contributing](contributing.md) - [License](license.md) - Get started with Membrane - [Introduction](01_introduction-2.md) - [Pipelines](02_pipelines.md) - [Elements](03_elements.md) - [Bins](04_bins.md) - [Pads and linking](05_pads_and_linking.md) - [Flow control](06_flow_control.md) - [Observability and logging](07_observability_and_logging.md) - [Native code integration](08_native_code_integration.md) - Useful concepts - [Lifecycle of Membrane Components](components_lifecycle.md) - [Everything about pads](pads.md) - [Timer usage examples](timer.md) - Pipelines 101 - [Introduction](01_introduction-1.md) - [SystemArchitecture](02_systemarchitecture.md) - [Source](03_source.md) - [StreamFormat](04_streamformat.md) - [Formats](05_formats.md) - [OrderingBuffer](06_orderingbuffer.md) - [Redemands](07_redemands.md) - [Depayloader](08_depayloader.md) - [Mixer](09_mixer.md) - [Sink](10_sink.md) - [Pipeline](11_pipeline.md) - [Bin](12_bin.md) - [DynamicPads](13_dynamicpads.md) - [Tests](14_tests.md) - Packages in our ecosystem - [General](00_general.md) - [Plugins | General purpose](02_plugins_-_general_purpose.md) - [Plugins | Streaming protocols](03_plugins_-_streaming_protocols.md) - [Plugins | Containers](04_plugins_-_containers.md) - [Plugins | Audio codecs](05_plugins_-_audio_codecs.md) - [Plugins | Video codecs](06_plugins_-_video_codecs.md) - [Plugins | Raw audio](07_plugins_-_raw_audio.md) - [Plugins | Raw video](08_plugins_-_raw_video.md) - [Plugins | External APIs](09_plugins_-_external_apis.md) - [Formats](10_formats.md) - [Standalone media libs](11_standalone_media_libs.md) - [Utils](12_utils.md) - Creating plugins - [Create new plugin](create_new_plugin.md) - Broadcasting - [General Introduction](01_general_introduction.md) - [RTMP Introduction](02_rtmp_introduction.md) - [RTMP Architecture](03_rtmp_architecture.md) - [RTMP Running The Demo](04_rtmp_running_the_demo.md) - [RTMP Pipeline](05_rtmp_pipeline.md) - [WebPlayer](06_webplayer.md) - [RTSP Introduction](07_rtsp_introduction.md) - [RTSP Architecture](08_rtsp_architecture.md) - [RTSP Running The Demo](09_rtsp_running_the_demo.md) - [RTSP Pipeline](10_rtsp_pipeline.md) - [Summary](11_summary.md) - [H264 codec](12_h264_codec.md) - Glossary - [Glossary](glossary.md) - H264 - [Introduction](1_introduction.md) - [What is H264](2_what_is_h264.md) - [H264 NAL units](3_h264_nal_units.md) - [H264 stream structure](4_h264_stream_structure.md) - [Fetching information from stream](5_fetching_information_from_stream.md) - [Appendix](6_appendix.md) - Upgrading - [Upgrading to v0.11](v0-11.md) - [Upgrading to v0.12](v0-12.md) - [Upgrading to v1.0.0-rc0](v1-0-0-rc0.md) - [Upgrading to v1.0.0-rc1](v1-0-0-rc1.md) - [Upgrading to v1.0.0](v1-0-0.md) ## Modules - Pipeline - [Membrane.Pipeline](Membrane.Pipeline.md): A behaviour module for implementing pipelines. - [Membrane.Pipeline.Action](Membrane.Pipeline.Action.md): This module contains type specifications of actions that can be returned from pipeline callbacks. - [Membrane.Pipeline.CallbackContext](Membrane.Pipeline.CallbackContext.md): Module describing context passed to the `Membrane.Pipeline` callbacks. - RC Pipeline - [Membrane.RCMessage](Membrane.RCMessage.md): An abstract module aggregating all the messages that can be sent by the `RCPipeline`. - [Membrane.RCPipeline](Membrane.RCPipeline.md): Remote controlled pipeline - a basic `Membrane.Pipeline` implementation that can be remotely controlled from an external process. - [Membrane.RCMessage.EndOfStream](Membrane.RCMessage.EndOfStream.md): Message sent when some element of the pipeline receives the start of stream event on some pad. - [Membrane.RCMessage.Notification](Membrane.RCMessage.Notification.md): Message sent when the some element of the pipeline receives a notification. - [Membrane.RCMessage.Playing](Membrane.RCMessage.Playing.md): Message sent when the pipeline starts playing - [Membrane.RCMessage.StartOfStream](Membrane.RCMessage.StartOfStream.md): Message sent when some element of the pipeline receives the start of stream event on some pad. - [Membrane.RCMessage.Terminated](Membrane.RCMessage.Terminated.md): Message sent when the pipeline gracefully terminates. - Bin - [Membrane.Bin](Membrane.Bin.md): Bins, similarly to pipelines, are containers for elements. However, at the same time, they can be placed and linked within pipelines. Although bin is a separate Membrane entity, it can be perceived as a pipeline within an element. Bins can also be nested within one another. - [Membrane.Bin.Action](Membrane.Bin.Action.md): This module contains type specifications of actions that can be returned from bin callbacks. - [Membrane.Bin.CallbackContext](Membrane.Bin.CallbackContext.md): Module describing context passed to the `Membrane.Bin` callbacks. - [Membrane.Bin.PadData](Membrane.Bin.PadData.md): Struct describing current pad state. - Element - [Membrane.Element](Membrane.Element.md): Module containing types and functions for operating on elements. - [Membrane.Endpoint](Membrane.Endpoint.md): Module defining behaviour for endpoints - elements consuming and producing data. - [Membrane.Filter](Membrane.Filter.md): Module defining behaviour for filters - elements processing data. - [Membrane.Sink](Membrane.Sink.md): Module defining behaviour for sinks - elements consuming data. - [Membrane.Source](Membrane.Source.md): Module that should be used in sources - elements producing data. Declares appropriate behaviours implementation and provides default callbacks implementation. - [Membrane.Element.Action](Membrane.Element.Action.md): This module contains type specifications of actions that can be returned from element callbacks. - [Membrane.Element.Base](Membrane.Element.Base.md): Module defining behaviour common to all elements. - [Membrane.Element.CallbackContext](Membrane.Element.CallbackContext.md): Describes context passed to the Membrane Element callbacks. - [Membrane.Element.PadData](Membrane.Element.PadData.md): Struct describing current pad state. - [Membrane.Element.WithInputPads](Membrane.Element.WithInputPads.md): Module defining behaviour for sink, filter and endpoint elements. - [Membrane.Element.WithOutputPads](Membrane.Element.WithOutputPads.md): Module defining behaviour for source and filter elements. - Helper Elements - [Membrane.Connector](Membrane.Connector.md): Membrane Filter with input and output dynamic pads, that forwards incoming data to the opposite side than the one from which it came. - [Membrane.Debug.Filter](Membrane.Debug.Filter.md): Membrane Filter, that can be used to create a child that will be used to debug data flowing thouth pipeline. - [Membrane.Debug.Sink](Membrane.Debug.Sink.md): Membrane Sink, that can be used to create a child that will be used to debug data flowing thouth pipeline. - [Membrane.Fake.Sink](Membrane.Fake.Sink.md): Membrane Sink that ignores incoming data. - [Membrane.FilterAggregator](Membrane.FilterAggregator.md): An element allowing to aggregate many filters within one Elixir process. - [Membrane.Funnel](Membrane.Funnel.md): Element that can be used for collecting data from multiple inputs and sending it through one output. - [Membrane.Funnel.NewInputEvent](Membrane.Funnel.NewInputEvent.md): Event sent each time new element is linked (via funnel input pad) after playing pipeline. - [Membrane.Tee](Membrane.Tee.md): Element for forwarding buffers to at least one output pad - Parent - [Membrane.ChildrenSpec](Membrane.ChildrenSpec.md): A module with functionalities that allow to represent a topology of a pipeline/bin. - Child - [Membrane.Child](Membrane.Child.md): Module that keeps track of types used by both elements and bins - [Membrane.ChildEntry](Membrane.ChildEntry.md): Struct describing child entry of a parent. - Communication - [Membrane.Buffer](Membrane.Buffer.md): Structure representing a single chunk of data that flows between elements. - [Membrane.ChildNotification](Membrane.ChildNotification.md): A child notification is a message sent from `Membrane.Element` or `Membrane.Bin` to a parent via action `t:Membrane.Element.Action.notify_parent` or `t:Membrane.Bin.Action.notify_parent` returned from any callback. - [Membrane.Event](Membrane.Event.md): Represents a communication event, capable of flowing both downstream and upstream. - [Membrane.EventProtocol](Membrane.EventProtocol.md): Protocol that allows to configure behaviour of `Membrane.Event`s. - [Membrane.KeyframeRequestEvent](Membrane.KeyframeRequestEvent.md): Generic event for requesting a key frame. - [Membrane.Pad](Membrane.Pad.md): Pads are units defined by elements and bins, allowing them to be linked with their siblings. This module consists of pads typespecs and utils. - [Membrane.ParentNotification](Membrane.ParentNotification.md): A parent notification is a message sent from `Membrane.Parent` or `Membrane.Bin` to a child via action `t:Membrane.Pipeline.Action.notify_parent` or `t:Membrane.Bin.Action.notify_child` returned from any callback. - [Membrane.Payload](Membrane.Payload.md): This protocol describes actions common to all payload types. - [Membrane.RemoteStream](Membrane.RemoteStream.md): Format describing an unparsed data stream. It should be used whenever outputting or accepting an unknown stream (not to be confused with _any_ stream, which can have well-specified format either), or a stream whose format can't/shouldn't be created at that stage. - [Membrane.StreamFormat](Membrane.StreamFormat.md): Defines the capabilities of a pad within the Membrane framework. - [Membrane.Buffer.Metric](Membrane.Buffer.Metric.md): Specifies API for metrics that analyze data in terms of a given unit - [Membrane.Buffer.Metric.ByteSize](Membrane.Buffer.Metric.ByteSize.md): Implementation of `Membrane.Buffer.Metric` for the `:bytes` unit - [Membrane.Buffer.Metric.Count](Membrane.Buffer.Metric.Count.md): Implementation of `Membrane.Buffer.Metric` for the `:buffers` unit - [Membrane.Event.Discontinuity](Membrane.Event.Discontinuity.md): Generic discontinuity event. - [Membrane.Event.Underrun](Membrane.Event.Underrun.md): Generic underrun event. - [Membrane.EventProtocol.DefaultImpl](Membrane.EventProtocol.DefaultImpl.md): Default implementation of `Membrane.EventProtocol`. - [Membrane.Payload.Behaviour](Membrane.Payload.Behaviour.md): Behaviour that should be implemented by every module that has `Membrane.Payload` protocol implementation. - [Membrane.Payload.Binary](Membrane.Payload.Binary.md): `Membrane.Payload.Behaviour` implementation for binary payload. Complements `Membrane.Payload` protocol implementation. - Logging - [Membrane.Logger](Membrane.Logger.md): Wrapper around the Elixir logger. Adds Membrane prefixes and handles verbose logging. - Telemetry - [Membrane.Telemetry](Membrane.Telemetry.md): Defines basic telemetry event types used by Membrane's Core. - Testing - [Membrane.Testing.Assertions](Membrane.Testing.Assertions.md): This module contains a set of assertion functions and macros. - [Membrane.Testing.DynamicSource](Membrane.Testing.DynamicSource.md): Testing Element for supplying data based on generator function or payloads passed through options. It is very similar to `Membrane.Testing.Source` but is has dynamic pad instead of static. - [Membrane.Testing.Endpoint](Membrane.Testing.Endpoint.md) - [Membrane.Testing.Event](Membrane.Testing.Event.md): Empty event that can be used in tests - [Membrane.Testing.MockResourceGuard](Membrane.Testing.MockResourceGuard.md): Mock for `Membrane.ResourceGuard`. - [Membrane.Testing.Pipeline](Membrane.Testing.Pipeline.md): This Pipeline was created to reduce testing boilerplate and ease communication with its children. It also provides a utility for informing testing process about playback changes and received notifications. - [Membrane.Testing.Sink](Membrane.Testing.Sink.md): Sink Element that notifies the pipeline about buffers and events it receives. - [Membrane.Testing.Source](Membrane.Testing.Source.md): Testing Element for supplying data based on generator function or payloads passed through options. - Utils - [Membrane.Clock](Membrane.Clock.md): Clock is a Membrane utility that allows elements to measure time according to a particular clock, which can be e.g. a soundcard hardware clock. - [Membrane.ComponentPath](Membrane.ComponentPath.md): A list consisting of following pipeline/bin/element names down the assembled pipeline. - [Membrane.Playback](Membrane.Playback.md): Playback defines whether media is processed within a pipeline (`:playing`) or not (`:stopped`). - [Membrane.ResourceGuard](Membrane.ResourceGuard.md): Utility for handling resources that must be cleaned up after use. - [Membrane.Sync](Membrane.Sync.md): Sync allows to synchronize multiple processes, so that they could perform their jobs at the same time. - [Membrane.Time](Membrane.Time.md): Module containing functions needed to perform handling of time. - [Membrane.UtilitySupervisor](Membrane.UtilitySupervisor.md): A supervisor responsible for managing utility processes under the pipeline's supervision tree. - Errors - [Membrane.ActionError](Membrane.ActionError.md) - [Membrane.BinError](Membrane.BinError.md) - [Membrane.CallbackError](Membrane.CallbackError.md) - [Membrane.ElementError](Membrane.ElementError.md) - [Membrane.LinkError](Membrane.LinkError.md) - [Membrane.PadDirectionError](Membrane.PadDirectionError.md) - [Membrane.PadError](Membrane.PadError.md) - [Membrane.ParentError](Membrane.ParentError.md) - [Membrane.PipelineError](Membrane.PipelineError.md) - [Membrane.SetupError](Membrane.SetupError.md) - [Membrane.StreamFormatError](Membrane.StreamFormatError.md) - [Membrane.TimerError](Membrane.TimerError.md) - [Membrane.UnknownChildError](Membrane.UnknownChildError.md) - [Membrane.UnknownPadError](Membrane.UnknownPadError.md)