lib/m3u8/playlist.rb in m3u8-0.7.1 vs lib/m3u8/playlist.rb in m3u8-0.8.0
- old
+ new
@@ -1,35 +1,42 @@
# frozen_string_literal: true
module M3u8
# Playlist represents an m3u8 playlist, it can be a master playlist or a set
# of media segments
class Playlist
- attr_accessor :items, :version, :cache, :target, :sequence, :type,
- :iframes_only, :independent_segments
+ attr_accessor :items, :version, :cache, :target, :sequence,
+ :discontinuity_sequence, :type, :iframes_only,
+ :independent_segments, :live
def initialize(options = {})
- assign_options options
- self.items = []
+ assign_options(options)
+ @items = []
end
def self.codecs(options = {})
- item = PlaylistItem.new options
+ item = PlaylistItem.new(options)
item.codecs
end
def self.read(input)
reader = Reader.new
- reader.read input
+ reader.read(input)
end
def write(output)
writer = Writer.new(output)
writer.write(self)
end
+ def live?
+ return false if master?
+ @live
+ end
+
def master?
- return false if playlist_size == 0 && segment_size == 0
+ return @master unless @master.nil?
+ return false if playlist_size.zero? && segment_size.zero?
playlist_size > 0
end
def to_s
output = StringIO.open
@@ -53,24 +60,28 @@
private
def assign_options(options)
options = defaults.merge(options)
- self.version = options[:version]
- self.sequence = options[:sequence]
- self.cache = options[:cache]
- self.target = options[:target]
- self.type = options[:type]
- self.iframes_only = options[:iframes_only]
- self.independent_segments = options[:independent_segments]
+ @version = options[:version]
+ @sequence = options[:sequence]
+ @discontinuity_sequence = options[:discontinuity_sequence]
+ @cache = options[:cache]
+ @target = options[:target]
+ @type = options[:type]
+ @iframes_only = options[:iframes_only]
+ @independent_segments = options[:independent_segments]
+ @master = options[:master]
+ @live = options[:live]
end
def defaults
{
sequence: 0,
target: 10,
iframes_only: false,
- independent_segments: false
+ independent_segments: false,
+ live: false
}
end
def playlist_size
items.count { |item| item.is_a?(PlaylistItem) }