Class: DTAS::ReplayGain
- Inherits:
-
Object
- Object
- DTAS::ReplayGain
- Defined in:
- lib/dtas/replaygain.rb
Overview
Copyright © 2013, Eric Wong <[email protected]> License: GPLv3 or later (www.gnu.org/licenses/gpl-3.0.txt)
Represents ReplayGain metadata for a DTAS::Source cleanup/validate values to prevent malicious files from making us run arbitrary commands *_peak values are 0..inf (1.0 being full scale, but >1 is possible *_gain values are specified in dB
Constant Summary collapse
- ATTRS =
:nodoc:
%w(reference_loudness track_gain album_gain track_peak album_peak)
Class Method Summary collapse
Instance Method Summary collapse
- #check_float(val) ⇒ Object
- #check_gain(val) ⇒ Object
-
#initialize(comments) ⇒ ReplayGain
constructor
A new instance of ReplayGain.
Constructor Details
#initialize(comments) ⇒ ReplayGain
Returns a new instance of ReplayGain.
23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/dtas/replaygain.rb', line 23 def initialize(comments) comments or return # the replaygain standard specifies 89.0 dB, but maybe some apps are # different... @reference_loudness = check_gain(comments["REPLAYGAIN_REFERENCE_LOUDNESS"]) || "89.0" @track_gain = check_gain(comments["REPLAYGAIN_TRACK_GAIN"]) @album_gain = check_gain(comments["REPLAYGAIN_ALBUM_GAIN"]) @track_peak = check_float(comments["REPLAYGAIN_TRACK_PEAK"]) @album_peak = check_float(comments["REPLAYGAIN_ALBUM_PEAK"]) end |
Class Method Details
.new(comments) ⇒ Object
37 38 39 40 |
# File 'lib/dtas/replaygain.rb', line 37 def self.new(comments) tmp = super tmp.track_gain ? tmp : nil end |
Instance Method Details
#check_float(val) ⇒ Object
19 20 21 |
# File 'lib/dtas/replaygain.rb', line 19 def check_float(val) /(\d+(?:\.\d+)?)/ =~ val ? $1 : nil end |
#check_gain(val) ⇒ Object
15 16 17 |
# File 'lib/dtas/replaygain.rb', line 15 def check_gain(val) /([+-]?\d+(?:\.\d+)?)/ =~ val ? $1 : nil end |