taglib-ruby 1.0.1 → 1.1.0
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.
- checksums.yaml +4 -4
- data/.yardopts +1 -1
- data/CHANGELOG.md +4 -0
- data/README.md +2 -4
- data/Rakefile +3 -3
- data/ext/taglib_base/includes.i +24 -0
- data/ext/taglib_base/taglib_base.i +18 -0
- data/ext/taglib_id3v2/taglib_id3v2.i +17 -0
- data/ext/taglib_id3v2/taglib_id3v2_wrap.cxx +2592 -685
- data/lib/taglib/version.rb +2 -2
- data/taglib-ruby.gemspec +4 -2
- data/tasks/gemspec_check.rake +1 -1
- data/test/data/flac_nopic.flac +0 -0
- data/test/flac_picture_memory_test.rb +43 -0
- data/test/id3v2_frames_test.rb +64 -0
- metadata +12 -10
data/lib/taglib/version.rb
CHANGED
data/taglib-ruby.gemspec
CHANGED
@@ -26,8 +26,8 @@ DESC
|
|
26
26
|
s.add_development_dependency 'bundler', '>= 1.2', '< 3'
|
27
27
|
s.add_development_dependency 'rake-compiler', '~> 0.9'
|
28
28
|
s.add_development_dependency 'shoulda-context', '~> 1.0'
|
29
|
-
s.add_development_dependency 'yard', '~> 0.9.
|
30
|
-
s.add_development_dependency 'kramdown', '~>
|
29
|
+
s.add_development_dependency 'yard', '~> 0.9.26'
|
30
|
+
s.add_development_dependency 'kramdown', '~> 2.3.0'
|
31
31
|
s.add_development_dependency 'test-unit', '~> 3.1'
|
32
32
|
|
33
33
|
s.extensions = [
|
@@ -134,6 +134,7 @@ DESC
|
|
134
134
|
"test/data/crash.mp3",
|
135
135
|
"test/data/flac-create.cpp",
|
136
136
|
"test/data/flac.flac",
|
137
|
+
"test/data/flac_nopic.flac",
|
137
138
|
"test/data/get_picture_data.cpp",
|
138
139
|
"test/data/globe_east_540.jpg",
|
139
140
|
"test/data/globe_east_90.jpg",
|
@@ -155,6 +156,7 @@ DESC
|
|
155
156
|
"test/fileref_write_test.rb",
|
156
157
|
"test/flac_file_test.rb",
|
157
158
|
"test/flac_file_write_test.rb",
|
159
|
+
"test/flac_picture_memory_test.rb",
|
158
160
|
"test/helper.rb",
|
159
161
|
"test/id3v1_genres_test.rb",
|
160
162
|
"test/id3v1_tag_test.rb",
|
data/tasks/gemspec_check.rake
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
desc "Checks file list in .gemspec against files tracked in Git"
|
2
2
|
task :gemspec_check do |t|
|
3
|
-
exclude = ['.gitignore', '.
|
3
|
+
exclude = ['.gitignore', '.github/workflows/ci.yml']
|
4
4
|
git_files = `git ls-files`.split("\n") - exclude
|
5
5
|
gemspec_files = $gemspec.files
|
6
6
|
|
Binary file
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
2
|
+
|
3
|
+
class TestFlacPictureMemory < Test::Unit::TestCase
|
4
|
+
|
5
|
+
N = 10000
|
6
|
+
|
7
|
+
context "TagLib::FLAC::Picture" do
|
8
|
+
|
9
|
+
setup do
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
should "release memory when closing flac file with picture data" do
|
14
|
+
c = 0
|
15
|
+
N.times do
|
16
|
+
TagLib::FLAC::File.open("test/data/flac.flac", false) do |f|
|
17
|
+
f.picture_list.each do |p|
|
18
|
+
x = p.data
|
19
|
+
c = c + 1
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
assert_equal N,c
|
24
|
+
end
|
25
|
+
|
26
|
+
should "process a flac file without picture data" do
|
27
|
+
c = 0
|
28
|
+
N.times do
|
29
|
+
TagLib::FLAC::File.open("test/data/flac_nopic.flac", false) do |f|
|
30
|
+
f.picture_list.each do |p|
|
31
|
+
x = p.data
|
32
|
+
c = c + 1
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
assert_equal 0,c
|
37
|
+
end
|
38
|
+
|
39
|
+
teardown do
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/test/id3v2_frames_test.rb
CHANGED
@@ -92,6 +92,70 @@ class TestID3v2Frames < Test::Unit::TestCase
|
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
95
|
+
context 'CTOC and CHAP frames' do
|
96
|
+
setup do
|
97
|
+
@chapters = [
|
98
|
+
{ id: 'CH1', start_time: 100, end_time: 200 },
|
99
|
+
{ id: 'CH2', start_time: 201, end_time: 300 },
|
100
|
+
{ id: 'CH3', start_time: 301, end_time: 400 }
|
101
|
+
]
|
102
|
+
|
103
|
+
@default_ctoc = TagLib::ID3v2::TableOfContentsFrame.new('Test')
|
104
|
+
@default_chap = TagLib::ID3v2::ChapterFrame.new('Test', 0, 1, 0xFFFFFFFF, 0xFFFFFFFF)
|
105
|
+
end
|
106
|
+
|
107
|
+
should 'not have a CTOC frame' do
|
108
|
+
assert_equal [], @tag.frame_list('CTOC')
|
109
|
+
end
|
110
|
+
|
111
|
+
should 'not have a CHAP frame' do
|
112
|
+
assert_equal [], @tag.frame_list('CHAP')
|
113
|
+
end
|
114
|
+
|
115
|
+
should 'have one CTOC frame (only one Table of Contents)' do
|
116
|
+
toc = TagLib::ID3v2::TableOfContentsFrame.new('TOC')
|
117
|
+
toc.is_top_level = true
|
118
|
+
toc.is_ordered = true
|
119
|
+
|
120
|
+
@chapters.each do |chapter|
|
121
|
+
toc.add_child_element(chapter[:id])
|
122
|
+
end
|
123
|
+
|
124
|
+
@tag.add_frame(toc)
|
125
|
+
|
126
|
+
ctoc_frame_list = @tag.frame_list('CTOC')
|
127
|
+
assert_equal @default_ctoc.class, ctoc_frame_list.first.class
|
128
|
+
assert_equal 1, ctoc_frame_list.size
|
129
|
+
assert_equal 'TOC', ctoc_frame_list.first.element_id
|
130
|
+
assert_equal 3, ctoc_frame_list.first.child_elements.size
|
131
|
+
assert_equal %w[CH1 CH2 CH3], ctoc_frame_list.first.child_elements
|
132
|
+
end
|
133
|
+
|
134
|
+
should 'have CHAP frames (multiple chapters)' do
|
135
|
+
start_offset = 0xFFFFFFFF
|
136
|
+
end_offset = 0xFFFFFFFF
|
137
|
+
|
138
|
+
@chapters.each do |chapter|
|
139
|
+
chapter_frame = TagLib::ID3v2::ChapterFrame.new(
|
140
|
+
chapter[:id],
|
141
|
+
chapter[:start_time].to_i,
|
142
|
+
chapter[:end_time].to_i,
|
143
|
+
start_offset,
|
144
|
+
end_offset
|
145
|
+
)
|
146
|
+
|
147
|
+
@tag.add_frame(chapter_frame)
|
148
|
+
end
|
149
|
+
|
150
|
+
chap_frame_list = @tag.frame_list('CHAP')
|
151
|
+
assert_equal @default_chap.class, chap_frame_list.first.class
|
152
|
+
assert_equal 3, chap_frame_list.size
|
153
|
+
assert_equal 'CH1', chap_frame_list[0].element_id
|
154
|
+
assert_equal 'CH2', chap_frame_list[1].element_id
|
155
|
+
assert_equal 'CH3', chap_frame_list[2].element_id
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
95
159
|
context "TXXX frame" do
|
96
160
|
setup do
|
97
161
|
@txxx_frame = @tag.frame_list('TXXX').first
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: taglib-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robin Stocker
|
8
8
|
- Jacob Vosmaer
|
9
9
|
- Thomas Chevereau
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2021-01-20 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -66,28 +66,28 @@ dependencies:
|
|
66
66
|
requirements:
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: 0.9.
|
69
|
+
version: 0.9.26
|
70
70
|
type: :development
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: 0.9.
|
76
|
+
version: 0.9.26
|
77
77
|
- !ruby/object:Gem::Dependency
|
78
78
|
name: kramdown
|
79
79
|
requirement: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
81
|
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version:
|
83
|
+
version: 2.3.0
|
84
84
|
type: :development
|
85
85
|
prerelease: false
|
86
86
|
version_requirements: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
88
|
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
90
|
+
version: 2.3.0
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: test-unit
|
93
93
|
requirement: !ruby/object:Gem::Requirement
|
@@ -213,6 +213,7 @@ files:
|
|
213
213
|
- test/data/crash.mp3
|
214
214
|
- test/data/flac-create.cpp
|
215
215
|
- test/data/flac.flac
|
216
|
+
- test/data/flac_nopic.flac
|
216
217
|
- test/data/get_picture_data.cpp
|
217
218
|
- test/data/globe_east_540.jpg
|
218
219
|
- test/data/globe_east_90.jpg
|
@@ -234,6 +235,7 @@ files:
|
|
234
235
|
- test/fileref_write_test.rb
|
235
236
|
- test/flac_file_test.rb
|
236
237
|
- test/flac_file_write_test.rb
|
238
|
+
- test/flac_picture_memory_test.rb
|
237
239
|
- test/helper.rb
|
238
240
|
- test/id3v1_genres_test.rb
|
239
241
|
- test/id3v1_tag_test.rb
|
@@ -260,7 +262,7 @@ homepage: http://robinst.github.io/taglib-ruby/
|
|
260
262
|
licenses:
|
261
263
|
- MIT
|
262
264
|
metadata: {}
|
263
|
-
post_install_message:
|
265
|
+
post_install_message:
|
264
266
|
rdoc_options: []
|
265
267
|
require_paths:
|
266
268
|
- lib
|
@@ -276,8 +278,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
276
278
|
version: '0'
|
277
279
|
requirements:
|
278
280
|
- taglib (libtag1-dev in Debian/Ubuntu, taglib-devel in Fedora/RHEL)
|
279
|
-
rubygems_version: 3.
|
280
|
-
signing_key:
|
281
|
+
rubygems_version: 3.1.4
|
282
|
+
signing_key:
|
281
283
|
specification_version: 4
|
282
284
|
summary: Ruby interface for the taglib C++ library
|
283
285
|
test_files: []
|