taglib-ruby 1.1.2 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +1 -0
- data/CHANGELOG.md +22 -0
- data/README.md +16 -12
- data/docs/taglib/mpeg.rb +1 -9
- data/ext/extconf_common.rb +21 -12
- data/ext/taglib_aiff/taglib_aiff.i +5 -0
- data/ext/taglib_aiff/taglib_aiff_wrap.cxx +327 -111
- data/ext/taglib_base/includes.i +14 -14
- data/ext/taglib_base/taglib_base.i +37 -4
- data/ext/taglib_base/taglib_base_wrap.cxx +414 -422
- data/ext/taglib_flac/taglib_flac.i +8 -3
- data/ext/taglib_flac/taglib_flac_wrap.cxx +356 -406
- data/ext/taglib_flac_picture/taglib_flac_picture.i +4 -0
- data/ext/taglib_flac_picture/taglib_flac_picture_wrap.cxx +229 -122
- data/ext/taglib_id3v1/taglib_id3v1_wrap.cxx +196 -102
- data/ext/taglib_id3v2/taglib_id3v2.i +5 -0
- data/ext/taglib_id3v2/taglib_id3v2_wrap.cxx +727 -568
- data/ext/taglib_mp4/taglib_mp4.i +22 -18
- data/ext/taglib_mp4/taglib_mp4_wrap.cxx +2141 -1493
- data/ext/taglib_mpeg/taglib_mpeg.i +6 -0
- data/ext/taglib_mpeg/taglib_mpeg_wrap.cxx +546 -379
- data/ext/taglib_ogg/taglib_ogg.i +0 -2
- data/ext/taglib_ogg/taglib_ogg_wrap.cxx +162 -107
- data/ext/taglib_vorbis/taglib_vorbis.i +1 -0
- data/ext/taglib_vorbis/taglib_vorbis_wrap.cxx +141 -109
- data/ext/taglib_wav/taglib_wav.i +6 -2
- data/ext/taglib_wav/taglib_wav_wrap.cxx +290 -147
- data/lib/taglib/version.rb +3 -3
- data/taglib-ruby.gemspec +1 -0
- data/tasks/ext.rake +23 -39
- data/tasks/swig.rake +14 -4
- data/test/id3v2_write_test.rb +1 -1
- data/test/wav_examples_test.rb +1 -1
- data/test/wav_file_test.rb +1 -1
- data/test/wav_file_write_test.rb +6 -6
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 659d2ce981f60aaee4cdc2ada2ace70d33d55f2f1414478f03a8088facaedb98
|
4
|
+
data.tar.gz: 4baf4450e6903749e1f5a9829d2f83e4fa3809ec24974950d006992a50c35c78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3df1ff745ae3e67a269f69f20820372c25d91a5d51fe916ffc590014518dad82d8674a526df4763449543246bef6e23d4ba6766513d5214c96e68b3a14b89846
|
7
|
+
data.tar.gz: f114af2a78f0ea69335ceff09cc1152ca9050b8519ebc318b85a854734d063f531cdf6176c10e1c487533d7fef58819e0a35431940a4c75e836c2e76e1f3e1c0
|
data/.github/FUNDING.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
github: robinst
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,28 @@ All notable changes to this project will be documented in this file.
|
|
6
6
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
7
7
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
8
8
|
|
9
|
+
## 2.0.0
|
10
|
+
### Changed
|
11
|
+
- Regenerate SWIG wrapper code against TagLib 2.0.1. This breaks
|
12
|
+
compatibility with TagLib 1.x. You will get a compiler error if you
|
13
|
+
try to install taglib-ruby 2.x on a system that has TagLib 1.x.
|
14
|
+
Please use taglib-ruby 1.x if your system has TagLib 1.x, and
|
15
|
+
taglib-ruby 2.x if your system has TagLib 2.x.
|
16
|
+
- The optional `strip_others` argument to `TagLib::MPEG::File#save` no
|
17
|
+
longer takes a boolean value. It now uses the constants
|
18
|
+
`TagLib::File::StripOthers` and `TagLib::File::StripNone`.
|
19
|
+
|
20
|
+
### Removed
|
21
|
+
- `TagLib::MPEG::File#tag` has been removed because it no longer
|
22
|
+
exists in TagLib 2.x. Please use `TagLib::MPEG::File#id3v2_tag` or
|
23
|
+
`TagLib::MPEG::File#id3v1_tag`.
|
24
|
+
|
25
|
+
## 1.1.3 - 2022-12-29
|
26
|
+
### Changed
|
27
|
+
- Fix warning `warning: undefining the allocator of T_DATA class
|
28
|
+
swig_runtime_data` on Ruby 3.2
|
29
|
+
- Upgraded to SWIG 4.1.1
|
30
|
+
|
9
31
|
## 1.1.2 - 2022-04-13
|
10
32
|
### Fixed
|
11
33
|
- Fix UserTextIdentificationFrame's constructor so that overloaded
|
data/README.md
CHANGED
@@ -30,9 +30,13 @@ installed with header files (and a C++ compiler of course):
|
|
30
30
|
* Brew: `brew install taglib`
|
31
31
|
* MacPorts: `sudo port install taglib`
|
32
32
|
|
33
|
-
Then
|
33
|
+
Then install the latest taglib-ruby 1.x by running:
|
34
34
|
|
35
|
-
gem install taglib-ruby
|
35
|
+
gem install taglib-ruby --version '< 2'
|
36
|
+
|
37
|
+
If you are using TagLib 2.0.1 or higher, you need to install taglib-ruby 2.x instead:
|
38
|
+
|
39
|
+
gem install taglib-ruby --version '>= 2'
|
36
40
|
|
37
41
|
### MacOS
|
38
42
|
|
@@ -40,16 +44,20 @@ Depending on your brew setup, TagLib might be installed in different locations,
|
|
40
44
|
which makes it hard for taglib-ruby to find it. To get the library location, run:
|
41
45
|
|
42
46
|
$ brew info taglib
|
43
|
-
taglib: stable 1.
|
47
|
+
taglib: stable 1.13 (bottled), HEAD
|
44
48
|
Audio metadata library
|
45
49
|
https://taglib.org/
|
46
|
-
/
|
50
|
+
/opt/homebrew/Cellar/taglib/1.13 (122 files, 1.6MB) *
|
47
51
|
...
|
48
52
|
|
49
53
|
Note the line with the path at the end. Provide that using the `TAGLIB_DIR`
|
50
54
|
environment variable when installing, like this:
|
51
55
|
|
52
|
-
TAGLIB_DIR=/
|
56
|
+
TAGLIB_DIR=/opt/homebrew/Cellar/taglib/1.13 gem install taglib-ruby
|
57
|
+
|
58
|
+
If you're using bundler, like this:
|
59
|
+
|
60
|
+
TAGLIB_DIR=/opt/homebrew/Cellar/taglib/1.13 bundle install
|
53
61
|
|
54
62
|
Another problem might be that `clang++` doesn't work with a specific version
|
55
63
|
of TagLib. In that case, try compiling taglib-ruby's C++ extensions with a
|
@@ -116,18 +124,14 @@ Build a specific version of Taglib:
|
|
116
124
|
The above command will automatically download Taglib 1.11.1, build it and
|
117
125
|
install it in `tmp/x86_64-linux/taglib-1.11.1`.
|
118
126
|
|
119
|
-
The `swig` and `
|
127
|
+
The `swig`, `compile` and `test` tasks can then be executed against that specific
|
120
128
|
version of Taglib by setting the `TAGLIB_DIR` environment variable to
|
121
129
|
`$PWD/tmp/x86_64-linux/taglib-1.11.1` (it is assumed that taglib headers are
|
122
130
|
located at `$TAGLIB_DIR/include` and taglib libraries at `$TAGLIB_DIR/lib`).
|
123
131
|
|
124
|
-
The `test` task can then be run for that version of Taglib by adding
|
125
|
-
`$PWD/tmp/x86_64-linux/taglib-1.11.1/lib` to the `LD_LIBRARY_PATH` environment
|
126
|
-
variable.
|
127
|
-
|
128
132
|
To do everything in one command:
|
129
133
|
|
130
|
-
PLATFORM=x86_64-linux TAGLIB_VERSION=1.11.1 TAGLIB_DIR=$PWD/tmp/x86_64-linux/taglib-1.11.1
|
134
|
+
PLATFORM=x86_64-linux TAGLIB_VERSION=1.11.1 TAGLIB_DIR=$PWD/tmp/x86_64-linux/taglib-1.11.1 rake vendor compile test
|
131
135
|
|
132
136
|
### Workflow
|
133
137
|
|
@@ -151,7 +155,7 @@ To do everything in one command:
|
|
151
155
|
|
152
156
|
## License
|
153
157
|
|
154
|
-
Copyright (c) 2010-
|
158
|
+
Copyright (c) 2010-2022 Robin Stocker and others, see Git history.
|
155
159
|
|
156
160
|
`taglib-ruby` is distributed under the MIT License, see
|
157
161
|
[LICENSE.txt](LICENSE.txt) for details.
|
data/docs/taglib/mpeg.rb
CHANGED
@@ -32,14 +32,6 @@ module TagLib::MPEG
|
|
32
32
|
def initialize(filename, read_properties=true)
|
33
33
|
end
|
34
34
|
|
35
|
-
# Returns a tag that contains attributes from both the ID3v2 and
|
36
|
-
# ID3v1 tag, with ID3v2 attributes having precendence.
|
37
|
-
#
|
38
|
-
# @return [TagLib::Tag]
|
39
|
-
# @return [nil] if not present
|
40
|
-
def tag
|
41
|
-
end
|
42
|
-
|
43
35
|
# Returns the ID3v1 tag.
|
44
36
|
#
|
45
37
|
# @param create if a new tag should be created when none exists
|
@@ -88,7 +80,7 @@ module TagLib::MPEG
|
|
88
80
|
# ArgumentError.
|
89
81
|
#
|
90
82
|
# @return [Boolean] whether saving was successful
|
91
|
-
def save(tags=TagLib::MPEG::File::AllTags, strip_others=
|
83
|
+
def save(tags=TagLib::MPEG::File::AllTags, strip_others=TagLib::File::StripOthers)
|
92
84
|
end
|
93
85
|
|
94
86
|
# Strip the specified tags from the file. Note that this directly
|
data/ext/extconf_common.rb
CHANGED
@@ -1,15 +1,19 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
#
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
3
|
+
taglib_dir = ENV['TAGLIB_DIR']
|
4
|
+
|
5
|
+
unless taglib_dir
|
6
|
+
# Default opt dirs to help mkmf find taglib
|
7
|
+
opt_dirs = ['/usr/local', '/opt/local', '/sw']
|
8
|
+
|
9
|
+
# Heroku vendor dir
|
10
|
+
vendor = ENV.fetch('GEM_HOME', '')[/^[^ ]*\/vendor\//]
|
11
|
+
opt_dirs << "#{vendor}taglib" if vendor
|
12
|
+
opt_dirs_joined = opt_dirs.join(':')
|
13
|
+
|
14
|
+
configure_args = "--with-opt-dir=#{opt_dirs_joined} "
|
15
|
+
ENV['CONFIGURE_ARGS'] = configure_args + ENV.fetch('CONFIGURE_ARGS', '')
|
16
|
+
end
|
13
17
|
|
14
18
|
require 'mkmf'
|
15
19
|
|
@@ -18,14 +22,14 @@ def error(msg)
|
|
18
22
|
abort
|
19
23
|
end
|
20
24
|
|
21
|
-
if
|
25
|
+
if taglib_dir && !File.directory?(taglib_dir)
|
22
26
|
error 'When defined, the TAGLIB_DIR environment variable must point to a valid directory.'
|
23
27
|
end
|
24
28
|
|
25
29
|
# If specified, use the TAGLIB_DIR environment variable as the prefix
|
26
30
|
# for finding taglib headers and libs. See MakeMakefile#dir_config
|
27
31
|
# for more details.
|
28
|
-
dir_config('tag',
|
32
|
+
dir_config('tag', taglib_dir)
|
29
33
|
|
30
34
|
# When compiling statically, -lstdc++ would make the resulting .so to
|
31
35
|
# have a dependency on an external libstdc++ instead of the static one.
|
@@ -46,5 +50,10 @@ end
|
|
46
50
|
|
47
51
|
$CFLAGS << ' -DSWIG_TYPE_TABLE=taglib'
|
48
52
|
|
53
|
+
# TagLib 2.0 requires C++17. Some compilers default to an older standard
|
54
|
+
# so we add this '-std=' option to make sure the compiler accepts C++17
|
55
|
+
# code.
|
56
|
+
$CXXFLAGS << ' -std=c++17'
|
57
|
+
|
49
58
|
# Allow users to override the Ruby runtime's preferred CXX
|
50
59
|
RbConfig::MAKEFILE_CONFIG['CXX'] = ENV['TAGLIB_RUBY_CXX'] if ENV['TAGLIB_RUBY_CXX']
|
@@ -14,15 +14,20 @@
|
|
14
14
|
%ignore TagLib::RIFF::AIFF::Properties::length;
|
15
15
|
%ignore TagLib::RIFF::AIFF::Properties::sampleWidth;
|
16
16
|
|
17
|
+
%ignore TagLib::RIFF::File;
|
18
|
+
%include <taglib/rifffile.h>
|
19
|
+
|
17
20
|
%include <taglib/aiffproperties.h>
|
18
21
|
|
19
22
|
%freefunc TagLib::RIFF::AIFF::File "free_taglib_riff_aiff_file";
|
20
23
|
|
21
24
|
// Ignore IOStream and all the constructors using it.
|
22
25
|
%ignore IOStream;
|
26
|
+
%ignore TagLib::RIFF::AIFF::File::File(IOStream *, bool, Properties::ReadStyle, ID3v2::FrameFactory *);
|
23
27
|
%ignore TagLib::RIFF::AIFF::File::File(IOStream *, bool, Properties::ReadStyle);
|
24
28
|
%ignore TagLib::RIFF::AIFF::File::File(IOStream *, bool);
|
25
29
|
%ignore TagLib::RIFF::AIFF::File::File(IOStream *);
|
30
|
+
%ignore TagLib::RIFF::AIFF::File::isSupported(IOStream *);
|
26
31
|
|
27
32
|
// Ignore the unified property interface.
|
28
33
|
%ignore TagLib::RIFF::AIFF::File::properties;
|