lame 0.0.3 → 0.0.4

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 (38) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +3 -4
  3. data/README.md +51 -17
  4. data/lib/lame.rb +1 -0
  5. data/lib/lame/buffer.rb +1 -1
  6. data/lib/lame/encoder.rb +10 -11
  7. data/lib/lame/encoding/long_buffer_encoder.rb +1 -1
  8. data/lib/lame/encoding/stereo_buffer_encoder.rb +1 -0
  9. data/lib/lame/ffi.rb +2 -0
  10. data/lib/lame/version.rb +1 -1
  11. data/spec/buffer_spec.rb +8 -8
  12. data/spec/configuration_spec.rb +76 -76
  13. data/spec/decoder_spec.rb +34 -34
  14. data/spec/decoding/decoded_frame_spec.rb +7 -7
  15. data/spec/decoding/id3_tag_parser_spec.rb +3 -3
  16. data/spec/decoding/mp3_data_header_parser_spec.rb +21 -21
  17. data/spec/decoding/mpeg_audio_frame_finder_spec.rb +15 -15
  18. data/spec/decoding/mpeg_audio_frame_matcher_spec.rb +2 -2
  19. data/spec/decoding/single_frame_decoder_spec.rb +36 -35
  20. data/spec/decoding/stream_decoder_spec.rb +10 -10
  21. data/spec/delegation_spec.rb +37 -37
  22. data/spec/encoder_spec.rb +100 -100
  23. data/spec/encoding/flusher_spec.rb +16 -16
  24. data/spec/encoding/id3_spec.rb +38 -38
  25. data/spec/encoding/interleaved_buffer_encoder_spec.rb +25 -25
  26. data/spec/encoding/stereo_buffer_encoder_spec.rb +34 -33
  27. data/spec/encoding/vbr_info_spec.rb +16 -16
  28. data/spec/ffi/decode_flags_spec.rb +3 -2
  29. data/spec/ffi/encoding_spec.rb +22 -22
  30. data/spec/ffi/global_flags_spec.rb +159 -157
  31. data/spec/ffi/id3tag_spec.rb +24 -24
  32. data/spec/ffi/mp3_data_spec.rb +3 -3
  33. data/spec/integration/encoding_spec.rb +75 -3
  34. data/spec/integration/id3_tags_spec.rb +18 -18
  35. data/spec/lib/custom_matchers.rb +4 -4
  36. data/spec/lib/wave_file_generator.rb +9 -9
  37. data/spec/spec_helper.rb +0 -1
  38. metadata +38 -60
@@ -20,75 +20,75 @@ module LAME
20
20
 
21
21
  LAME.id3tag_genre_list(genre_collector_callback, nil)
22
22
 
23
- genres.should have(148).items
24
- genres[0].should eql "Blues"
25
- genres[147].should eql "SynthPop"
23
+ expect(genres.length).to be(148)
24
+ expect(genres[0]).to eql "Blues"
25
+ expect(genres[147]).to eql "SynthPop"
26
26
  end
27
27
 
28
28
  it "initializes" do
29
- LAME.id3tag_init(@flags_pointer).should eql nil
29
+ expect(LAME.id3tag_init(@flags_pointer)).to eql nil
30
30
  end
31
31
 
32
32
  it "adds v2" do
33
- LAME.id3tag_add_v2(@flags_pointer).should eql nil
33
+ expect(LAME.id3tag_add_v2(@flags_pointer)).to eql nil
34
34
  end
35
35
 
36
36
  it "set v1 only" do
37
- LAME.id3tag_v1_only(@flags_pointer).should eql nil
37
+ expect(LAME.id3tag_v1_only(@flags_pointer)).to eql nil
38
38
  end
39
39
 
40
40
  it "set v2 only" do
41
- LAME.id3tag_v2_only(@flags_pointer).should eql nil
41
+ expect(LAME.id3tag_v2_only(@flags_pointer)).to eql nil
42
42
  end
43
43
 
44
44
  it "pads with spaces" do
45
- LAME.id3tag_space_v1(@flags_pointer).should eql nil
45
+ expect(LAME.id3tag_space_v1(@flags_pointer)).to eql nil
46
46
  end
47
47
 
48
48
  it "pads v2 with 128 extra bytes" do
49
- LAME.id3tag_pad_v2(@flags_pointer).should eql nil
49
+ expect(LAME.id3tag_pad_v2(@flags_pointer)).to eql nil
50
50
  end
51
51
 
52
52
  it "pads v2 with extra bytes" do
53
- LAME.id3tag_set_pad(@flags_pointer, 256).should eql nil
53
+ expect(LAME.id3tag_set_pad(@flags_pointer, 256)).to eql nil
54
54
  end
55
55
 
56
56
  it "sets the title" do
57
- LAME.id3tag_set_title(@flags_pointer, pointer_from_string("foo")).should eql nil
57
+ expect(LAME.id3tag_set_title(@flags_pointer, pointer_from_string("foo"))).to eql nil
58
58
  end
59
59
 
60
60
  it "sets the artist" do
61
- LAME.id3tag_set_artist(@flags_pointer, pointer_from_string("foo")).should eql nil
61
+ expect(LAME.id3tag_set_artist(@flags_pointer, pointer_from_string("foo"))).to eql nil
62
62
  end
63
63
 
64
64
  it "sets the album" do
65
- LAME.id3tag_set_album(@flags_pointer, pointer_from_string("foo")).should eql nil
65
+ expect(LAME.id3tag_set_album(@flags_pointer, pointer_from_string("foo"))).to eql nil
66
66
  end
67
67
 
68
68
  it "sets the year" do
69
- LAME.id3tag_set_year(@flags_pointer, pointer_from_string("foo")).should eql nil
69
+ expect(LAME.id3tag_set_year(@flags_pointer, pointer_from_string("foo"))).to eql nil
70
70
  end
71
71
 
72
72
  it "sets the comment" do
73
- LAME.id3tag_set_comment(@flags_pointer, pointer_from_string("foo")).should eql nil
73
+ expect(LAME.id3tag_set_comment(@flags_pointer, pointer_from_string("foo"))).to eql nil
74
74
  end
75
75
 
76
76
  it "sets the track" do
77
- LAME.id3tag_set_track(@flags_pointer, pointer_from_string("1")).should eql 0
77
+ expect(LAME.id3tag_set_track(@flags_pointer, pointer_from_string("1"))).to eql 0
78
78
  end
79
79
 
80
80
  it "ignores out of range track numbers for id3" do
81
- LAME.id3tag_set_track(@flags_pointer, pointer_from_string("256")).should eql -1
81
+ expect(LAME.id3tag_set_track(@flags_pointer, pointer_from_string("256"))).to eql -1
82
82
  end
83
83
 
84
84
  it "sets the genre" do
85
- LAME.id3tag_set_genre(@flags_pointer, pointer_from_string("Rock")).should eql 0
85
+ expect(LAME.id3tag_set_genre(@flags_pointer, pointer_from_string("Rock"))).to eql 0
86
86
  end
87
87
 
88
88
  # There is a fixed set of allowed fields (see id3tag.c)
89
89
  # LAME 3.99.4 fixed some bugs in setting field values, this could crash for certain tags.
90
90
  it "sets the fieldvalue" do
91
- LAME.id3tag_set_fieldvalue(@flags_pointer, pointer_from_string("TIT2=foofoo")).should eql 0
91
+ expect(LAME.id3tag_set_fieldvalue(@flags_pointer, pointer_from_string("TIT2=foofoo"))).to eql 0
92
92
  end
93
93
 
94
94
  # it "sets the fieldvalue (utf16)" do
@@ -103,7 +103,7 @@ module LAME
103
103
  buffer.put_char(0, 0xff)
104
104
  buffer.put_char(1, 0xd8)
105
105
 
106
- LAME.id3tag_set_albumart(@flags_pointer, buffer, buffer_size).should eql 0
106
+ expect(LAME.id3tag_set_albumart(@flags_pointer, buffer, buffer_size)).to eql 0
107
107
  end
108
108
 
109
109
  it "creates id3v1 tag" do
@@ -111,7 +111,7 @@ module LAME
111
111
  buffer = ::FFI::MemoryPointer.new(:uchar, buffer_size)
112
112
  LAME.id3tag_set_title(@flags_pointer, pointer_from_string("foo"))
113
113
  LAME.id3tag_set_album(@flags_pointer, pointer_from_string("bar"))
114
- LAME.lame_get_id3v1_tag(@flags_pointer, buffer, buffer_size).should eql 128
114
+ expect(LAME.lame_get_id3v1_tag(@flags_pointer, buffer, buffer_size)).to eql 128
115
115
  end
116
116
 
117
117
  it "creates id3v2 tag" do
@@ -120,15 +120,15 @@ module LAME
120
120
  LAME.id3tag_add_v2(@flags_pointer)
121
121
  LAME.id3tag_set_title(@flags_pointer, pointer_from_string("foo"))
122
122
  LAME.id3tag_set_album(@flags_pointer, pointer_from_string("bar"))
123
- LAME.lame_get_id3v2_tag(@flags_pointer, buffer, buffer_size).should eql 38
123
+ expect(LAME.lame_get_id3v2_tag(@flags_pointer, buffer, buffer_size)).to eql 38
124
124
  end
125
125
 
126
126
  it "sets id3tag automatic" do
127
- LAME.should have_flag(:write_id3tag_automatic).with_value(1).for(@flags_pointer)
127
+ expect(LAME).to have_flag(:write_id3tag_automatic).with_value(1).for(@flags_pointer)
128
128
  end
129
129
 
130
130
  it "gets id3tag automatic" do
131
- LAME.should be_able_to_set(:write_id3tag_automatic).to(0).for(@flags_pointer).and_return(nil)
131
+ expect(LAME).to be_able_to_set(:write_id3tag_automatic).to(0).for(@flags_pointer).and_return(nil)
132
132
  end
133
133
 
134
134
  end
@@ -8,17 +8,17 @@ module LAME
8
8
 
9
9
  it "is stereo for two channels" do
10
10
  mp3_data[:stereo] = 2
11
- mp3_data.channel_mode.should eql :stereo
11
+ expect(mp3_data.channel_mode).to eql :stereo
12
12
  end
13
13
 
14
14
  it "is mono for one channel" do
15
15
  mp3_data[:stereo] = 1
16
- mp3_data.channel_mode.should eql :mono
16
+ expect(mp3_data.channel_mode).to eql :mono
17
17
  end
18
18
 
19
19
  it "has a sample rate" do
20
20
  mp3_data[:samplerate] = 44100
21
- mp3_data.sample_rate.should eql 44100
21
+ expect(mp3_data.sample_rate).to eql 44100
22
22
  end
23
23
 
24
24
  end
@@ -4,13 +4,19 @@ require 'wavefile'
4
4
 
5
5
  describe "Encoding", :slow => true do
6
6
 
7
+ # regular 16-bit, 44.1kHz sine wave:
7
8
  let(:wav_file) { WaveFileGenerator.new(:length => 2).generate }
8
9
  let(:wav_path) { wav_file.path }
10
+ let(:wav_reader) { WaveFile::Reader.new(wav_path) }
11
+
12
+ # 24-bit, 192kHz sine wave:
13
+ let(:wav_file_24) { WaveFileGenerator.new(length: 2, bits: 24, sample_rate: 192000).generate }
14
+ let(:wav_path_24) { wav_file_24.path }
15
+ let(:wav_reader_24) { WaveFile::Reader.new(wav_path_24) }
16
+
9
17
  let(:mp3_path_raw) { Tempfile.new("output-raw.mp3") }
10
18
  let(:mp3_path_api) { Tempfile.new("output-api.mp3") }
11
19
 
12
- let(:wav_reader) { WaveFile::Reader.new(wav_path) }
13
-
14
20
  it "encodes a file by api" do
15
21
 
16
22
  encoder = LAME::Encoder.new
@@ -87,7 +93,7 @@ describe "Encoding", :slow => true do
87
93
  # Digest::MD5.hexdigest(File.read(mp3_path_api)).should eql "d1cd92c106e7aac4f5291fd141a19e10"
88
94
  end
89
95
 
90
- # This test serves as an example how to use the LAME API
96
+ # This test serves as an example how to use the LAME C-API
91
97
  it "encodes a wav file" do
92
98
 
93
99
  # setup
@@ -148,4 +154,70 @@ describe "Encoding", :slow => true do
148
154
  # Digest::MD5.hexdigest(File.read(mp3_path_raw)).should eql "84a1ce7994bb4a54fc13fb5381ebac40"
149
155
  end
150
156
 
157
+ it "encodes 24-bit source files using the long encoder" do
158
+ encoder = LAME::Encoder.new
159
+
160
+ encoder.configure do |config|
161
+ config.input_samplerate = 192000
162
+ config.id3.write_automatic = false
163
+ config.vbr.mode = :vbr_default
164
+ config.vbr.q = 0
165
+ end
166
+
167
+ File.open(mp3_path_api, "wb") do |file|
168
+
169
+ wav_reader_24.each_buffer(encoder.framesize) do |read_buffer|
170
+ # important: shift the 24-bit samples to the system's long-size (32/64-bit)
171
+ left = read_buffer.samples.map { |s| s[0] << (::LAME::FFI::LONG_SIZE-24) }
172
+ right = read_buffer.samples.map { |s| s[1] << (::LAME::FFI::LONG_SIZE-24) }
173
+
174
+ encoder.encode_long(left, right) do |mp3|
175
+ file.write mp3
176
+ end
177
+ end
178
+ encoder.flush do |flush_frame|
179
+ file.write(flush_frame)
180
+ end
181
+
182
+ encoder.vbr_frame do |vbr_frame|
183
+ file.write(vbr_frame)
184
+ end
185
+
186
+ end
187
+ end
188
+
189
+ it "encodes 24-bit source files using the float encoder" do
190
+ encoder = LAME::Encoder.new
191
+
192
+ encoder.configure do |config|
193
+ config.input_samplerate = 192000
194
+ config.id3.write_automatic = false
195
+ config.vbr.mode = :vbr_default
196
+ config.vbr.q = 0
197
+ end
198
+
199
+ max24 = 2**24/2.0
200
+
201
+ File.open(mp3_path_api, "wb") do |file|
202
+
203
+ wav_reader_24.each_buffer(encoder.framesize) do |read_buffer|
204
+ # important: scale the 24-bit input values to floats between -1.0 and +1.0
205
+ left = read_buffer.samples.map { |s| s[0] / max24 }
206
+ right = read_buffer.samples.map { |s| s[1] / max24 }
207
+
208
+ encoder.encode_float(left, right) do |mp3|
209
+ file.write mp3
210
+ end
211
+ end
212
+ encoder.flush do |flush_frame|
213
+ file.write(flush_frame)
214
+ end
215
+
216
+ encoder.vbr_frame do |vbr_frame|
217
+ file.write(vbr_frame)
218
+ end
219
+
220
+ end
221
+ end
222
+
151
223
  end
@@ -13,17 +13,17 @@ describe "ID3 tags", :slow => true do
13
13
  encode_wav_file(false)
14
14
 
15
15
  Mp3Info.open(mp3_id3_path) do |info|
16
- info.hastag1?.should be_true
17
- info.hastag2?.should be_false
16
+ expect(info.hastag1?).to be_truthy
17
+ expect(info.hastag2?).to be_falsy
18
18
 
19
19
  tags = info.tag1
20
- tags["title"].should eql "title"
21
- tags["artist"].should eql "artist"
22
- tags["album"].should eql "album"
23
- tags["year"].should eql 2013
24
- tags["comments"].should eql "comment"
25
- tags["tracknum"].should eql 42
26
- tags["genre_s"].should eql "Rock"
20
+ expect(tags["title"]).to eql "title"
21
+ expect(tags["artist"]).to eql "artist"
22
+ expect(tags["album"]).to eql "album"
23
+ expect(tags["year"]).to eql 2013
24
+ expect(tags["comments"]).to eql "comment"
25
+ expect(tags["tracknum"]).to eql 42
26
+ expect(tags["genre_s"]).to eql "Rock"
27
27
  end
28
28
  end
29
29
 
@@ -31,17 +31,17 @@ describe "ID3 tags", :slow => true do
31
31
  encode_wav_file
32
32
 
33
33
  Mp3Info.open(mp3_id3_path) do |info|
34
- info.hastag1?.should be_true
35
- info.hastag2?.should be_true
34
+ expect(info.hastag1?).to be_truthy
35
+ expect(info.hastag2?).to be_truthy
36
36
 
37
37
  tags = info.tag2
38
- tags["TIT2"].should eql "title"
39
- tags["TPE1"].should eql "artist"
40
- tags["TALB"].should eql "album"
41
- tags["TYER"].should eql "2013"
42
- tags["COMM"].should eql "comment"
43
- tags["TRCK"].should eql "42"
44
- tags["TCON"].should eql "Rock"
38
+ expect(tags["TIT2"]).to eql "title"
39
+ expect(tags["TPE1"]).to eql "artist"
40
+ expect(tags["TALB"]).to eql "album"
41
+ expect(tags["TYER"]).to eql "2013"
42
+ expect(tags["COMM"]).to eql "comment"
43
+ expect(tags["TRCK"]).to eql "42"
44
+ expect(tags["TCON"]).to eql "Rock"
45
45
  end
46
46
  end
47
47
 
@@ -56,7 +56,7 @@ RSpec::Matchers.define :have_getter do |expected|
56
56
  has_value?(actual, expected)
57
57
  end
58
58
 
59
- failure_message_for_should do |actual|
59
+ failure_message do |actual|
60
60
  if !has_getter?(actual, expected)
61
61
  "expected that #{actual} would have a getter for field :#{expected}"
62
62
  elsif @value && !has_value?(actual, expected)
@@ -83,7 +83,7 @@ RSpec::Matchers.define :delegate do |from|
83
83
  end
84
84
 
85
85
  def delegates_setter?
86
- LAME.should_receive(:"lame_set_#{target}").with(subject.global_flags, anything)
86
+ expect(LAME).to receive(:"lame_set_#{target}").with(subject.global_flags, anything)
87
87
  subject.send(:"#{from}=", double)
88
88
  true
89
89
  rescue => e
@@ -92,7 +92,7 @@ RSpec::Matchers.define :delegate do |from|
92
92
  end
93
93
 
94
94
  def delegates_getter?
95
- LAME.should_receive(:"lame_get_#{target}").with(subject.global_flags)
95
+ expect(LAME).to receive(:"lame_get_#{target}").with(subject.global_flags)
96
96
  subject.send(:"#{from}")
97
97
  true
98
98
  rescue => e
@@ -100,7 +100,7 @@ RSpec::Matchers.define :delegate do |from|
100
100
  false
101
101
  end
102
102
 
103
- failure_message_for_should do |actual|
103
+ failure_message do |actual|
104
104
  "expected #{subject.class} to delegate :#{from} to LAME.lame_set_#{target}"
105
105
  end
106
106
 
@@ -1,20 +1,20 @@
1
1
  class WaveFileGenerator
2
- attr_accessor :mode, :bits, :bitrate, :length, :hertz
2
+ attr_accessor :mode, :bits, :sample_rate, :length, :hertz
3
3
 
4
4
  def initialize(options = {})
5
- @mode = options[:mode] || :stereo
6
- @bits = options[:bits] || 16
7
- @bitrate = options[:bitate] || 44100
8
- @length = options[:length] || 1
9
- @hertz = options[:hertz] || 440
5
+ @mode = options[:mode] || :stereo
6
+ @bits = options[:bits] || 16
7
+ @sample_rate = options[:sample_rate] || 44100
8
+ @length = options[:length] || 1
9
+ @hertz = options[:hertz] || 440
10
10
  end
11
11
 
12
12
  def generate
13
13
  wav_file = Tempfile.new('sine.wav')
14
14
 
15
- format = WaveFile::Format.new(mode, pcm_type, bitrate)
15
+ format = WaveFile::Format.new(mode, pcm_type, sample_rate)
16
16
  WaveFile::Writer.new(wav_file.path, format) do |writer|
17
- samples = (0...bitrate*length).map do |offset|
17
+ samples = (0...sample_rate*length).map do |offset|
18
18
  sample = (Math.sin((Math::PI*2 / scale) * offset) * max).round
19
19
  [sample, sample]
20
20
  end
@@ -31,7 +31,7 @@ class WaveFileGenerator
31
31
  end
32
32
 
33
33
  def scale
34
- bitrate / hertz
34
+ sample_rate / hertz
35
35
  end
36
36
 
37
37
  def pcm_type
@@ -19,7 +19,6 @@ require 'lib/setter_getter'
19
19
  require 'lib/custom_matchers'
20
20
 
21
21
  RSpec.configure do |config|
22
- config.treat_symbols_as_metadata_keys_with_true_values = true
23
22
  config.run_all_when_everything_filtered = true
24
23
  config.filter_run :focus
25
24
  config.order = 'random'
metadata CHANGED
@@ -1,128 +1,113 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lame
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.0.3
4
+ version: 0.0.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - Roel van Dijk
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-04-09 00:00:00.000000000 Z
11
+ date: 2015-01-16 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
14
+ name: ffi
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
15
20
  type: :runtime
16
21
  prerelease: false
17
- name: ffi
18
22
  version_requirements: !ruby/object:Gem::Requirement
19
23
  requirements:
20
- - - ! '>='
24
+ - - '>='
21
25
  - !ruby/object:Gem::Version
22
26
  version: '0'
23
- none: false
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
24
29
  requirement: !ruby/object:Gem::Requirement
25
30
  requirements:
26
- - - ! '>='
31
+ - - '>='
27
32
  - !ruby/object:Gem::Version
28
33
  version: '0'
29
- none: false
30
- - !ruby/object:Gem::Dependency
31
34
  type: :development
32
35
  prerelease: false
33
- name: rake
34
36
  version_requirements: !ruby/object:Gem::Requirement
35
37
  requirements:
36
- - - ! '>='
38
+ - - '>='
37
39
  - !ruby/object:Gem::Version
38
40
  version: '0'
39
- none: false
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
40
43
  requirement: !ruby/object:Gem::Requirement
41
44
  requirements:
42
- - - ! '>='
45
+ - - '>='
43
46
  - !ruby/object:Gem::Version
44
47
  version: '0'
45
- none: false
46
- - !ruby/object:Gem::Dependency
47
48
  type: :development
48
49
  prerelease: false
49
- name: rspec
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- none: false
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
56
57
  requirement: !ruby/object:Gem::Requirement
57
58
  requirements:
58
- - - ! '>='
59
+ - - '>='
59
60
  - !ruby/object:Gem::Version
60
61
  version: '0'
61
- none: false
62
- - !ruby/object:Gem::Dependency
63
62
  type: :development
64
63
  prerelease: false
65
- name: pry
66
64
  version_requirements: !ruby/object:Gem::Requirement
67
65
  requirements:
68
- - - ! '>='
66
+ - - '>='
69
67
  - !ruby/object:Gem::Version
70
68
  version: '0'
71
- none: false
69
+ - !ruby/object:Gem::Dependency
70
+ name: wavefile
72
71
  requirement: !ruby/object:Gem::Requirement
73
72
  requirements:
74
- - - ! '>='
73
+ - - '>='
75
74
  - !ruby/object:Gem::Version
76
75
  version: '0'
77
- none: false
78
- - !ruby/object:Gem::Dependency
79
76
  type: :development
80
77
  prerelease: false
81
- name: wavefile
82
78
  version_requirements: !ruby/object:Gem::Requirement
83
79
  requirements:
84
- - - ! '>='
80
+ - - '>='
85
81
  - !ruby/object:Gem::Version
86
82
  version: '0'
87
- none: false
83
+ - !ruby/object:Gem::Dependency
84
+ name: ruby-mp3info
88
85
  requirement: !ruby/object:Gem::Requirement
89
86
  requirements:
90
- - - ! '>='
87
+ - - '>='
91
88
  - !ruby/object:Gem::Version
92
89
  version: '0'
93
- none: false
94
- - !ruby/object:Gem::Dependency
95
90
  type: :development
96
91
  prerelease: false
97
- name: ruby-mp3info
98
92
  version_requirements: !ruby/object:Gem::Requirement
99
93
  requirements:
100
- - - ! '>='
94
+ - - '>='
101
95
  - !ruby/object:Gem::Version
102
96
  version: '0'
103
- none: false
97
+ - !ruby/object:Gem::Dependency
98
+ name: coveralls
104
99
  requirement: !ruby/object:Gem::Requirement
105
100
  requirements:
106
- - - ! '>='
101
+ - - '>='
107
102
  - !ruby/object:Gem::Version
108
103
  version: '0'
109
- none: false
110
- - !ruby/object:Gem::Dependency
111
104
  type: :development
112
105
  prerelease: false
113
- name: coveralls
114
106
  version_requirements: !ruby/object:Gem::Requirement
115
107
  requirements:
116
- - - ! '>='
117
- - !ruby/object:Gem::Version
118
- version: '0'
119
- none: false
120
- requirement: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ! '>='
108
+ - - '>='
123
109
  - !ruby/object:Gem::Version
124
110
  version: '0'
125
- none: false
126
111
  description: FFI powered library for the LAME MP3 encoder.
127
112
  email:
128
113
  - roel@rustradio.org
@@ -205,33 +190,26 @@ files:
205
190
  - spec/spec_helper.rb
206
191
  homepage: http://github.com/rdvdijk/lame
207
192
  licenses: []
193
+ metadata: {}
208
194
  post_install_message:
209
195
  rdoc_options: []
210
196
  require_paths:
211
197
  - lib
212
198
  required_ruby_version: !ruby/object:Gem::Requirement
213
199
  requirements:
214
- - - ! '>='
200
+ - - '>='
215
201
  - !ruby/object:Gem::Version
216
- hash: 220624676423183308
217
- segments:
218
- - 0
219
202
  version: '0'
220
- none: false
221
203
  required_rubygems_version: !ruby/object:Gem::Requirement
222
204
  requirements:
223
- - - ! '>='
205
+ - - '>='
224
206
  - !ruby/object:Gem::Version
225
- hash: 220624676423183308
226
- segments:
227
- - 0
228
207
  version: '0'
229
- none: false
230
208
  requirements: []
231
209
  rubyforge_project:
232
- rubygems_version: 1.8.25
210
+ rubygems_version: 2.0.14
233
211
  signing_key:
234
- specification_version: 3
212
+ specification_version: 4
235
213
  summary: Easily encode MP3 files using the LAME MP3 encoder.
236
214
  test_files:
237
215
  - spec/buffer_spec.rb