Class: MP4::Metadata::Memoize::Stbl::DeltaCalculator

Inherits:
Object
  • Object
show all
Defined in:
lib/mp4/metadata/memoize/stbl/delta_calculator.rb

Instance Method Summary collapse

Constructor Details

#initialize(stts_table) ⇒ DeltaCalculator

Returns a new instance of DeltaCalculator.



5
6
7
8
9
10
# File 'lib/mp4/metadata/memoize/stbl/delta_calculator.rb', line 5

def initialize(stts_table)
  @stts_table = stts_table.dup
  @stts_table_dup = stts_table.dup
  @samples_processed_count = 0
  @cached_delta = nil
end

Instance Method Details

#find_delta(sample_number) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/mp4/metadata/memoize/stbl/delta_calculator.rb', line 12

def find_delta(sample_number)
  return @cached_delta if sample_number <= @samples_processed_count

  while (entry = @stts_table.shift)
    @samples_processed_count += entry.sample_count

    if sample_number <= @samples_processed_count
      @cached_delta = entry.fetch(:sample_delta)
      return @cached_delta
    end
  end

  raise "Delta not found for sample index: #{sample_number}"
end