class WahWah::ID3::V2Header
ID3v2/file identifier “ID3” ID3v2 version $03 00 ID3v2 flags %abc00000 ID3v2 size 4 * %0xxxxxxx
Constants
- HEADER_FORMAT
- HEADER_SIZE
- TAG_ID
Attributes
major_version[R]
size[R]
Public Class Methods
new(file_io)
click to toggle source
# File lib/wahwah/id3/v2_header.rb, line 19 def initialize(file_io) header_content = file_io.read(HEADER_SIZE) @id, @major_version, @flags, size_bits = header_content.unpack(HEADER_FORMAT) if header_content.size >= HEADER_SIZE return unless valid? # Tag size is the size excluding the header size, # so add header size back to get total size. @size = Helper.id3_size_caculate(size_bits) + HEADER_SIZE if has_extended_header? # Extended header structure: # # Extended header size $xx xx xx xx # Extended Flags $xx xx # Size of padding $xx xx xx xx # Skip extended_header extended_header_size = Helper.id3_size_caculate(file_io.read(4).unpack('B32').first) file_io.seek(extended_header_size - 4, IO::SEEK_CUR) end end
Public Instance Methods
has_extended_header?()
click to toggle source
The second bit in flags byte indicates whether or not the header is followed by an extended header.
# File lib/wahwah/id3/v2_header.rb, line 48 def has_extended_header? @flags[1] == '1' end
valid?()
click to toggle source
# File lib/wahwah/id3/v2_header.rb, line 42 def valid? @id == TAG_ID end