lame 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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