Module: M4S::Layout::Builder

Defined in:
lib/m4s/layout/builder.rb

Class Method Summary collapse

Class Method Details

.call(cache, source, track_id, segment_index) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/m4s/layout/builder.rb', line 5

def call(cache, source, track_id, segment_index)
  track = cache.track(track_id)

  container = Container.new(root: true)

  container.add_atom Styp.generate(cache)
  container.add_atom Sidx.generate(cache, track: track, segment_index: segment_index)

  container.size
  container.add_container :moof do |moof|
    moof.add_atom Mfhd.generate(cache, segment_index: segment_index)

    moof.add_container :traf do |traf|
      traf.add_atom Tfhd.generate(cache, track: track, segment_index: segment_index)
      traf.add_atom Tfdt.generate(cache, track: track, segment_index: segment_index)
      trun_boilerplate = Trun.generate(cache, track: track, segment_index: segment_index)

      data_offset = moof.size + traf.size + trun_boilerplate.size + ::MP4::Constants::GENERIC_HEADER_SIZE
      traf.add_atom Trun.generate(cache, track: track, segment_index: segment_index, data_offset: data_offset)
    end
  end

  container.add_atom Mdat.generate(cache, source: source, track: track, segment_index: segment_index)

  container
end