class NuWav::DataChunk
Attributes
tmp_data_file[RW]
Public Class Methods
new(id=nil, size=nil, tmp_data_file=nil)
click to toggle source
# File lib/nu_wav/chunk.rb, line 301 def initialize(id=nil, size=nil, tmp_data_file=nil) @id, @size, @tmp_data_file = id, size, tmp_data_file end
new_from_file(file)
click to toggle source
# File lib/nu_wav/chunk.rb, line 293 def self.new_from_file(file) tmp_data = NuWav.temp_file('data_chunk', true) tmp_data.binmode FileUtils.cp(file.path, tmp_data.path) tmp_data.rewind self.new('data', File.size(tmp_data.path).to_s, tmp_data) end
parse(id, size, file)
click to toggle source
# File lib/nu_wav/chunk.rb, line 275 def self.parse(id, size, file) # tmp_data = File.open('./data_chunk.mp2', 'wb') tmp_data = NuWav.temp_file('data_chunk', true) tmp_data.binmode remaining = size while (remaining > 0 && !file.eof?) read_bytes = [128, remaining].min tmp_data << file.read(read_bytes) remaining -= read_bytes end tmp_data.rewind chunk = self.new(id, size, tmp_data) return chunk end
Public Instance Methods
data()
click to toggle source
# File lib/nu_wav/chunk.rb, line 305 def data f = '' if self.tmp_data_file NuWav::WaveFile.log "we have a tmp_data_file!" self.tmp_data_file.rewind f = self.tmp_data_file.read self.tmp_data_file.rewind else NuWav::WaveFile.log "we have NO tmp_data_file!" end f end
to_binary(options={})
click to toggle source
# File lib/nu_wav/chunk.rb, line 322 def to_binary(options={}) NuWav::WaveFile.log "data chunk to_binary" d = self.data NuWav::WaveFile.log "got data size = #{d.size} #{d[0,10]}" out = "data" + write_dword(d.size) + d if d.size.odd? && !options[:no_pad_byte] NuWav::WaveFile.log "odd, adding a pad byte" out += "\0" end out end
to_s()
click to toggle source
# File lib/nu_wav/chunk.rb, line 318 def to_s "<chunk type:data (size:#{data.size})/>" end