View Source Membrane.HTTPAdaptiveStream.Manifest.Track (Membrane HTTP Adaptive Stream plugin v0.18.3)
Struct representing a state of a single manifest track and functions to operate on it.
Summary
Types
The struct representing a track.
Functions
Recognizes if its regular or partial segment and then update the track appropriately.
Returns Changeset
.
Returns all segments present in the track, including stale segments.
Discontinue the track, indicating that parameters of the stream have changed.
Marks the track as finished and finalize last segment if needed. After this action, it won't be possible to add any new segments to the track.
Return new track with all stale segments restored, resulting in playback of historic data. Only works with 'persist?' option enabled.
Returns current header name
Tells whether the track is able to produce partial media segments.
Types
@type id_t() :: any()
@type segment_duration_t() :: Membrane.Time.t() | Ratio.t()
@type segment_metadata() :: %{ payload: segment_payload_t(), complete?: boolean(), independent?: boolean(), last_chunk?: boolean(), duration: segment_duration_t(), size: segment_size_t() }
@type segment_payload_t() :: binary()
@type segment_size_t() :: non_neg_integer()
@type segments_t() :: Qex.t(Membrane.HTTPAdaptiveStream.Manifest.Segment.t())
@type t() :: %Membrane.HTTPAdaptiveStream.Manifest.Track{ awaiting_discontinuity: term(), content_type: :audio | :video | :muxed, current_discontinuity_seq_num: non_neg_integer(), current_seq_num: non_neg_integer(), discontinuities_counter: non_neg_integer(), encoding: [Membrane.HTTPAdaptiveStream.Manifest.Track.Config.encoding_t()] | [], finished?: boolean(), header_extension: String.t(), header_name: String.t(), header_naming_fun: (t(), counter :: non_neg_integer() -> String.t()), id: id_t(), max_framerate: term(), mode: term(), next_segment_id: non_neg_integer(), partial_naming_fun: term(), partial_segment_duration: segment_duration_t() | nil, persist?: boolean(), resolution: {non_neg_integer(), non_neg_integer()} | nil, segment_duration: Membrane.Time.t(), segment_extension: String.t(), segment_naming_fun: (t() -> String.t()), segment_sequencer: {msn :: non_neg_integer(), part_sn :: non_neg_integer()}, segments: segments_t(), stale_headers: term(), stale_segments: segments_t(), target_window_duration: Membrane.Time.t() | :infinity, track_name: String.t(), window_duration: non_neg_integer() }
The struct representing a track.
Consists of all the fields from Config.t
and also:
header_name
- name of the header filecurrent_seq_num
- the number to identify the next segmentcurrent_discontinuity_seq_num
- number of current discontinuity sequence.segments
- segments' names and durationsstale_segments
- stale segments' names and durations, kept empty unlesspersist?
is set to truestale_headers
- stale headers' names, kept empty unlesspersist?
is set to truefinished?
- determines whether the track is finishedwindow_duration
- current window durationdiscontinuities_counter
- the number of discontinuities that happened so farnext_segment_id
- the sequence number of the next segment that will be generatedsegment_sequencer
- keeps track of the current sequence number of a segment.
Functions
@spec add_chunk( t(), segment_metadata(), [Membrane.HTTPAdaptiveStream.Manifest.SegmentAttribute.t()] ) :: {Membrane.HTTPAdaptiveStream.Manifest.Changeset.t(), t()}
Recognizes if its regular or partial segment and then update the track appropriately.
Returns Changeset
.
Returns all segments present in the track, including stale segments.
@spec default_header_naming_fun(t(), non_neg_integer()) :: String.t()
Discontinue the track, indicating that parameters of the stream have changed.
New header has to be stored under the returned filename. For details on discontinuity, please refer to RFC 8216.
@spec finish(t()) :: {Membrane.HTTPAdaptiveStream.Manifest.Changeset.t(), t()}
Marks the track as finished and finalize last segment if needed. After this action, it won't be possible to add any new segments to the track.
Return new track with all stale segments restored, resulting in playback of historic data. Only works with 'persist?' option enabled.
Returns current header name
@spec new(Membrane.HTTPAdaptiveStream.Manifest.Track.Config.t()) :: t()
Tells whether the track is able to produce partial media segments.