taglib-ruby 0.6.0 → 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.
Files changed (85) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +1 -1
  3. data/{CHANGES.md → CHANGELOG.md} +46 -11
  4. data/README.md +61 -17
  5. data/Rakefile +12 -3
  6. data/docs/taglib/aiff.rb +95 -0
  7. data/docs/taglib/base.rb +30 -2
  8. data/docs/taglib/flac.rb +60 -4
  9. data/docs/taglib/id3v1.rb +29 -0
  10. data/docs/taglib/id3v2.rb +22 -3
  11. data/docs/taglib/mp4.rb +124 -13
  12. data/docs/taglib/mpeg.rb +30 -1
  13. data/docs/taglib/ogg.rb +47 -5
  14. data/docs/taglib/riff.rb +3 -0
  15. data/docs/taglib/vorbis.rb +1 -1
  16. data/docs/taglib/wav.rb +116 -0
  17. data/ext/extconf_common.rb +24 -3
  18. data/ext/taglib_aiff/extconf.rb +4 -0
  19. data/ext/taglib_aiff/taglib_aiff.i +84 -0
  20. data/ext/taglib_aiff/taglib_aiff_wrap.cxx +3111 -0
  21. data/ext/taglib_base/includes.i +34 -5
  22. data/ext/taglib_base/taglib_base.i +42 -2
  23. data/ext/taglib_base/taglib_base_wrap.cxx +226 -186
  24. data/ext/taglib_flac/taglib_flac.i +21 -18
  25. data/ext/taglib_flac/taglib_flac_wrap.cxx +519 -955
  26. data/ext/taglib_flac_picture/extconf.rb +4 -0
  27. data/ext/taglib_flac_picture/includes.i +15 -0
  28. data/ext/taglib_flac_picture/taglib_flac_picture.i +15 -0
  29. data/ext/taglib_flac_picture/taglib_flac_picture_wrap.cxx +3087 -0
  30. data/ext/taglib_id3v1/taglib_id3v1.i +19 -0
  31. data/ext/taglib_id3v1/taglib_id3v1_wrap.cxx +391 -193
  32. data/ext/taglib_id3v2/relativevolumeframe.i +4 -17
  33. data/ext/taglib_id3v2/taglib_id3v2.i +72 -2
  34. data/ext/taglib_id3v2/taglib_id3v2_wrap.cxx +3051 -1113
  35. data/ext/taglib_mp4/taglib_mp4.i +101 -20
  36. data/ext/taglib_mp4/taglib_mp4_wrap.cxx +1088 -282
  37. data/ext/taglib_mpeg/taglib_mpeg.i +11 -16
  38. data/ext/taglib_mpeg/taglib_mpeg_wrap.cxx +646 -317
  39. data/ext/taglib_ogg/taglib_ogg.i +11 -0
  40. data/ext/taglib_ogg/taglib_ogg_wrap.cxx +478 -192
  41. data/ext/taglib_vorbis/taglib_vorbis.i +8 -0
  42. data/ext/taglib_vorbis/taglib_vorbis_wrap.cxx +202 -156
  43. data/ext/taglib_wav/extconf.rb +4 -0
  44. data/ext/taglib_wav/taglib_wav.i +90 -0
  45. data/ext/taglib_wav/taglib_wav_wrap.cxx +3423 -0
  46. data/lib/taglib.rb +2 -0
  47. data/lib/taglib/aiff.rb +7 -0
  48. data/lib/taglib/mp4.rb +2 -1
  49. data/lib/taglib/version.rb +2 -2
  50. data/lib/taglib/wav.rb +11 -0
  51. data/taglib-ruby.gemspec +42 -8
  52. data/tasks/ext.rake +48 -20
  53. data/tasks/gemspec_check.rake +1 -1
  54. data/tasks/swig.rake +36 -2
  55. data/test/aiff_examples_test.rb +39 -0
  56. data/test/aiff_file_test.rb +103 -0
  57. data/test/aiff_file_write_test.rb +88 -0
  58. data/test/data/Makefile +8 -2
  59. data/test/data/aiff-sample.aiff +0 -0
  60. data/test/data/flac_nopic.flac +0 -0
  61. data/test/data/vorbis-create.cpp +20 -1
  62. data/test/data/vorbis.oga +0 -0
  63. data/test/data/wav-create.cpp +55 -0
  64. data/test/data/wav-dump.cpp +74 -0
  65. data/test/data/wav-sample.wav +0 -0
  66. data/test/file_test.rb +21 -0
  67. data/test/fileref_properties_test.rb +1 -1
  68. data/test/flac_file_test.rb +45 -30
  69. data/test/flac_picture_memory_test.rb +43 -0
  70. data/test/id3v1_genres_test.rb +23 -0
  71. data/test/id3v1_tag_test.rb +1 -0
  72. data/test/id3v2_frames_test.rb +64 -0
  73. data/test/id3v2_tag_test.rb +6 -6
  74. data/test/id3v2_unknown_frames_test.rb +30 -0
  75. data/test/id3v2_write_test.rb +10 -13
  76. data/test/mp4_file_test.rb +33 -4
  77. data/test/mp4_file_write_test.rb +5 -5
  78. data/test/mp4_items_test.rb +83 -29
  79. data/test/mpeg_file_test.rb +120 -7
  80. data/test/vorbis_file_test.rb +2 -2
  81. data/test/vorbis_tag_test.rb +61 -7
  82. data/test/wav_examples_test.rb +42 -0
  83. data/test/wav_file_test.rb +108 -0
  84. data/test/wav_file_write_test.rb +113 -0
  85. metadata +86 -56
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 5a05d3733b4a04a791f619b399e24070ddc184ee2282d61d5b7f377726e3f2cd
4
+ data.tar.gz: cc92fc66ba1a8643a8a5b4ea1ff6398ba1277b756697dfbd3450007954103b48
5
+ SHA512:
6
+ metadata.gz: 6350877ea0c574bc92c4a09cd501f15648f13b464cbce35aab4b38722fe4357f224a2b802dc15efe6aa17f6ee3e7d78ae837e54b3fbf061f61bf9a355a12f1d4
7
+ data.tar.gz: 23c439bbc1aabf7d4bf1b2b434de929fac6c1738468028054ca83f1001ae36f0bbabedb22db2db2da66fd701b328db2f2aceb4962dd661ec1983140963d11bbc
data/.yardopts CHANGED
@@ -5,5 +5,5 @@
5
5
  docs/**/*.rb
6
6
  -
7
7
  README.md
8
- CHANGES.md
8
+ CHANGELOG.md
9
9
  LICENSE.txt
@@ -1,7 +1,42 @@
1
1
  Changes in Releases of taglib-ruby
2
2
  ==================================
3
3
 
4
- ## 0.6.0 (2013-04-26)
4
+ All notable changes to this project will be documented in this file.
5
+
6
+ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
7
+ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
8
+
9
+ ## 1.1.0 - 2021-01-20
10
+ ### Added
11
+ - Added support for CTOC and CHAP frames for ID3v2
12
+
13
+ ## 1.0.1 - 2020-03-25
14
+
15
+ ### Fixed
16
+ - Fix segmentation fault with TagLib::FLAC picture lists (#91), thanks
17
+ @jameswyper!
18
+
19
+ ## 1.0.0 - 2020-01-07
20
+
21
+ * Support for TagLib >= 1.11.1 (drop support for earlier versions) (#83)
22
+ * This includes a lot of new APIs and some changed APIs, see
23
+ `@since 1.0.0` in the docs
24
+ * Stop using tainted strings to fix warnings with Ruby 2.7 (#86)
25
+
26
+ ## 0.7.1 - 2015-12-28
27
+
28
+ * Fix compile error during gem installation on Ruby 2.3 (MRI) (#67)
29
+
30
+ ## 0.7.0 - 2014-08-21
31
+
32
+ * Add support for TagLib::RIFF::AIFF (#52, by @tchev)
33
+ * Add support for TagLib::RIFF::WAV (#57, by @tchev)
34
+ * Associate filesystem encoding to filename strings
35
+ * Allow CXX override during gem installation
36
+ * Try to detect location of vendor/taglib on Heroku (#28)
37
+ * Documentation updates
38
+
39
+ ## 0.6.0 - 2013-04-26
5
40
 
6
41
  * Add support for TagLib::MP4 (#3, by @jacobvosmaer)
7
42
  * Add support for TagLib::ID3v2::Header (#19, by @kaethorn)
@@ -12,24 +47,24 @@ Changes in Releases of taglib-ruby
12
47
  * Fix segfault when passing a non-String to a String argument
13
48
  * Documentation updates
14
49
 
15
- ## 0.5.2 (2012-10-06)
50
+ ## 0.5.2 - 2012-10-06
16
51
 
17
52
  * Fix memory bug with TagLib::MPEG::File#tag and TagLib::FLAC::File#tag
18
53
  which could cause crashes (#14)
19
54
  * Update TagLib of binary gem for Windows to 1.8
20
55
 
21
- ## 0.5.1 (2012-06-16)
56
+ ## 0.5.1 - 2012-06-16
22
57
 
23
58
  * Fix crashes (segfault) with nil arguments, e.g. with `tag.title = nil`
24
59
  * Document TagLib::MPEG::File#save and TagLib::MPEG::File#strip (#11)
25
60
  * Update TagLib of binary gem for Windows to 1.7.2
26
61
 
27
- ## 0.5.0 (2012-04-15)
62
+ ## 0.5.0 - 2012-04-15
28
63
 
29
64
  * Add support for FLAC
30
65
  * Fix problem in SWIG causing compilation error on MacRuby (#10)
31
66
 
32
- ## 0.4.0 (2012-03-18)
67
+ ## 0.4.0 - 2012-03-18
33
68
 
34
69
  * Pre-compiled binary gem for Windows (Ruby 1.9) with TagLib 1.7.1
35
70
  * Unicode filename support on Windows
@@ -43,35 +78,35 @@ title = TagLib::FileRef.open("file.mp3") do |file|
43
78
  end
44
79
  ```
45
80
 
46
- ## 0.3.1 (2012-01-22)
81
+ ## 0.3.1 - 2012-01-22
47
82
 
48
83
  * Fix ObjectPreviouslyDeleted exception after calling
49
84
  TagLib::ID3v2::Tag#add_frame (#8)
50
85
  * Make installation under MacPorts work out of the box (#7)
51
86
 
52
- ## 0.3.0 (2012-01-02)
87
+ ## 0.3.0 - 2012-01-02
53
88
 
54
89
  * Add support for Ogg Vorbis
55
90
  * Add support for ID3v1 (#2)
56
91
  * Add #close to File classes for explicitly releasing resources
57
92
  * Fix compilation on Windows
58
93
 
59
- ## 0.2.1 (2011-11-05)
94
+ ## 0.2.1 - 2011-11-05
60
95
 
61
96
  * Fix compilation error due to missing typedef on some systems (#5)
62
97
 
63
- ## 0.2.0 (2011-10-22)
98
+ ## 0.2.0 - 2011-10-22
64
99
 
65
100
  * API documentation
66
101
  * Add support for:
67
102
  * TagLib::AudioProperties and TagLib::MPEG::Properties (#4)
68
103
  * TagLib::ID3v2::RelativeVolumeFrame
69
104
 
70
- ## 0.1.1 (2011-09-17)
105
+ ## 0.1.1 - 2011-09-17
71
106
 
72
107
  * Add installation instructions and clean up description
73
108
 
74
- ## 0.1.0 (2011-09-17)
109
+ ## 0.1.0 - 2011-09-17
75
110
 
76
111
  * Initial release
77
112
  * Coverage of the following API:
data/README.md CHANGED
@@ -18,18 +18,17 @@ taglib-ruby currently supports the following:
18
18
 
19
19
  Contributions for more coverage of the library are very welcome.
20
20
 
21
- [![Build status][travis-img]][travis-link]
22
-
23
- [![flattr this project][flattr-img]][flattr-link]
21
+ [![Gem version][gem-img]][gem-link]
22
+ [![ci](https://github.com/robinst/taglib-ruby/workflows/ci/badge.svg)](https://github.com/robinst/taglib-ruby/actions?query=workflow%3Aci)
24
23
 
25
24
  Installation
26
25
  ------------
27
26
 
28
- 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
29
28
  with header files (and a C++ compiler of course):
30
29
 
31
30
  * Debian/Ubuntu: `sudo apt-get install libtag1-dev`
32
- * Fedora/RHEL: `sudo yum install taglib-devel`
31
+ * Fedora/RHEL: `sudo dnf install taglib-devel`
33
32
  * Brew: `brew install taglib`
34
33
  * MacPorts: `sudo port install taglib`
35
34
 
@@ -37,6 +36,14 @@ Then do:
37
36
 
38
37
  gem install taglib-ruby
39
38
 
39
+ ### OS X C++ compiler override
40
+
41
+ Not all versions of TagLib get along with `clang++`, the default C++ compiler
42
+ on OS X. To compile taglib-ruby's C++ extensions with a different compiler
43
+ during installation, set the `TAGLIB_RUBY_CXX` environment variable.
44
+
45
+ TAGLIB_RUBY_CXX=g++-4.2 gem install taglib-ruby
46
+
40
47
  Usage
41
48
  -----
42
49
 
@@ -48,27 +55,66 @@ Begin with the {TagLib} namespace.
48
55
  Release Notes
49
56
  -------------
50
57
 
51
- See {file:CHANGES.md}.
58
+ See {file:CHANGELOG.md}.
52
59
 
53
60
  Contributing
54
61
  ------------
55
62
 
63
+ ### Dependencies
64
+
65
+ Fedora:
66
+
67
+ sudo dnf install taglib-devel ruby-devel gcc-c++ redhat-rpm-config swig
68
+
56
69
  ### Building
57
70
 
58
- # Install dependencies
71
+ Install dependencies (uses bundler, install it via `gem install bundler`
72
+ if you don't have it):
73
+
59
74
  bundle install
60
- # Regenerate SWIG wrappers (only necessary if you made changes)
75
+
76
+ Regenerate SWIG wrappers if you made changes in `.i` files (use version 3.0.7 of SWIG - 3.0.8 through 3.0.12 will not work):
77
+
61
78
  rake swig
62
- # Compile extension
79
+
80
+ Force regeneration of all SWIG wrappers:
81
+
82
+ touch ext/*/*.i
83
+ rake swig
84
+
85
+ Compile extensions:
86
+
63
87
  rake clean compile
64
- # Run tests
88
+
89
+ Run tests:
90
+
65
91
  rake test
66
- # Build and install gem into system gems
92
+
93
+ Run irb with library:
94
+
95
+ irb -Ilib -rtaglib
96
+
97
+ Build and install gem into system gems:
98
+
67
99
  rake install
68
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
+
69
115
  ### Workflow
70
116
 
71
- * Check out the latest master to make sure the feature hasn't been
117
+ * Check out the latest main branch to make sure the feature hasn't been
72
118
  implemented or the bug hasn't been fixed yet
73
119
  * Check out the issue tracker to make sure someone already hasn't
74
120
  requested it and/or contributed it
@@ -85,7 +131,7 @@ Contributing
85
131
  License
86
132
  -------
87
133
 
88
- Copyright (c) 2010-2013 Robin Stocker and others, see Git history.
134
+ Copyright (c) 2010-2020 Robin Stocker and others, see Git history.
89
135
 
90
136
  taglib-ruby is distributed under the MIT License,
91
137
  see LICENSE.txt for details.
@@ -95,7 +141,5 @@ a DLL. TagLib is distributed under the GNU Lesser General Public License
95
141
  version 2.1 (LGPL) and Mozilla Public License (MPL).
96
142
 
97
143
  [taglib]: http://taglib.github.io/
98
- [travis-img]: https://secure.travis-ci.org/robinst/taglib-ruby.png
99
- [travis-link]: http://travis-ci.org/robinst/taglib-ruby
100
- [flattr-img]: http://api.flattr.com/button/flattr-badge-large.png
101
- [flattr-link]: https://flattr.com/submit/auto?user_id=robinst&url=https://github.com/robinst/taglib-ruby&title=taglib-ruby&tags=github&category=software
144
+ [gem-img]: https://badge.fury.io/rb/taglib-ruby.svg
145
+ [gem-link]: https://rubygems.org/gems/taglib-ruby
data/Rakefile CHANGED
@@ -23,7 +23,16 @@ YARD::Rake::YardocTask.new do |t|
23
23
  t.options = ['--title', "taglib-ruby #{version}"]
24
24
  end
25
25
 
26
- # Change to Bundler::GemHelper.gemspec when it's released
27
- $gemspec = Bundler.load_gemspec('taglib-ruby.gemspec')
26
+ $gemspec = Bundler::GemHelper.gemspec
28
27
 
29
- FileList['tasks/**/*.rake'].each { |task| import task }
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. The environment variable can be set to
37
+ # prevent running swig.
38
+ import 'tasks/swig.rake' unless ENV['SKIP_SWIG'] == 'true'
@@ -0,0 +1,95 @@
1
+ # @since 0.7.0
2
+ module TagLib::RIFF::AIFF
3
+
4
+ # The file class for `.aiff` files.
5
+ #
6
+ # @example Reading the title
7
+ # title = TagLib::RIFF::AIFF::File.open("sample.aiff") do |file|
8
+ # file.tag.title
9
+ # end
10
+ #
11
+ # @example Reading AIFF-specific audio properties
12
+ # TagLib::RIFF::AIFF::File.open("sample.aiff") do |file|
13
+ # file.audio_properties.sample_width #=> 16
14
+ # end
15
+ #
16
+ # @example Saving ID3v2 cover-art to disk
17
+ # TagLib::RIFF::AIFF::File.open("sample2.aif") do |file|
18
+ # id3v2_tag = file.tag
19
+ # cover = id3v2_tag.frame_list('APIC').first
20
+ # ext = cover.mime_type.rpartition('/')[2]
21
+ # File.open("cover-art.#{ext}", "wb") { |f| f.write cover.picture }
22
+ # end
23
+ #
24
+ # @see ID3v2::Tag ID3v2 examples.
25
+ #
26
+ class File < TagLib::File
27
+ # {include:::TagLib::FileRef.open}
28
+ #
29
+ # @param (see #initialize)
30
+ # @yield [file] the {File} object, as obtained by {#initialize}
31
+ # @return the return value of the block
32
+ #
33
+ def self.open(filename, read_properties=true)
34
+ end
35
+
36
+ # Load an AIFF file.
37
+ #
38
+ # @param [String] filename
39
+ # @param [Boolean] read_properties if audio properties should be
40
+ # read
41
+ def initialize(filename, read_properties=true)
42
+ end
43
+
44
+ # Returns the ID3v2 tag.
45
+ #
46
+ # @return [TagLib::ID3v2::Tag]
47
+ def tag
48
+ end
49
+
50
+ # Returns audio properties.
51
+ #
52
+ # @return [TagLib::RIFF::AIFF::Properties]
53
+ def audio_properties
54
+ end
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
+
62
+ end
63
+
64
+ class Properties < TagLib::AudioProperties
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
93
+ end
94
+
95
+ end
@@ -5,7 +5,7 @@
5
5
  # * Reading/writing basic tag and audio properties without having to
6
6
  # know the tagging format: {TagLib::FileRef}
7
7
  # * Reading properties of MPEG files: {TagLib::MPEG::File}
8
- # * Reading/writing ID3v2 tags: {TagLib::MPEG::File} and
8
+ # * Reading/writing ID3v2 tags: {TagLib::MPEG::File}, {TagLib::RIFF::AIFF::File} and
9
9
  # {TagLib::ID3v2::Tag}
10
10
  # * Reading/writing Ogg Vorbis tags: {TagLib::Ogg::Vorbis::File}
11
11
  # * Reading/writing FLAC tags: {TagLib::FLAC::File}
@@ -23,6 +23,27 @@
23
23
  #
24
24
  # For ID3v2 frames, you can also set a default text encoding globally
25
25
  # using the {TagLib::ID3v2::FrameFactory}.
26
+ #
27
+ # ## Modifying attributes
28
+ #
29
+ # Mutable Ruby types (String, Array) returned by TagLib cannot be modified in-place.
30
+ #
31
+ # @example Modifying an attribute in-place does not work
32
+ # tag.title = 'Title'
33
+ # tag.title
34
+ # # => "Title"
35
+ # tag.title << ' of the song'
36
+ # # => "Title of the song"
37
+ # tag.title
38
+ # # => "Title"
39
+ #
40
+ # @example You need to replace the existing attribute value
41
+ # tag.title = 'Title'
42
+ # tag.title
43
+ # # => "Title"
44
+ # tag.title = 'Title of the song'
45
+ # tag.title
46
+ # # => "Title of the song"
26
47
  module TagLib
27
48
 
28
49
  # Major version of TagLib the extensions were compiled against
@@ -226,7 +247,14 @@ module TagLib
226
247
  Accurate = 2
227
248
 
228
249
  # @return [Integer] length of the file in seconds
229
- attr_reader :length
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
230
258
 
231
259
  # @return [Integer] bit rate in kb/s (kilobit per second)
232
260
  attr_reader :bitrate
@@ -30,7 +30,14 @@ module TagLib::FLAC
30
30
  # file.save
31
31
  # end
32
32
  class File < TagLib::File
33
- # {include:TagLib::FileRef.open}
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] Sample width
102
- attr_reader :sample_width
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