taglib-ruby 0.7.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGES.md +7 -0
- data/README.md +25 -10
- data/Rakefile +11 -1
- data/docs/taglib/aiff.rb +35 -3
- data/docs/taglib/base.rb +8 -1
- data/docs/taglib/flac.rb +60 -4
- data/docs/taglib/id3v1.rb +29 -0
- data/docs/taglib/id3v2.rb +1 -1
- data/docs/taglib/mp4.rb +124 -13
- data/docs/taglib/mpeg.rb +30 -1
- data/docs/taglib/ogg.rb +47 -5
- data/docs/taglib/vorbis.rb +1 -1
- data/docs/taglib/wav.rb +56 -3
- data/ext/extconf_common.rb +9 -2
- data/ext/taglib_aiff/taglib_aiff.i +16 -0
- data/ext/taglib_aiff/taglib_aiff_wrap.cxx +228 -58
- data/ext/taglib_base/includes.i +4 -4
- data/ext/taglib_base/taglib_base.i +24 -2
- data/ext/taglib_base/taglib_base_wrap.cxx +76 -51
- data/ext/taglib_flac/taglib_flac.i +14 -18
- data/ext/taglib_flac/taglib_flac_wrap.cxx +341 -799
- data/ext/taglib_flac_picture/extconf.rb +4 -0
- data/ext/taglib_flac_picture/includes.i +15 -0
- data/ext/taglib_flac_picture/taglib_flac_picture.i +15 -0
- data/ext/taglib_flac_picture/taglib_flac_picture_wrap.cxx +3087 -0
- data/ext/taglib_id3v1/taglib_id3v1.i +19 -0
- data/ext/taglib_id3v1/taglib_id3v1_wrap.cxx +241 -58
- data/ext/taglib_id3v2/taglib_id3v2.i +52 -1
- data/ext/taglib_id3v2/taglib_id3v2_wrap.cxx +152 -155
- data/ext/taglib_mp4/taglib_mp4.i +100 -19
- data/ext/taglib_mp4/taglib_mp4_wrap.cxx +939 -148
- data/ext/taglib_mpeg/taglib_mpeg.i +11 -16
- data/ext/taglib_mpeg/taglib_mpeg_wrap.cxx +522 -208
- data/ext/taglib_ogg/taglib_ogg.i +11 -0
- data/ext/taglib_ogg/taglib_ogg_wrap.cxx +328 -57
- data/ext/taglib_vorbis/taglib_vorbis.i +8 -0
- data/ext/taglib_vorbis/taglib_vorbis_wrap.cxx +53 -22
- data/ext/taglib_wav/taglib_wav.i +24 -0
- data/ext/taglib_wav/taglib_wav_wrap.cxx +543 -198
- data/lib/taglib/mp4.rb +2 -1
- data/lib/taglib/version.rb +3 -3
- data/lib/taglib/wav.rb +4 -0
- data/taglib-ruby.gemspec +15 -9
- data/tasks/ext.rake +36 -15
- data/tasks/swig.rake +26 -2
- data/test/aiff_examples_test.rb +1 -1
- data/test/aiff_file_test.rb +12 -3
- data/test/data/vorbis-create.cpp +20 -1
- data/test/data/vorbis.oga +0 -0
- data/test/fileref_properties_test.rb +1 -1
- data/test/flac_file_test.rb +45 -30
- data/test/id3v1_genres_test.rb +23 -0
- data/test/id3v1_tag_test.rb +1 -0
- data/test/id3v2_tag_test.rb +6 -6
- data/test/id3v2_write_test.rb +10 -13
- data/test/mp4_file_test.rb +33 -4
- data/test/mp4_file_write_test.rb +5 -5
- data/test/mp4_items_test.rb +83 -29
- data/test/mpeg_file_test.rb +120 -7
- data/test/vorbis_file_test.rb +2 -2
- data/test/vorbis_tag_test.rb +61 -7
- data/test/wav_examples_test.rb +1 -1
- data/test/wav_file_test.rb +53 -41
- data/test/wav_file_write_test.rb +25 -0
- metadata +19 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2e071c43695cf3898de6224fefa308e83dcb4e8b1e8f09c7e348a53a5a4a34bc
|
4
|
+
data.tar.gz: 9247a84147c330e268897940a08cebbe124e92e81741ab64a2eaea07962a9f36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0986da0ee118c9062c6f167d6e0b2d20c03dc029f34ec50ad7ecdc85668fc9814a9a71656059a72abf5f2dab65895f02f425ce4dd3cd5b4729dd72b09f4e2006'
|
7
|
+
data.tar.gz: 6343921b422e32260edf5f3c5e79b487369a4ee7da5a3a53fcfc9812d1534d9d0351a34e2b4e8233a5483718671ecf4b05d1d7c1df8f66602adc0a9f044ef3aa
|
data/CHANGES.md
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
Changes in Releases of taglib-ruby
|
2
2
|
==================================
|
3
3
|
|
4
|
+
## 1.0.0 (2020-01-07)
|
5
|
+
|
6
|
+
* Support for TagLib >= 1.11.1 (drop support for earlier versions) (#83)
|
7
|
+
* This includes a lot of new APIs and some changed APIs, see
|
8
|
+
`@since 1.0.0` in the docs
|
9
|
+
* Stop using tainted strings to fix warnings with Ruby 2.7 (#86)
|
10
|
+
|
4
11
|
## 0.7.1 (2015-12-28)
|
5
12
|
|
6
13
|
* Fix compile error during gem installation on Ruby 2.3 (MRI) (#67)
|
data/README.md
CHANGED
@@ -21,16 +21,14 @@ Contributions for more coverage of the library are very welcome.
|
|
21
21
|
[![Gem version][gem-img]][gem-link]
|
22
22
|
[![Build status][travis-img]][travis-link]
|
23
23
|
|
24
|
-
[![flattr this project][flattr-img]][flattr-link]
|
25
|
-
|
26
24
|
Installation
|
27
25
|
------------
|
28
26
|
|
29
|
-
Before you install the gem, make sure to have [taglib][taglib] installed
|
27
|
+
Before you install the gem, make sure to have [taglib 1.11.1 or higher][taglib] installed
|
30
28
|
with header files (and a C++ compiler of course):
|
31
29
|
|
32
30
|
* Debian/Ubuntu: `sudo apt-get install libtag1-dev`
|
33
|
-
* Fedora/RHEL: `sudo
|
31
|
+
* Fedora/RHEL: `sudo dnf install taglib-devel`
|
34
32
|
* Brew: `brew install taglib`
|
35
33
|
* MacPorts: `sudo port install taglib`
|
36
34
|
|
@@ -42,7 +40,7 @@ Then do:
|
|
42
40
|
|
43
41
|
Not all versions of TagLib get along with `clang++`, the default C++ compiler
|
44
42
|
on OS X. To compile taglib-ruby's C++ extensions with a different compiler
|
45
|
-
during installation, set the `TAGLIB_RUBY_CXX`
|
43
|
+
during installation, set the `TAGLIB_RUBY_CXX` environment variable.
|
46
44
|
|
47
45
|
TAGLIB_RUBY_CXX=g++-4.2 gem install taglib-ruby
|
48
46
|
|
@@ -62,6 +60,12 @@ See {file:CHANGES.md}.
|
|
62
60
|
Contributing
|
63
61
|
------------
|
64
62
|
|
63
|
+
### Dependencies
|
64
|
+
|
65
|
+
Fedora:
|
66
|
+
|
67
|
+
sudo dnf install taglib-devel ruby-devel gcc-c++ redhat-rpm-config swig
|
68
|
+
|
65
69
|
### Building
|
66
70
|
|
67
71
|
Install dependencies (uses bundler, install it via `gem install bundler`
|
@@ -69,8 +73,7 @@ if you don't have it):
|
|
69
73
|
|
70
74
|
bundle install
|
71
75
|
|
72
|
-
Regenerate SWIG wrappers if you made changes in `.i` files (use
|
73
|
-
version 2.0.5 of SWIG):
|
76
|
+
Regenerate SWIG wrappers if you made changes in `.i` files (use version 3.0.7 of SWIG):
|
74
77
|
|
75
78
|
rake swig
|
76
79
|
|
@@ -95,6 +98,20 @@ Build and install gem into system gems:
|
|
95
98
|
|
96
99
|
rake install
|
97
100
|
|
101
|
+
Build a specific version of Taglib:
|
102
|
+
|
103
|
+
PLATFORM=x86_64-linux TAGLIB_VERSION=1.11.1 rake vendor
|
104
|
+
|
105
|
+
The above command will automatically download Taglib 1.11.1, build it and install it in `tmp/x86_64-linux/taglib-1.11.1`.
|
106
|
+
|
107
|
+
The `swig` and `compile` tasks can then be executed against that specific version of Taglib by setting the `TAGLIB_DIR` environment variable to `$PWD/tmp/x86_64-linux/taglib-1.11.1` (it is assumed that taglib headers are located at `$TAGLIB_DIR/include` and taglib libraries at `$TAGLIB_DIR/lib`).
|
108
|
+
|
109
|
+
The `test` task can then be run for that version of Taglib by adding `$PWD/tmp/x86_64-linux/taglib-1.11.1/lib` to the `LD_LIBRARY_PATH` environment variable.
|
110
|
+
|
111
|
+
To do everything in one command:
|
112
|
+
|
113
|
+
PLATFORM=x86_64-linux TAGLIB_VERSION=1.11.1 TAGLIB_DIR=$PWD/tmp/x86_64-linux/taglib-1.11.1 LD_LIBRARY_PATH=$PWD/tmp/x86_64-linux/taglib-1.11.1/lib rake vendor compile test
|
114
|
+
|
98
115
|
### Workflow
|
99
116
|
|
100
117
|
* Check out the latest master to make sure the feature hasn't been
|
@@ -114,7 +131,7 @@ Build and install gem into system gems:
|
|
114
131
|
License
|
115
132
|
-------
|
116
133
|
|
117
|
-
Copyright (c) 2010-
|
134
|
+
Copyright (c) 2010-2020 Robin Stocker and others, see Git history.
|
118
135
|
|
119
136
|
taglib-ruby is distributed under the MIT License,
|
120
137
|
see LICENSE.txt for details.
|
@@ -128,5 +145,3 @@ version 2.1 (LGPL) and Mozilla Public License (MPL).
|
|
128
145
|
[gem-link]: https://rubygems.org/gems/taglib-ruby
|
129
146
|
[travis-img]: https://api.travis-ci.org/robinst/taglib-ruby.png
|
130
147
|
[travis-link]: https://travis-ci.org/robinst/taglib-ruby
|
131
|
-
[flattr-img]: https://api.flattr.com/button/flattr-badge-large.png
|
132
|
-
[flattr-link]: https://flattr.com/submit/auto?user_id=robinst&url=https://github.com/robinst/taglib-ruby&title=taglib-ruby&tags=github&category=software
|
data/Rakefile
CHANGED
@@ -25,4 +25,14 @@ end
|
|
25
25
|
|
26
26
|
$gemspec = Bundler::GemHelper.gemspec
|
27
27
|
|
28
|
-
|
28
|
+
import 'tasks/docs_coverage.rake'
|
29
|
+
import 'tasks/ext.rake'
|
30
|
+
import 'tasks/gemspec_check.rake'
|
31
|
+
|
32
|
+
# When importing swig.rake, the *_wrap.cxx files depend on being generated
|
33
|
+
# by Swig. Since the ExtensionTasks depend on the *_wrap.cxx files,
|
34
|
+
# compiling the extensions will trigger Swig, which is not desired as
|
35
|
+
# those files have already been generated and there's no reason to make
|
36
|
+
# Swig a variable of the CI. To prevent those dependencies, do not import
|
37
|
+
# swig.rake when running in Travis.
|
38
|
+
import 'tasks/swig.rake' unless ENV['TRAVIS'] == 'true'
|
data/docs/taglib/aiff.rb
CHANGED
@@ -24,7 +24,7 @@ module TagLib::RIFF::AIFF
|
|
24
24
|
# @see ID3v2::Tag ID3v2 examples.
|
25
25
|
#
|
26
26
|
class File < TagLib::File
|
27
|
-
# {include
|
27
|
+
# {include:::TagLib::FileRef.open}
|
28
28
|
#
|
29
29
|
# @param (see #initialize)
|
30
30
|
# @yield [file] the {File} object, as obtained by {#initialize}
|
@@ -53,11 +53,43 @@ module TagLib::RIFF::AIFF
|
|
53
53
|
def audio_properties
|
54
54
|
end
|
55
55
|
|
56
|
+
# @return [Boolean] Whether or not the file on disk actually has an ID3v2 tag.
|
57
|
+
#
|
58
|
+
# @since 1.0.0
|
59
|
+
def id3v2_tag?
|
60
|
+
end
|
61
|
+
|
56
62
|
end
|
57
63
|
|
58
64
|
class Properties < TagLib::AudioProperties
|
59
|
-
# @return [Integer]
|
60
|
-
|
65
|
+
# @return [Integer] Number of bits per audio sample.
|
66
|
+
#
|
67
|
+
# @since 1.0.0
|
68
|
+
attr_reader :bits_per_sample
|
69
|
+
|
70
|
+
# @return [Integer] Number of sample frames.
|
71
|
+
#
|
72
|
+
# @since 1.0.0
|
73
|
+
attr_reader :sample_frames
|
74
|
+
|
75
|
+
# @return [String] The compression type of the AIFF-C file.
|
76
|
+
# For example, "NONE" for not compressed, "ACE2" for ACE 2-to-1.
|
77
|
+
# If the file is in AIFF format, always returns an empty string.
|
78
|
+
#
|
79
|
+
# @since 1.0.0
|
80
|
+
attr_reader :compression_type
|
81
|
+
|
82
|
+
# @return [String] Returns the concrete compression name of the AIFF-C file.
|
83
|
+
# If the file is in AIFF format, always returns an empty string.
|
84
|
+
#
|
85
|
+
# @since 1.0.0
|
86
|
+
attr_reader :compression_name
|
87
|
+
|
88
|
+
# @return [Boolean] True if the file is in AIFF-C format, false if AIFF format.
|
89
|
+
#
|
90
|
+
# @since 1.0.0
|
91
|
+
def aiff_c?
|
92
|
+
end
|
61
93
|
end
|
62
94
|
|
63
95
|
end
|
data/docs/taglib/base.rb
CHANGED
@@ -247,7 +247,14 @@ module TagLib
|
|
247
247
|
Accurate = 2
|
248
248
|
|
249
249
|
# @return [Integer] length of the file in seconds
|
250
|
-
|
250
|
+
#
|
251
|
+
# @since 1.0.0
|
252
|
+
attr_reader :length_in_seconds
|
253
|
+
|
254
|
+
# @return [Integer] length of the file in milliseconds
|
255
|
+
#
|
256
|
+
# @since 1.0.0
|
257
|
+
attr_reader :length_in_milliseconds
|
251
258
|
|
252
259
|
# @return [Integer] bit rate in kb/s (kilobit per second)
|
253
260
|
attr_reader :bitrate
|
data/docs/taglib/flac.rb
CHANGED
@@ -30,7 +30,14 @@ module TagLib::FLAC
|
|
30
30
|
# file.save
|
31
31
|
# end
|
32
32
|
class File < TagLib::File
|
33
|
-
|
33
|
+
|
34
|
+
NoTags = 0x0000
|
35
|
+
XiphComment = 0x0001
|
36
|
+
ID3v1 = 0x0002
|
37
|
+
ID3v2 = 0x0004
|
38
|
+
AllTags = 0xffff
|
39
|
+
|
40
|
+
# {include:::TagLib::FileRef.open}
|
34
41
|
#
|
35
42
|
# @param (see #initialize)
|
36
43
|
# @yield [file] the {File} object, as obtained by {#initialize}
|
@@ -82,6 +89,14 @@ module TagLib::FLAC
|
|
82
89
|
def picture_list
|
83
90
|
end
|
84
91
|
|
92
|
+
# Remove the specified picture.
|
93
|
+
#
|
94
|
+
# @param [TagLib::FLAC::Picture] picture
|
95
|
+
#
|
96
|
+
# @since 1.0.0
|
97
|
+
def remove_picture(picture)
|
98
|
+
end
|
99
|
+
|
85
100
|
# Remove all pictures.
|
86
101
|
#
|
87
102
|
# @return [void]
|
@@ -94,12 +109,46 @@ module TagLib::FLAC
|
|
94
109
|
# @return [void]
|
95
110
|
def add_picture(picture)
|
96
111
|
end
|
112
|
+
|
113
|
+
# Remove the tags matching the specified OR-ed types.
|
114
|
+
#
|
115
|
+
# @param [int] tags The types of tags to remove.
|
116
|
+
# @return [void]
|
117
|
+
#
|
118
|
+
# @since 1.0.0
|
119
|
+
def strip(tags=TagLib::FLAC::File::AllTags)
|
120
|
+
end
|
121
|
+
|
122
|
+
# @return [Boolean] Whether or not the file on disk actually has a XiphComment.
|
123
|
+
#
|
124
|
+
# @since 1.0.0
|
125
|
+
def xiph_comment?
|
126
|
+
end
|
127
|
+
|
128
|
+
# @return [Boolean] Whether or not the file on disk actually has an ID3v1 tag.
|
129
|
+
#
|
130
|
+
# @since 1.0.0
|
131
|
+
def id3v1_tag?
|
132
|
+
end
|
133
|
+
|
134
|
+
# @return [Boolean] Whether or not the file on disk actually has an ID3v2 tag.
|
135
|
+
#
|
136
|
+
# @since 1.0.0
|
137
|
+
def id3v2_tag?
|
138
|
+
end
|
97
139
|
end
|
98
140
|
|
99
141
|
# FLAC audio properties.
|
100
142
|
class Properties < TagLib::AudioProperties
|
101
|
-
# @return [Integer]
|
102
|
-
|
143
|
+
# @return [Integer] Number of bits per audio sample.
|
144
|
+
#
|
145
|
+
# @since 1.0.0
|
146
|
+
attr_reader :bits_per_sample
|
147
|
+
|
148
|
+
# @return [Integer] Number of sample frames.
|
149
|
+
#
|
150
|
+
# @since 1.0.0
|
151
|
+
attr_reader :sample_frames
|
103
152
|
|
104
153
|
# @return [binary String] MD5 signature of uncompressed audio stream
|
105
154
|
# (binary data)
|
@@ -172,5 +221,12 @@ module TagLib::FLAC
|
|
172
221
|
#
|
173
222
|
# @return [binary String]
|
174
223
|
attr_accessor :data
|
224
|
+
|
225
|
+
# Parse the picture data in the FLAC picture block format.
|
226
|
+
# @return [Boolean] True if the data has been parsed successfully, false otherwise.
|
227
|
+
#
|
228
|
+
# @since 1.0.0
|
229
|
+
def parse(rawdata)
|
230
|
+
end
|
175
231
|
end
|
176
|
-
end
|
232
|
+
end
|
data/docs/taglib/id3v1.rb
CHANGED
@@ -1,5 +1,34 @@
|
|
1
1
|
module TagLib::ID3v1
|
2
2
|
# An ID3v1 tag.
|
3
3
|
class Tag < TagLib::Tag
|
4
|
+
# @return [Integer] the genre as a number
|
5
|
+
# @return [255] if not present
|
6
|
+
#
|
7
|
+
# @since 1.0.0
|
8
|
+
attr_accessor :genre_number
|
9
|
+
end
|
10
|
+
|
11
|
+
# @return [Array<String>] the ID3v1 genre list.
|
12
|
+
#
|
13
|
+
# @since 1.0.0
|
14
|
+
def genre_list
|
15
|
+
end
|
16
|
+
|
17
|
+
# @return [Map<String, int>] the map associating a genre to its index.
|
18
|
+
#
|
19
|
+
# @since 1.0.0
|
20
|
+
def genre_map
|
21
|
+
end
|
22
|
+
|
23
|
+
# @return [String] the name of genre at `index` in the ID3v1 genre list.
|
24
|
+
#
|
25
|
+
# @since 1.0.0
|
26
|
+
def genre(index)
|
27
|
+
end
|
28
|
+
|
29
|
+
# @return [String] the genre index for the (case sensitive) genre `name`.
|
30
|
+
#
|
31
|
+
# @since 1.0.0
|
32
|
+
def genre_index(name)
|
4
33
|
end
|
5
34
|
end
|
data/docs/taglib/id3v2.rb
CHANGED
data/docs/taglib/mp4.rb
CHANGED
@@ -54,7 +54,7 @@ module TagLib::MP4
|
|
54
54
|
# # #<TagLib::MP4::Item:0x007f9bab61d818 @__swigtype__="_p_TagLib__MP4__Item">]]
|
55
55
|
class File < TagLib::File
|
56
56
|
|
57
|
-
# {include
|
57
|
+
# {include:::TagLib::FileRef.open}
|
58
58
|
#
|
59
59
|
# @param (see #initialize)
|
60
60
|
# @yield [file] the {File} object, as obtained by {#initialize}
|
@@ -82,12 +82,48 @@ module TagLib::MP4
|
|
82
82
|
# @return [TagLib::MP4::Properties]
|
83
83
|
def audio_properties
|
84
84
|
end
|
85
|
+
|
86
|
+
# @return [Boolean] Returns whether or not the file actually has an MP4 tag, or the
|
87
|
+
# file has a Metadata Item List (ilst) atom.
|
88
|
+
#
|
89
|
+
# @since 1.0.0
|
90
|
+
def mp4_tag?
|
91
|
+
end
|
85
92
|
end
|
86
93
|
|
87
94
|
class Tag < TagLib::Tag
|
88
|
-
#
|
89
|
-
#
|
90
|
-
|
95
|
+
# @return [TagLib::MP4::ItemMap] The map containing all the items in the tag.
|
96
|
+
#
|
97
|
+
# @since 1.0.0
|
98
|
+
def item_map
|
99
|
+
end
|
100
|
+
|
101
|
+
# @return [TagLib::MP4::Item] The Item associated to `key` (will be invalid in `key` does not exists).
|
102
|
+
#
|
103
|
+
# @since 1.0.0
|
104
|
+
def [](key)
|
105
|
+
end
|
106
|
+
|
107
|
+
# Associate the `value` Item to `key`, overwriting any previous value.
|
108
|
+
# @param key [String]
|
109
|
+
# @param value [TagLib::MP4::Item]
|
110
|
+
# @return [nil]
|
111
|
+
#
|
112
|
+
# @since 1.0.0
|
113
|
+
def []=(key, value)
|
114
|
+
end
|
115
|
+
|
116
|
+
# Remove the [TagLib::MP4::Item] associated to `key`.
|
117
|
+
# @return [nil]
|
118
|
+
#
|
119
|
+
# @since 1.0.0
|
120
|
+
def remove_item(key)
|
121
|
+
end
|
122
|
+
|
123
|
+
# @return True if the tag has an entry for `key`, false otherwise.
|
124
|
+
#
|
125
|
+
# @since 1.0.0
|
126
|
+
def contains(key)
|
91
127
|
end
|
92
128
|
end
|
93
129
|
|
@@ -109,11 +145,32 @@ module TagLib::MP4
|
|
109
145
|
def self.from_bool(value)
|
110
146
|
end
|
111
147
|
|
148
|
+
# @param [Fixnum] value
|
149
|
+
# @return [TagLib::MP4::Item]
|
150
|
+
#
|
151
|
+
# @since 1.0.0
|
152
|
+
def self.from_byte(value)
|
153
|
+
end
|
154
|
+
|
155
|
+
# @param [Boolean] value
|
156
|
+
# @return [TagLib::MP4::Item]
|
157
|
+
#
|
158
|
+
# @since 1.0.0
|
159
|
+
def self.from_uint(value)
|
160
|
+
end
|
161
|
+
|
112
162
|
# @param [Fixnum] number
|
113
163
|
# @return [TagLib::MP4::Item]
|
114
164
|
def self.from_int(number)
|
115
165
|
end
|
116
166
|
|
167
|
+
# @param [Fixnum] number
|
168
|
+
# @return [TagLib::MP4::Item]
|
169
|
+
#
|
170
|
+
# @since 1.0.0
|
171
|
+
def self.from_long_long(number)
|
172
|
+
end
|
173
|
+
|
117
174
|
# @example
|
118
175
|
# TagLib::MP4::Item.from_int_pair([4, 11])
|
119
176
|
# @param [Array<Fixnum, Fixnum>] integer_pair
|
@@ -126,18 +183,43 @@ module TagLib::MP4
|
|
126
183
|
def self.from_string_list(string_array)
|
127
184
|
end
|
128
185
|
|
186
|
+
# @param [TagLib::ByteVectorList] list
|
187
|
+
# @return [TagLib::MP4::Item]
|
188
|
+
#
|
189
|
+
# @since 1.0.0
|
190
|
+
def self.from_byte_vector_list(list)
|
191
|
+
end
|
192
|
+
|
129
193
|
# @return [Boolean]
|
130
194
|
def to_bool
|
131
195
|
end
|
132
196
|
|
133
|
-
# @return [
|
134
|
-
|
197
|
+
# @return [Fixnum]
|
198
|
+
#
|
199
|
+
# @since 1.0.0
|
200
|
+
def to_byte
|
201
|
+
end
|
202
|
+
|
203
|
+
# @return [Fixnum]
|
204
|
+
#
|
205
|
+
# @since 1.0.0
|
206
|
+
def to_uint
|
135
207
|
end
|
136
208
|
|
137
209
|
# @return [Fixnum]
|
138
210
|
def to_int
|
139
211
|
end
|
140
212
|
|
213
|
+
# @return [Fixnum]
|
214
|
+
#
|
215
|
+
# @since 1.0.0
|
216
|
+
def to_long_long
|
217
|
+
end
|
218
|
+
|
219
|
+
# @return [Array<TagLib::MP4::CoverArt>]
|
220
|
+
def to_cover_art_list
|
221
|
+
end
|
222
|
+
|
141
223
|
# @return [Array<Fixnum, Fixnum>]
|
142
224
|
def to_int_pair
|
143
225
|
end
|
@@ -146,19 +228,25 @@ module TagLib::MP4
|
|
146
228
|
def to_string_list
|
147
229
|
end
|
148
230
|
|
231
|
+
# @return [TagLib::ByteVectorList]
|
232
|
+
#
|
233
|
+
# @since 1.0.0
|
234
|
+
def to_byte_vector_list
|
235
|
+
end
|
236
|
+
|
149
237
|
# @return [Boolean]
|
150
238
|
def valid?
|
151
239
|
end
|
152
240
|
end
|
153
241
|
|
154
|
-
# The underlying C++-structure of `
|
155
|
-
# Consequently, `
|
156
|
-
# places: the C++ memory management strategies of
|
242
|
+
# The underlying C++-structure of `ItemMap` inherits from `std::map`.
|
243
|
+
# Consequently, `ItemMap` behaves differently from a Ruby hash in a few
|
244
|
+
# places: the C++ memory management strategies of ItemMap can lead to
|
157
245
|
# a situation where a Ruby object refers to a location in memory that was
|
158
246
|
# freed by C++. To prevent Ruby from crashing on us with a segmentation
|
159
247
|
# fault, we raise an `ObjectPreviouslyDeleted` exception when we try to access
|
160
248
|
# data that is no longer available.
|
161
|
-
class
|
249
|
+
class ItemMap
|
162
250
|
# Return the Item under `key`, or `nil` if no Item is present.
|
163
251
|
# @param [String] key
|
164
252
|
# @return [TagLib::MP4::Item]
|
@@ -235,10 +323,30 @@ module TagLib::MP4
|
|
235
323
|
# @return [Array<Array<String, TagLib::MP4::Item>>]
|
236
324
|
def to_a
|
237
325
|
end
|
326
|
+
|
327
|
+
# Convert self into an hash.
|
328
|
+
# @return [Hash<String, TagLib::MP4::Item>]
|
329
|
+
#
|
330
|
+
# @since 1.0.0
|
331
|
+
def to_h
|
332
|
+
end
|
238
333
|
end
|
239
334
|
#
|
240
335
|
class Properties < TagLib::AudioProperties
|
241
|
-
|
336
|
+
Unknown = 0
|
337
|
+
AAC = 1
|
338
|
+
ALAC = 2
|
339
|
+
|
340
|
+
# @return [Integer] The number of bits per audio sample.
|
341
|
+
attr_reader :bits_per_sample
|
342
|
+
|
343
|
+
# @return [Boolean] Whether or not the file is encrypted.
|
344
|
+
attr_reader :encrypted?
|
345
|
+
|
346
|
+
# @return [Integer] The codec used in the file.
|
347
|
+
#
|
348
|
+
# @since 1.0.0
|
349
|
+
attr_reader :codec
|
242
350
|
end
|
243
351
|
|
244
352
|
# The `CoverArt` class is used to embed cover art images in MP4 tags.
|
@@ -247,8 +355,11 @@ module TagLib::MP4
|
|
247
355
|
# image_data = File.open('cover_art.jpeg', 'rb') { |f| f.read }
|
248
356
|
# cover_art = TagLib::MP4::CoverArt.new(TagLib::MP4::CoverArt::JPEG, image_data)
|
249
357
|
class CoverArt
|
250
|
-
|
251
|
-
|
358
|
+
Unknown = 0x00
|
359
|
+
JPEG = 0x0D
|
360
|
+
PNG = 0x0E
|
361
|
+
BMP = 0x1B
|
362
|
+
GIF = 0x0C # Deprecated
|
252
363
|
|
253
364
|
# Returns the format of the image data: `JPEG` or `PNG`.
|
254
365
|
# @return [Fixnum]
|