class BMFF::Box::TrackFragmentRandomAccess

vim: set expandtab tabstop=2 shiftwidth=2 softtabstop=2 autoindent:

Attributes

length_size_of_sample_num[RW]
length_size_of_traf_num[RW]
length_size_of_trun_num[RW]
moof_offset[RW]
number_of_entry[RW]
reserved1[RW]
sample_number[RW]
time[RW]
track_id[RW]
traf_number[RW]
trun_number[RW]

Public Instance Methods

parse_data() click to toggle source
Calls superclass method BMFF::Box::Full#parse_data
# File lib/bmff/box/track_fragment_random_access.rb, line 10
def parse_data
  super
  @track_id = io.get_uint32
  tmp = io.get_uint32
  @reserved1 = (tmp >> 6)
  @length_size_of_traf_num = (tmp >> 4) & 0x03
  @length_size_of_trun_num = (tmp >> 2) & 0x03
  @length_size_of_sample_num = (tmp & 0x03)
  @number_of_entry = io.get_uint32
  @time = []
  @moof_offset = []
  @traf_number = []
  @trun_number = []
  @sample_number = []
  @number_of_entry.times do
    if version == 1
      @time << io.get_uint64
      @moof_offset << io.get_uint64
    else
      @time << io.get_uint32
      @moof_offset << io.get_uint32
    end
    @traf_number << get_variable_size_uint((@length_size_of_traf_num + 1) * 8)
    @trun_number << get_variable_size_uint((@length_size_of_trun_num + 1) * 8)
    @sample_number << get_variable_size_uint((@length_size_of_sample_num + 1) * 8)
  end
end

Private Instance Methods

get_variable_size_uint(size) click to toggle source
# File lib/bmff/box/track_fragment_random_access.rb, line 38
def get_variable_size_uint(size)
  case size
  when 8
    io.get_uint8
  when 16
    io.get_uint16
  when 24
    io.get_uint24
  when 32
    io.get_uint32
  else
    raise ArgumentError, "Unsupported field size."
  end
end