taglib-ruby 0.7.1 → 1.0.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 +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]
|