View Source Membrane.HTTPAdaptiveStream.Storage behaviour (Membrane HTTP Adaptive Stream plugin v0.18.3)
Behaviour for storing manifests and stream segments.
Summary
Types
The identifier of a parent that the resource belongs to (the track identifier).
Callbacks
Generates the storage state based on the configuration struct.
Removes the resource.
Stores the resource on a storage.
Functions
Stores a new segment and removes stale ones.
Removes all segments grouped by track.
Removes all the saved segments and manifest for given id.
Clears the manifest cache.
Initializes the storage.
Stores stream header file.
Stores serialized manifest files
Types
@type callback_result_t() :: :ok | {:error, reason :: any()}
@type config_t() :: struct()
@type header() :: String.t()
@type metadata_t() :: segment_metadata_t() | partial_segment_metadata() | %{}
@type parent_t() :: any()
The identifier of a parent that the resource belongs to (the track identifier).
It can either be a master or secondary playlist (a track playlist).
In case of master playlist the identifier will be :master
while for tracks it can be an arbitrary value.
@type partial_segment_metadata() :: %{ duration: Membrane.Time.t(), independent: boolean(), byte_offset: non_neg_integer() }
@type segment_metadata_t() :: %{duration: Membrane.Time.t()}
@type segments() :: [String.t()]
@type state_t() :: any()
@opaque t()
Callbacks
Generates the storage state based on the configuration struct.
@callback remove( parent_id :: parent_t(), resource_name :: String.t(), context :: %{type: :manifest | :header | :segment}, state_t() ) :: {callback_result_t(), state :: state_t()}
Removes the resource.
In case of removing a segment the storage should make sure to remove all previous partial segments with the same name. It is the user's responsibility to remember and distinguish between the partial segments.
store(parent_id, resource_name, content, metadata, context, state_t)
View Source@callback store( parent_id :: parent_t(), resource_name :: String.t(), content :: String.t() | binary(), metadata :: metadata_t(), context :: %{ type: :manifest | :header | :segment | :partial_segment, mode: :text | :binary }, state_t() ) :: {callback_result_t(), state :: state_t()}
Stores the resource on a storage.
Gets the mode that should be used when writing to a file and type of the resource
Functions
@spec apply_track_changeset( t(), track_id :: term(), Membrane.HTTPAdaptiveStream.Manifest.Changeset.t() ) :: {callback_result_t(), t()}
Stores a new segment and removes stale ones.
@spec clean_all_tracks(t(), %{required(id :: any()) => segments()}, %{ required(id :: any()) => header() }) :: {callback_result_t(), t()}
Removes all segments grouped by track.
@spec cleanup(t(), id :: any(), segments :: segments(), header :: header() | nil) :: {callback_result_t(), t()}
Removes all the saved segments and manifest for given id.
Clears the manifest cache.
Initializes the storage.
Accepts the following options:
enable_cache
- if true (default), manifests will be stored only if they've been changed
@spec store_header(t(), track_id :: term(), name :: String.t(), payload :: binary()) :: {callback_result_t(), t()}
Stores stream header file.
@spec store_manifests( t(), Membrane.HTTPAdaptiveStream.Manifest.serialized_manifests_t() ) :: {callback_result_t(), t()}
Stores serialized manifest files