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

Sign up to get free protection for your applications and to get access to all the features.
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: