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
|