Class: WahWah::ID3::V2Header
- Inherits:
-
Object
- Object
- WahWah::ID3::V2Header
- Defined in:
- lib/wahwah/id3/v2_header.rb
Overview
ID3v2/file identifier “ID3” ID3v2 version $03 00 ID3v2 flags %abc00000 ID3v2 size 4 * %0xxxxxxx
Constant Summary collapse
- TAG_ID =
"ID3"
- HEADER_SIZE =
10
- HEADER_FORMAT =
"A3CxB8B*"
Instance Attribute Summary collapse
-
#major_version ⇒ Object
readonly
Returns the value of attribute major_version.
-
#size ⇒ Object
readonly
Returns the value of attribute size.
Instance Method Summary collapse
-
#has_extended_header? ⇒ Boolean
The second bit in flags byte indicates whether or not the header is followed by an extended header.
-
#initialize(file_io) ⇒ V2Header
constructor
A new instance of V2Header.
- #valid? ⇒ Boolean
Constructor Details
#initialize(file_io) ⇒ V2Header
Returns a new instance of V2Header.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# 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).unpack1("B32")) file_io.seek(extended_header_size - 4, IO::SEEK_CUR) end end |
Instance Attribute Details
#major_version ⇒ Object (readonly)
Returns the value of attribute major_version.
17 18 19 |
# File 'lib/wahwah/id3/v2_header.rb', line 17 def major_version @major_version end |
#size ⇒ Object (readonly)
Returns the value of attribute size.
17 18 19 |
# File 'lib/wahwah/id3/v2_header.rb', line 17 def size @size end |
Instance Method Details
#has_extended_header? ⇒ Boolean
The second bit in flags byte indicates whether or not the header is followed by an extended header.
48 49 50 |
# File 'lib/wahwah/id3/v2_header.rb', line 48 def has_extended_header? @flags[1] == "1" end |
#valid? ⇒ Boolean
42 43 44 |
# File 'lib/wahwah/id3/v2_header.rb', line 42 def valid? @id == TAG_ID end |