Parent

Included Modules

Ogg::Codecs::Vorbis

Public Class Methods

decode_headers(reader) click to toggle source

consume header and tag pages, return array of two hashes, info and tags

# File lib/ogg/codecs/vorbis.rb, line 11
def decode_headers(reader)
  init_pkt, tag_pkt, setup_pkt = reader.read_packets(3)
  info = extract_info(init_pkt)
  info[:tag], info[:tag_vendor] = unpack_comments(tag_pkt, "\0003vorbis")
  info
end
extract_info(packet) click to toggle source
# File lib/ogg/codecs/vorbis.rb, line 25
def extract_info(packet)
  vorbis_string,
  vorbis_version,
  channels,
  samplerate,
  upper_bitrate,
  nominal_bitrate,
  lower_bitrate = packet.unpack("a7VCV4")
  
  if nominal_bitrate == 0
    if (upper_bitrate == 2**32 - 1) || (lower_bitrate == 2**32 - 1)
      nominal_bitrate = 0
    else
      nominal_bitrate = ( upper_bitrate + lower_bitrate) / 2
    end
  end
  
  return { :channels => channels, :samplerate => samplerate, :nominal_bitrate => nominal_bitrate }
end
match?(header_packet) click to toggle source

return true/false based on whether the header packet belongs to us

# File lib/ogg/codecs/vorbis.rb, line 6
def match?(header_packet)
  /^\0001vorbis.*/ =~ header_packet
end
replace_tags(reader, writer, new_tags, vendor) click to toggle source

consume pages with old tags/setup packets and rewrite newtags,setup packets return the number of pages written

# File lib/ogg/codecs/vorbis.rb, line 20
def replace_tags(reader, writer, new_tags, vendor)
  tag_pkt, setup_pkt = reader.read_packets(2)
  writer.write_packets(0, pack_comments(new_tags, vendor, "\0003vorbis"), setup_pkt)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.