taglib-ruby 0.5.2-x86-mingw32 → 0.6.0-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. data/.yardopts +1 -1
  2. data/CHANGES.md +11 -0
  3. data/LICENSE.txt +0 -2
  4. data/README.md +7 -9
  5. data/docs/taglib/base.rb +35 -7
  6. data/docs/taglib/id3v2.rb +37 -5
  7. data/docs/taglib/mp4.rb +267 -0
  8. data/docs/taglib/mpeg.rb +23 -8
  9. data/ext/taglib_base/includes.i +2 -2
  10. data/ext/taglib_base/taglib_base.i +3 -0
  11. data/ext/taglib_base/taglib_base_wrap.cxx +11 -12
  12. data/ext/taglib_flac/extconf.rb +4 -0
  13. data/ext/taglib_flac/taglib_flac_wrap.cxx +21 -25
  14. data/ext/taglib_id3v1/taglib_id3v1_wrap.cxx +4 -8
  15. data/ext/taglib_id3v2/taglib_id3v2.i +3 -0
  16. data/ext/taglib_id3v2/taglib_id3v2_wrap.cxx +528 -69
  17. data/ext/taglib_mp4/extconf.rb +4 -0
  18. data/ext/taglib_mp4/taglib_mp4.i +225 -0
  19. data/ext/taglib_mp4/taglib_mp4_wrap.cxx +4830 -0
  20. data/ext/taglib_mpeg/taglib_mpeg.i +15 -0
  21. data/ext/taglib_mpeg/taglib_mpeg_wrap.cxx +174 -88
  22. data/ext/taglib_ogg/taglib_ogg_wrap.cxx +2 -6
  23. data/ext/taglib_vorbis/taglib_vorbis_wrap.cxx +8 -12
  24. data/lib/libtag.dll +0 -0
  25. data/lib/taglib.rb +1 -0
  26. data/lib/taglib/mp4.rb +33 -0
  27. data/lib/taglib/version.rb +2 -2
  28. data/lib/taglib_base.so +0 -0
  29. data/lib/taglib_flac.so +0 -0
  30. data/lib/taglib_id3v1.so +0 -0
  31. data/lib/taglib_id3v2.so +0 -0
  32. data/lib/taglib_mp4.so +0 -0
  33. data/lib/taglib_mpeg.so +0 -0
  34. data/lib/taglib_ogg.so +0 -0
  35. data/lib/taglib_vorbis.so +0 -0
  36. data/taglib-ruby.gemspec +19 -3
  37. data/tasks/ext.rake +3 -0
  38. data/tasks/swig.rake +6 -1
  39. data/test/base_test.rb +11 -0
  40. data/test/data/Makefile +5 -2
  41. data/test/data/flac-create.cpp +2 -22
  42. data/test/data/get_picture_data.cpp +22 -0
  43. data/test/data/mp4-create.cpp +38 -0
  44. data/test/data/mp4.m4a +0 -0
  45. data/test/fileref_write_test.rb +9 -0
  46. data/test/flac_file_test.rb +2 -1
  47. data/test/id3v2_header_test.rb +61 -0
  48. data/test/id3v2_write_test.rb +17 -0
  49. data/test/mp4_file_test.rb +51 -0
  50. data/test/mp4_file_write_test.rb +66 -0
  51. data/test/mp4_items_test.rb +183 -0
  52. metadata +84 -7
@@ -0,0 +1,61 @@
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
+
3
+ class TestID3v2Header < Test::Unit::TestCase
4
+ context "The sample.mp3 file" do
5
+ setup do
6
+ read_properties = false
7
+ @file = TagLib::MPEG::File.new("test/data/sample.mp3", read_properties)
8
+ @tag = @file.id3v2_tag
9
+ end
10
+
11
+ should "have a ID3v2 header" do
12
+ assert_not_nil @tag.header
13
+ end
14
+
15
+ context "header" do
16
+ setup do
17
+ @header = @tag.header
18
+ end
19
+
20
+ should "have a major version" do
21
+ assert_equal 3, @header.major_version
22
+ end
23
+
24
+ should "have a revision number" do
25
+ assert_equal 0, @header.revision_number
26
+ end
27
+
28
+ should "have a tag size" do
29
+ assert_equal 63478, @header.tag_size
30
+ end
31
+
32
+ should "not have a footer" do
33
+ assert_equal false, @header.footer_present
34
+ end
35
+
36
+ should "not have an extended header" do
37
+ assert_equal false, @header.extended_header
38
+ end
39
+
40
+ context "changing the major version" do
41
+
42
+ setup do
43
+ @header.major_version = 4
44
+ end
45
+
46
+ should "have a different major verson" do
47
+ assert_equal 4, @header.major_version
48
+ end
49
+
50
+ teardown do
51
+ @header.major_version = 3
52
+ end
53
+ end
54
+ end
55
+
56
+ teardown do
57
+ @file.close
58
+ @file = nil
59
+ end
60
+ end
61
+ end
@@ -54,6 +54,23 @@ class TestID3v2Write < Test::Unit::TestCase
54
54
  end
55
55
  end
56
56
 
57
+ should "be able to save ID3v2.3 when compiled against TagLib >= 1.8" do
58
+ if TagLib::TAGLIB_MAJOR_VERSION > 1 ||
59
+ (TagLib::TAGLIB_MAJOR_VERSION == 1 && TagLib::TAGLIB_MINOR_VERSION >= 8)
60
+ success = @file.save(TagLib::MPEG::File::ID3v2, true, 3)
61
+ assert_equal true, success
62
+ @file.close
63
+ @file = nil
64
+
65
+ header = File.open(OUTPUT_FILE, 'rb') do |f|
66
+ f.read(5)
67
+ end
68
+ # 3 stands for v2.3
69
+ s = "ID3" + 3.chr + 0.chr
70
+ assert_equal s, header
71
+ end
72
+ end
73
+
57
74
  should "be able to set fields to nil" do
58
75
  tag = @file.id3v2_tag
59
76
  tag.title = nil
@@ -0,0 +1,51 @@
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
+
3
+ class MP4FileTest < Test::Unit::TestCase
4
+ context "TagLib::MP4::File" do
5
+ setup do
6
+ @file = TagLib::MP4::File.new("test/data/mp4.m4a")
7
+ @tag = @file.tag
8
+ end
9
+
10
+ should "contain basic tag information" do
11
+ assert_equal "Title", @tag.title
12
+ assert_equal "Artist", @tag.artist
13
+ assert_equal "Album", @tag.album
14
+ assert_equal "Comment", @tag.comment
15
+ assert_equal "Pop", @tag.genre
16
+ assert_equal 2011, @tag.year
17
+ assert_equal 7, @tag.track
18
+ assert_equal false, @tag.empty?
19
+ end
20
+
21
+ context "audio properties" do
22
+ setup do
23
+ @properties = @file.audio_properties
24
+ end
25
+
26
+ should "exist" do
27
+ assert_not_nil @properties
28
+ end
29
+
30
+ should "contain basic information" do
31
+ assert_equal 1, @properties.length
32
+ assert_equal 54, @properties.bitrate
33
+ assert_equal 44100, @properties.sample_rate
34
+ # The test file is mono, this appears to be a TagLib bug
35
+ assert_equal 2, @properties.channels
36
+ end
37
+
38
+ should "contain mp4-specific information" do
39
+ assert_equal 16, @properties.bits_per_sample
40
+ # Properties#encrypted? raises a NoMethodError
41
+ # assert_equal false, @properties.encrypted?
42
+ end
43
+ end
44
+
45
+ teardown do
46
+ @file.close
47
+ @file = nil
48
+ end
49
+ end
50
+
51
+ end
@@ -0,0 +1,66 @@
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
+
3
+ class MP4FileWriteTest < Test::Unit::TestCase
4
+
5
+ SAMPLE_FILE = "test/data/mp4.m4a"
6
+ OUTPUT_FILE = "test/data/output.m4a"
7
+ PICTURE_FILE = "test/data/globe_east_540.jpg"
8
+
9
+ def reloaded
10
+ TagLib::MP4::File.open(OUTPUT_FILE, false) do |file|
11
+ yield file
12
+ end
13
+ end
14
+
15
+ context "TagLib::MP4::File" do
16
+ setup do
17
+ FileUtils.cp SAMPLE_FILE, OUTPUT_FILE
18
+ @file = TagLib::MP4::File.new(OUTPUT_FILE, false)
19
+ end
20
+
21
+ should "be able to save the title" do
22
+ tag = @file.tag
23
+ assert_not_nil tag
24
+ tag.title = "New Title"
25
+ success = @file.save
26
+ assert success
27
+ @file.close
28
+ @file = nil
29
+
30
+ written_title = reloaded do |file|
31
+ file.tag.title
32
+ end
33
+ assert_equal "New Title", written_title
34
+ end
35
+
36
+ should "be able to add and save new cover art" do
37
+ item_list_map = @file.tag.item_list_map
38
+ cover_art_list = item_list_map['covr'].to_cover_art_list
39
+ assert_equal 1, cover_art_list.size
40
+
41
+ data = File.open(PICTURE_FILE, 'rb') { |f| f.read }
42
+ new_cover_art = TagLib::MP4::CoverArt.new(TagLib::MP4::CoverArt::JPEG, data)
43
+
44
+ cover_art_list << new_cover_art
45
+ item_list_map.insert('covr', TagLib::MP4::Item.from_cover_art_list(cover_art_list))
46
+ assert_equal 2, item_list_map['covr'].to_cover_art_list.size
47
+
48
+ success = @file.save
49
+ assert success
50
+
51
+ reloaded do |file|
52
+ written_cover_art = file.tag.item_list_map['covr'].to_cover_art_list.last
53
+ assert_equal TagLib::MP4::CoverArt::JPEG, written_cover_art.format
54
+ assert_equal data, written_cover_art.data
55
+ end
56
+ end
57
+
58
+ teardown do
59
+ if @file
60
+ @file.close
61
+ @file = nil
62
+ end
63
+ FileUtils.rm OUTPUT_FILE
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,183 @@
1
+ # encoding: utf-8
2
+ require File.join(File.dirname(__FILE__), 'helper')
3
+
4
+ class MP4ItemsTest < Test::Unit::TestCase
5
+ ITUNES_LEADER = "\xC2\xA9"
6
+
7
+ context "The mp4.m4a file's items" do
8
+ setup do
9
+ @file = TagLib::MP4::File.new("test/data/mp4.m4a")
10
+ @tag = @file.tag
11
+ @item_list_map = @file.tag.item_list_map
12
+ @item_keys = [
13
+ "cover", "#{ITUNES_LEADER}nam", "#{ITUNES_LEADER}ART", "#{ITUNES_LEADER}alb",
14
+ "#{ITUNES_LEADER}cmt", "#{ITUNES_LEADER}gen", "#{ITUNES_LEADER}day",
15
+ "trkn", "#{ITUNES_LEADER}too", "#{ITUNES_LEADER}cpy"
16
+ ]
17
+ end
18
+
19
+ context "item_list_map" do
20
+ should "exist" do
21
+ assert_not_nil @item_list_map
22
+ end
23
+
24
+ should "not be empty" do
25
+ assert_equal false, @item_list_map.empty?
26
+ end
27
+
28
+ should "contain 10 items" do
29
+ assert_equal @item_keys.count, @item_list_map.size
30
+ end
31
+
32
+ should "have keys" do
33
+ assert_equal true, @item_list_map.contains("trkn")
34
+ assert_equal true, @item_list_map.has_key?("#{ITUNES_LEADER}too")
35
+ assert_equal true, @item_list_map.include?("#{ITUNES_LEADER}cpy")
36
+ assert_equal false, @item_list_map.include?("none such key")
37
+ end
38
+
39
+ should "look up keys" do
40
+ assert_nil @item_list_map["none such key"]
41
+ assert_equal ["Title"], @item_list_map["#{ITUNES_LEADER}nam"].to_string_list
42
+ end
43
+
44
+ should "be clearable" do
45
+ assert_equal 10, @item_list_map.size
46
+ comment = @item_list_map["#{ITUNES_LEADER}cmt"]
47
+ @item_list_map.clear
48
+ assert_equal true, @item_list_map.empty?
49
+ begin
50
+ comment.to_string_list
51
+ flunk("Should have raised ObjectPreviouslyDeleted.")
52
+ rescue => e
53
+ assert_equal "ObjectPreviouslyDeleted", e.class.to_s
54
+ end
55
+ end
56
+
57
+ should "be convertable to an array" do
58
+ array = @item_list_map.to_a
59
+ assert_equal 10, array.count
60
+ array.each do |object|
61
+ assert_equal Array, object.class
62
+ assert_equal 2, object.count
63
+ assert_equal String, object.first.class
64
+ assert_equal TagLib::MP4::Item, object.last.class
65
+ end
66
+ end
67
+ end
68
+
69
+ should "be removable" do
70
+ assert_equal 10, @item_list_map.size
71
+ title = @item_list_map["#{ITUNES_LEADER}nam"]
72
+ @item_list_map.erase("#{ITUNES_LEADER}nam")
73
+ assert_equal 9, @item_list_map.size
74
+ begin
75
+ title.to_string_list
76
+ flunk("Should have raised ObjectPreviouslyDeleted.")
77
+ rescue => e
78
+ assert_equal "ObjectPreviouslyDeleted", e.class.to_s
79
+ end
80
+ end
81
+
82
+ context "inserting items" do
83
+ should "insert a new item" do
84
+ new_title = TagLib::MP4::Item.from_string_list(['new title'])
85
+ @item_list_map.insert("#{ITUNES_LEADER}nam", new_title)
86
+ new_title = nil
87
+ GC.start
88
+ assert_equal ['new title'], @item_list_map["#{ITUNES_LEADER}nam"].to_string_list
89
+ end
90
+
91
+ should "unlink items that get replaced" do
92
+ title = @item_list_map["#{ITUNES_LEADER}nam"]
93
+ @item_list_map.insert("#{ITUNES_LEADER}nam", TagLib::MP4::Item.from_int(1))
94
+ begin
95
+ title.to_string_list
96
+ flunk("Should have raised ObjectPreviouslyDeleted.")
97
+ rescue => e
98
+ assert_equal "ObjectPreviouslyDeleted", e.class.to_s
99
+ end
100
+ end
101
+ end
102
+
103
+ context "TagLib::MP4::Item" do
104
+ should "be creatable from an int" do
105
+ item = TagLib::MP4::Item.from_int(-42)
106
+ assert_equal TagLib::MP4::Item, item.class
107
+ assert_equal -42, item.to_int
108
+ end
109
+
110
+ should "be creatable from a boolean" do
111
+ item = TagLib::MP4::Item.from_bool(false)
112
+ assert_equal TagLib::MP4::Item, item.class
113
+ assert_equal false, item.to_bool
114
+ end
115
+
116
+ context ".from_int_pair" do
117
+ should "be creatable from a pair of ints" do
118
+ item = TagLib::MP4::Item.from_int_pair([123, 456])
119
+ assert_equal TagLib::MP4::Item, item.class
120
+ assert_equal [123, 456], item.to_int_pair
121
+ end
122
+
123
+ should "raise an error when passed something other than an Array" do
124
+ begin
125
+ TagLib::MP4::Item.from_int_pair(1)
126
+ flunk("Should have raised ArgumentError.")
127
+ rescue => e
128
+ assert_equal "ArgumentError", e.class.to_s
129
+ end
130
+ end
131
+
132
+ should "raise an error when passed an Array with more than two elements" do
133
+ begin
134
+ TagLib::MP4::Item.from_int_pair([1, 2, 3])
135
+ flunk("Should have raised ArgumentError.")
136
+ rescue => e
137
+ assert_equal "ArgumentError", e.class.to_s
138
+ end
139
+ end
140
+
141
+ should "raise an error when passed an Array with less than two elements" do
142
+ begin
143
+ TagLib::MP4::Item.from_int_pair([1])
144
+ flunk("Should have raised ArgumentError.")
145
+ rescue => e
146
+ assert_equal "ArgumentError", e.class.to_s
147
+ end
148
+ end
149
+ end
150
+
151
+ context "created from an array of strings" do
152
+ should "interpreted as strings with an encoding" do
153
+ item = TagLib::MP4::Item.from_string_list(["héllo"])
154
+ assert_equal TagLib::MP4::Item, item.class
155
+ assert_equal ["héllo"], item.to_string_list
156
+ end
157
+ end
158
+
159
+ should "be creatable from a CoverArt list" do
160
+ cover_art = TagLib::MP4::CoverArt.new(TagLib::MP4::CoverArt::JPEG, 'foo')
161
+ item = TagLib::MP4::Item.from_cover_art_list([cover_art])
162
+ assert_equal TagLib::MP4::Item, item.class
163
+ new_cover_art = item.to_cover_art_list.first
164
+ assert_equal 'foo', new_cover_art.data
165
+ assert_equal TagLib::MP4::CoverArt::JPEG, new_cover_art.format
166
+ end
167
+ end
168
+
169
+ context "TagLib::MP4::CoverArt" do
170
+ should "be creatable from a string" do
171
+ cover_art = TagLib::MP4::CoverArt.new(TagLib::MP4::CoverArt::JPEG, 'foo')
172
+ assert_equal TagLib::MP4::CoverArt::JPEG, cover_art.format
173
+ assert_equal 'foo', cover_art.data
174
+ end
175
+ end
176
+
177
+ teardown do
178
+ @file.close
179
+ @file = nil
180
+ end
181
+ end
182
+
183
+ end
metadata CHANGED
@@ -1,15 +1,21 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: taglib-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.6.0
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 6
9
+ - 0
10
+ hash: -1624000421784734184
6
11
  platform: x86-mingw32
7
12
  authors:
8
13
  - Robin Stocker
14
+ - Jacob Vosmaer
9
15
  autorequire:
10
16
  bindir: bin
11
17
  cert_chain: []
12
- date: 2012-10-06 00:00:00.000000000 Z
18
+ date: 2013-04-26 00:00:00.000000000 Z
13
19
  dependencies:
14
20
  - !ruby/object:Gem::Dependency
15
21
  name: bundler
@@ -18,7 +24,11 @@ dependencies:
18
24
  requirements:
19
25
  - - ~>
20
26
  - !ruby/object:Gem::Version
21
- version: 1.1.0
27
+ version: '1.2'
28
+ segments:
29
+ - 1
30
+ - 2
31
+ hash: 659333688826136466
22
32
  type: :development
23
33
  prerelease: false
24
34
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +36,11 @@ dependencies:
26
36
  requirements:
27
37
  - - ~>
28
38
  - !ruby/object:Gem::Version
29
- version: 1.1.0
39
+ version: '1.2'
40
+ segments:
41
+ - 1
42
+ - 2
43
+ hash: 659333688826136466
30
44
  - !ruby/object:Gem::Dependency
31
45
  name: rake-compiler
32
46
  requirement: !ruby/object:Gem::Requirement
@@ -35,6 +49,10 @@ dependencies:
35
49
  - - ~>
36
50
  - !ruby/object:Gem::Version
37
51
  version: '0.8'
52
+ segments:
53
+ - 0
54
+ - 8
55
+ hash: -182208375001009716
38
56
  type: :development
39
57
  prerelease: false
40
58
  version_requirements: !ruby/object:Gem::Requirement
@@ -43,6 +61,10 @@ dependencies:
43
61
  - - ~>
44
62
  - !ruby/object:Gem::Version
45
63
  version: '0.8'
64
+ segments:
65
+ - 0
66
+ - 8
67
+ hash: -182208375001009716
46
68
  - !ruby/object:Gem::Dependency
47
69
  name: shoulda-context
48
70
  requirement: !ruby/object:Gem::Requirement
@@ -51,6 +73,10 @@ dependencies:
51
73
  - - ~>
52
74
  - !ruby/object:Gem::Version
53
75
  version: '1.0'
76
+ segments:
77
+ - 1
78
+ - 0
79
+ hash: -1261716483015722782
54
80
  type: :development
55
81
  prerelease: false
56
82
  version_requirements: !ruby/object:Gem::Requirement
@@ -59,6 +85,10 @@ dependencies:
59
85
  - - ~>
60
86
  - !ruby/object:Gem::Version
61
87
  version: '1.0'
88
+ segments:
89
+ - 1
90
+ - 0
91
+ hash: -1261716483015722782
62
92
  - !ruby/object:Gem::Dependency
63
93
  name: yard
64
94
  requirement: !ruby/object:Gem::Requirement
@@ -67,6 +97,10 @@ dependencies:
67
97
  - - ~>
68
98
  - !ruby/object:Gem::Version
69
99
  version: '0.7'
100
+ segments:
101
+ - 0
102
+ - 7
103
+ hash: -2819999278125497282
70
104
  type: :development
71
105
  prerelease: false
72
106
  version_requirements: !ruby/object:Gem::Requirement
@@ -75,6 +109,34 @@ dependencies:
75
109
  - - ~>
76
110
  - !ruby/object:Gem::Version
77
111
  version: '0.7'
112
+ segments:
113
+ - 0
114
+ - 7
115
+ hash: -2819999278125497282
116
+ - !ruby/object:Gem::Dependency
117
+ name: kramdown
118
+ requirement: !ruby/object:Gem::Requirement
119
+ none: false
120
+ requirements:
121
+ - - ~>
122
+ - !ruby/object:Gem::Version
123
+ version: '1.0'
124
+ segments:
125
+ - 1
126
+ - 0
127
+ hash: -1261716483015722782
128
+ type: :development
129
+ prerelease: false
130
+ version_requirements: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ~>
134
+ - !ruby/object:Gem::Version
135
+ version: '1.0'
136
+ segments:
137
+ - 1
138
+ - 0
139
+ hash: -1261716483015722782
78
140
  description: ! 'Ruby interface for the taglib C++ library, for reading and writing
79
141
 
80
142
  meta-data (tags) of many audio formats.
@@ -106,6 +168,7 @@ files:
106
168
  - docs/taglib/flac.rb
107
169
  - docs/taglib/id3v1.rb
108
170
  - docs/taglib/id3v2.rb
171
+ - docs/taglib/mp4.rb
109
172
  - docs/taglib/mpeg.rb
110
173
  - docs/taglib/ogg.rb
111
174
  - docs/taglib/vorbis.rb
@@ -114,6 +177,7 @@ files:
114
177
  - ext/taglib_base/includes.i
115
178
  - ext/taglib_base/taglib_base.i
116
179
  - ext/taglib_base/taglib_base_wrap.cxx
180
+ - ext/taglib_flac/extconf.rb
117
181
  - ext/taglib_flac/taglib_flac.i
118
182
  - ext/taglib_flac/taglib_flac_wrap.cxx
119
183
  - ext/taglib_id3v1/extconf.rb
@@ -123,6 +187,9 @@ files:
123
187
  - ext/taglib_id3v2/relativevolumeframe.i
124
188
  - ext/taglib_id3v2/taglib_id3v2.i
125
189
  - ext/taglib_id3v2/taglib_id3v2_wrap.cxx
190
+ - ext/taglib_mp4/extconf.rb
191
+ - ext/taglib_mp4/taglib_mp4.i
192
+ - ext/taglib_mp4/taglib_mp4_wrap.cxx
126
193
  - ext/taglib_mpeg/extconf.rb
127
194
  - ext/taglib_mpeg/taglib_mpeg.i
128
195
  - ext/taglib_mpeg/taglib_mpeg_wrap.cxx
@@ -139,6 +206,7 @@ files:
139
206
  - lib/taglib/flac.rb
140
207
  - lib/taglib/id3v1.rb
141
208
  - lib/taglib/id3v2.rb
209
+ - lib/taglib/mp4.rb
142
210
  - lib/taglib/mpeg.rb
143
211
  - lib/taglib/ogg.rb
144
212
  - lib/taglib/version.rb
@@ -148,15 +216,19 @@ files:
148
216
  - tasks/ext.rake
149
217
  - tasks/gemspec_check.rake
150
218
  - tasks/swig.rake
219
+ - test/base_test.rb
151
220
  - test/data/Makefile
152
221
  - test/data/add-relative-volume.cpp
153
222
  - test/data/crash.mp3
154
223
  - test/data/flac-create.cpp
155
224
  - test/data/flac.flac
225
+ - test/data/get_picture_data.cpp
156
226
  - test/data/globe_east_540.jpg
157
227
  - test/data/globe_east_90.jpg
158
228
  - test/data/id3v1-create.cpp
159
229
  - test/data/id3v1.mp3
230
+ - test/data/mp4-create.cpp
231
+ - test/data/mp4.m4a
160
232
  - test/data/relative-volume.mp3
161
233
  - test/data/sample.mp3
162
234
  - test/data/unicode.mp3
@@ -170,11 +242,15 @@ files:
170
242
  - test/flac_file_write_test.rb
171
243
  - test/id3v1_tag_test.rb
172
244
  - test/id3v2_frames_test.rb
245
+ - test/id3v2_header_test.rb
173
246
  - test/id3v2_memory_test.rb
174
247
  - test/id3v2_relative_volume_test.rb
175
248
  - test/id3v2_tag_test.rb
176
249
  - test/id3v2_unicode_test.rb
177
250
  - test/id3v2_write_test.rb
251
+ - test/mp4_file_test.rb
252
+ - test/mp4_file_write_test.rb
253
+ - test/mp4_items_test.rb
178
254
  - test/mpeg_file_test.rb
179
255
  - test/tag_test.rb
180
256
  - test/unicode_filename_test.rb
@@ -187,8 +263,9 @@ files:
187
263
  - lib/taglib_ogg.so
188
264
  - lib/taglib_vorbis.so
189
265
  - lib/taglib_flac.so
266
+ - lib/taglib_mp4.so
190
267
  - lib/libtag.dll
191
- homepage: http://robinst.github.com/taglib-ruby/
268
+ homepage: http://robinst.github.io/taglib-ruby/
192
269
  licenses:
193
270
  - MIT
194
271
  post_install_message:
@@ -203,7 +280,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
203
280
  version: '0'
204
281
  segments:
205
282
  - 0
206
- hash: -2408139110650620671
283
+ hash: -2010148279711531746
207
284
  required_rubygems_version: !ruby/object:Gem::Requirement
208
285
  none: false
209
286
  requirements:
@@ -212,7 +289,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
212
289
  version: '0'
213
290
  segments:
214
291
  - 0
215
- hash: -2408139110650620671
292
+ hash: -2010148279711531746
216
293
  requirements:
217
294
  - taglib (libtag1-dev in Debian/Ubuntu, taglib-devel in Fedora/RHEL)
218
295
  rubyforge_project: