dtas 0.0.0 → 0.1.I
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 +4 -4
- data/.gitignore +1 -0
- data/Documentation/dtas-console.txt +15 -0
- data/Documentation/dtas-player_protocol.txt +5 -3
- data/Documentation/dtas-sourceedit.txt +14 -7
- data/GIT-VERSION-GEN +3 -3
- data/INSTALL +3 -3
- data/README +6 -5
- data/Rakefile +16 -7
- data/bin/dtas-console +48 -3
- data/bin/dtas-cueedit +1 -1
- data/bin/dtas-sinkedit +12 -28
- data/bin/dtas-sourceedit +15 -30
- data/lib/dtas.rb +1 -1
- data/lib/dtas/command.rb +0 -5
- data/lib/dtas/compat_onenine.rb +2 -2
- data/lib/dtas/disclaimer.rb +4 -3
- data/lib/dtas/edit_client.rb +48 -0
- data/lib/dtas/format.rb +2 -9
- data/lib/dtas/player.rb +64 -28
- data/lib/dtas/player/client_handler.rb +39 -20
- data/lib/dtas/process.rb +16 -15
- data/lib/dtas/replaygain.rb +19 -3
- data/lib/dtas/sink.rb +1 -2
- data/lib/dtas/source.rb +1 -141
- data/lib/dtas/source/av.rb +29 -0
- data/lib/dtas/source/av_ff_common.rb +127 -0
- data/lib/dtas/source/{command.rb → cmd.rb} +1 -1
- data/lib/dtas/source/ff.rb +30 -0
- data/lib/dtas/source/file.rb +94 -0
- data/lib/dtas/source/{mp3.rb → mp3gain.rb} +1 -1
- data/lib/dtas/source/sox.rb +114 -0
- data/lib/dtas/unix_client.rb +1 -9
- data/test/player_integration.rb +5 -17
- data/test/test_format.rb +10 -14
- data/test/test_format_change.rb +4 -8
- data/test/test_player_integration.rb +50 -62
- data/test/test_process.rb +33 -0
- data/test/test_rg_integration.rb +45 -35
- data/test/test_sink_pipe_size.rb +20 -0
- data/test/test_sink_tee_integration.rb +2 -4
- data/test/{test_source.rb → test_source_av.rb} +16 -16
- data/test/test_source_sox.rb +115 -0
- metadata +23 -12
- data/.rsync_doc +0 -3
@@ -0,0 +1,33 @@
|
|
1
|
+
# -*- encoding: binary -*-
|
2
|
+
# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net>
|
3
|
+
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
4
|
+
require './test/helper'
|
5
|
+
require 'dtas/process'
|
6
|
+
class TestProcess < Minitest::Unit::TestCase
|
7
|
+
include DTAS::Process
|
8
|
+
|
9
|
+
def test_qx_env
|
10
|
+
assert_equal "WORLD\n", qx({"HELLO" => "WORLD"}, 'echo $HELLO')
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_qx_err
|
14
|
+
err = "/dev/null"
|
15
|
+
assert_equal "", qx('echo HELLO >&2', err: err)
|
16
|
+
assert_equal "/dev/null", err
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_qx_err_str
|
20
|
+
s = ""
|
21
|
+
assert_equal "", qx('echo HELLO >&2', err_str: s)
|
22
|
+
assert_equal "HELLO\n", s
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_qx_raise
|
26
|
+
assert_raises(RuntimeError) { qx('false') }
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_qx_no_raise
|
30
|
+
status = qx('false', no_raise: true)
|
31
|
+
refute status.success?, status.inspect
|
32
|
+
end
|
33
|
+
end
|
data/test/test_rg_integration.rb
CHANGED
@@ -28,23 +28,20 @@ class TestRgIntegration < Minitest::Unit::TestCase
|
|
28
28
|
dump_pid = Tempfile.new(%w(dump .pid))
|
29
29
|
default_pid = default_sink_pid(s)
|
30
30
|
dump_cmd = "echo $$ > #{dump_pid.path}; sox $SOXFMT - #{dumper.path}"
|
31
|
-
s.
|
32
|
-
assert_equal("OK", s.readpartial(666))
|
31
|
+
s.req_ok("sink ed dump active=true command='#{dump_cmd}'")
|
33
32
|
|
34
33
|
# start playback!
|
35
|
-
s.
|
36
|
-
assert_equal "OK", s.readpartial(666)
|
34
|
+
s.req_ok("enq \"#{pluck.path}\"")
|
37
35
|
|
38
36
|
# wait for playback to start
|
39
37
|
yaml = cur = nil
|
40
38
|
Timeout.timeout(5) do
|
41
39
|
begin
|
42
|
-
s.
|
43
|
-
cur = YAML.load(yaml = s.readpartial(1666))
|
40
|
+
cur = YAML.load(yaml = s.req("current"))
|
44
41
|
end while cur["current_offset"] == 0 && sleep(0.01)
|
45
42
|
end
|
46
43
|
|
47
|
-
|
44
|
+
assert_empty cur["current"]["env"]["RGFX"]
|
48
45
|
|
49
46
|
assert_equal DTAS::Format.new.rate * len, cur["current_expect"]
|
50
47
|
|
@@ -52,12 +49,11 @@ class TestRgIntegration < Minitest::Unit::TestCase
|
|
52
49
|
pid = read_pid_file(dump_pid)
|
53
50
|
|
54
51
|
check_gain = proc do |expect, mode|
|
55
|
-
s.
|
56
|
-
assert_equal "OK", s.readpartial(666)
|
52
|
+
s.req_ok("rg mode=#{mode}")
|
57
53
|
Timeout.timeout(5) do
|
58
54
|
begin
|
59
|
-
s.
|
60
|
-
cur = YAML.load(yaml
|
55
|
+
yaml = s.req("current")
|
56
|
+
cur = YAML.load(yaml)
|
61
57
|
end while cur["current"]["env"]["RGFX"] !~ expect && sleep(0.01)
|
62
58
|
end
|
63
59
|
assert_match expect, cur["current"]["env"]["RGFX"]
|
@@ -68,40 +64,28 @@ class TestRgIntegration < Minitest::Unit::TestCase
|
|
68
64
|
check_gain.call(%r{vol 1\.3}, "track_peak")
|
69
65
|
check_gain.call(%r{vol 1\.0}, "album_peak")
|
70
66
|
|
71
|
-
s.
|
72
|
-
|
73
|
-
s.send("rg", Socket::MSG_EOR)
|
74
|
-
rg = YAML.load(yaml = s.readpartial(3666))
|
67
|
+
s.req_ok("rg preamp+=1")
|
68
|
+
rg = YAML.load(yaml = s.req("rg"))
|
75
69
|
assert_equal 1, rg["preamp"]
|
76
70
|
|
77
|
-
s.
|
78
|
-
|
79
|
-
s.send("rg", Socket::MSG_EOR)
|
80
|
-
rg = YAML.load(yaml = s.readpartial(3666))
|
71
|
+
s.req_ok("rg preamp-=1")
|
72
|
+
rg = YAML.load(yaml = s.req("rg"))
|
81
73
|
assert_nil rg["preamp"]
|
82
74
|
|
83
|
-
s.
|
84
|
-
|
85
|
-
s.send("rg", Socket::MSG_EOR)
|
86
|
-
rg = YAML.load(yaml = s.readpartial(3666))
|
75
|
+
s.req_ok("rg preamp=2")
|
76
|
+
rg = YAML.load(yaml = s.req("rg"))
|
87
77
|
assert_equal 2, rg["preamp"]
|
88
78
|
|
89
|
-
s.
|
90
|
-
|
91
|
-
s.send("rg", Socket::MSG_EOR)
|
92
|
-
rg = YAML.load(yaml = s.readpartial(3666))
|
79
|
+
s.req_ok("rg preamp-=0.3")
|
80
|
+
rg = YAML.load(yaml = s.req("rg"))
|
93
81
|
assert_equal 1.7, rg["preamp"]
|
94
82
|
|
95
|
-
s.
|
96
|
-
|
97
|
-
s.send("rg", Socket::MSG_EOR)
|
98
|
-
rg = YAML.load(yaml = s.readpartial(3666))
|
83
|
+
s.req_ok("rg preamp-=-0.3")
|
84
|
+
rg = YAML.load(yaml = s.req("rg"))
|
99
85
|
assert_equal 2.0, rg["preamp"]
|
100
86
|
|
101
|
-
s.
|
102
|
-
|
103
|
-
s.send("rg", Socket::MSG_EOR)
|
104
|
-
rg = YAML.load(yaml = s.readpartial(3666))
|
87
|
+
s.req_ok("rg preamp-=+0.3")
|
88
|
+
rg = YAML.load(yaml = s.req("rg"))
|
105
89
|
assert_equal 1.7, rg["preamp"]
|
106
90
|
|
107
91
|
dethrottle_decoder(s)
|
@@ -114,4 +98,30 @@ class TestRgIntegration < Minitest::Unit::TestCase
|
|
114
98
|
|
115
99
|
stop_playback(default_pid, s)
|
116
100
|
end
|
101
|
+
|
102
|
+
def test_rg_env_in_source
|
103
|
+
s = client_socket
|
104
|
+
s.req_ok("rg mode=album_gain")
|
105
|
+
pluck, _ = tmp_pluck
|
106
|
+
cmd = DTAS::Source::Sox::SOX_DEFAULTS["command"]
|
107
|
+
fifo = tmpfifo
|
108
|
+
s.req_ok("source ed sox command='env > #{fifo}; #{cmd}'")
|
109
|
+
s.req_ok("sink ed default command='cat >/dev/null' active=true")
|
110
|
+
s.req_ok(%W(enq #{pluck.path}))
|
111
|
+
|
112
|
+
rg = {}
|
113
|
+
File.readlines(fifo).each do |line|
|
114
|
+
line =~ /\AREPLAYGAIN_/ or next
|
115
|
+
k, v = line.chomp!.split(/=/)
|
116
|
+
rg[k] = v
|
117
|
+
end
|
118
|
+
expect = {
|
119
|
+
"REPLAYGAIN_TRACK_GAIN" => "-2",
|
120
|
+
"REPLAYGAIN_ALBUM_GAIN" => "-3.0",
|
121
|
+
"REPLAYGAIN_TRACK_PEAK" => "0.666",
|
122
|
+
"REPLAYGAIN_ALBUM_PEAK" => "0.999",
|
123
|
+
"REPLAYGAIN_REFERENCE_LOUDNESS" => nil
|
124
|
+
}
|
125
|
+
assert_equal expect, rg
|
126
|
+
end
|
117
127
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# -*- encoding: binary -*-
|
2
|
+
# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net>
|
3
|
+
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
4
|
+
begin
|
5
|
+
require 'io/splice'
|
6
|
+
require './test/player_integration'
|
7
|
+
class TestSinkPipeSizeIntegration < Minitest::Unit::TestCase
|
8
|
+
include PlayerIntegration
|
9
|
+
|
10
|
+
def test_sink_pipe_size_integration
|
11
|
+
s = client_socket
|
12
|
+
default_sink_pid(s)
|
13
|
+
s.req_ok("sink ed default pipe_size=0x1000")
|
14
|
+
s.req_ok("sink ed default pipe_size=0x10000")
|
15
|
+
assert_match %r{\AERR }, s.req("sink ed default pipe_size=")
|
16
|
+
s.req_ok("sink ed default pipe_size=4096")
|
17
|
+
end if IO.method_defined?(:pipe_size=)
|
18
|
+
end
|
19
|
+
rescue LoadError
|
20
|
+
end
|
@@ -15,11 +15,9 @@ class TestSinkTeeIntegration < Minitest::Unit::TestCase
|
|
15
15
|
cmd = "echo $$ > #{tee_pid.path}; " \
|
16
16
|
"cat /dev/fd/a > #{ajunk.path} & " \
|
17
17
|
"cat /dev/fd/b > #{bjunk.path}; wait"
|
18
|
-
s.
|
19
|
-
assert_equal("OK", s.readpartial(666))
|
18
|
+
s.req_ok("sink ed split active=true command='#{cmd}'")
|
20
19
|
pluck = "sox -n $SOXFMT - synth 3 pluck | tee #{orig.path}"
|
21
|
-
s.
|
22
|
-
assert_equal "OK", s.readpartial(666)
|
20
|
+
s.req_ok("enq-cmd \"#{pluck}\"")
|
23
21
|
|
24
22
|
wait_files_not_empty(tee_pid)
|
25
23
|
pid = read_pid_file(tee_pid)
|
@@ -2,10 +2,10 @@
|
|
2
2
|
# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net>
|
3
3
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
4
4
|
require './test/helper'
|
5
|
-
require 'dtas/source'
|
5
|
+
require 'dtas/source/av'
|
6
6
|
require 'tempfile'
|
7
7
|
|
8
|
-
class
|
8
|
+
class TestSourceAv < Minitest::Unit::TestCase
|
9
9
|
def teardown
|
10
10
|
@tempfiles.each { |tmp| tmp.close! }
|
11
11
|
end
|
@@ -31,10 +31,10 @@ class TestSource < Minitest::Unit::TestCase
|
|
31
31
|
return if `which metaflac`.strip.size == 0
|
32
32
|
tmp = new_file('flac') or return
|
33
33
|
|
34
|
-
source = DTAS::Source.new(tmp.path)
|
35
34
|
x(%W(metaflac --set-tag=FOO=BAR #{tmp.path}))
|
36
35
|
x(%W(metaflac --add-replay-gain #{tmp.path}))
|
37
|
-
|
36
|
+
source = DTAS::Source::Av.new.try(tmp.path)
|
37
|
+
assert_equal source.comments["FOO"], "BAR", source.inspect
|
38
38
|
rg = source.replaygain
|
39
39
|
assert_kind_of DTAS::ReplayGain, rg
|
40
40
|
assert_in_delta 0.0, rg.track_peak.to_f, 0.00000001
|
@@ -48,8 +48,6 @@ class TestSource < Minitest::Unit::TestCase
|
|
48
48
|
a = new_file('mp3') or return
|
49
49
|
b = new_file('mp3') or return
|
50
50
|
|
51
|
-
source = DTAS::Source.new(a.path)
|
52
|
-
|
53
51
|
# redirect stdout to /dev/null temporarily, mp3gain is noisy
|
54
52
|
File.open("/dev/null", "w") do |null|
|
55
53
|
old_out = $stdout.dup
|
@@ -62,6 +60,7 @@ class TestSource < Minitest::Unit::TestCase
|
|
62
60
|
end
|
63
61
|
end
|
64
62
|
|
63
|
+
source = DTAS::Source::Av.new.try(a.path)
|
65
64
|
rg = source.replaygain
|
66
65
|
assert_kind_of DTAS::ReplayGain, rg
|
67
66
|
assert_in_delta 0.0, rg.track_peak.to_f, 0.00000001
|
@@ -71,32 +70,33 @@ class TestSource < Minitest::Unit::TestCase
|
|
71
70
|
end
|
72
71
|
|
73
72
|
def test_offset
|
74
|
-
tmp = new_file('
|
75
|
-
source = DTAS::Source.new(*%W(#{tmp.path} 5s))
|
73
|
+
tmp = new_file('flac') or return
|
74
|
+
source = DTAS::Source::Av.new.try(*%W(#{tmp.path} 5s))
|
76
75
|
assert_equal 5, source.offset_samples
|
77
76
|
|
78
|
-
source = DTAS::Source.new(*%W(#{tmp.path} 1:00:00.5))
|
77
|
+
source = DTAS::Source::Av.new.try(*%W(#{tmp.path} 1:00:00.5))
|
79
78
|
expect = 1 * 60 * 60 * 44100 + (44100/2)
|
80
79
|
assert_equal expect, source.offset_samples
|
81
80
|
|
82
|
-
source = DTAS::Source.new(*%W(#{tmp.path} 1:10.5))
|
81
|
+
source = DTAS::Source::Av.new.try(*%W(#{tmp.path} 1:10.5))
|
83
82
|
expect = 1 * 60 * 44100 + (10 * 44100) + (44100/2)
|
84
83
|
assert_equal expect, source.offset_samples
|
85
84
|
|
86
|
-
source = DTAS::Source.new(*%W(#{tmp.path} 10.03))
|
85
|
+
source = DTAS::Source::Av.new.try(*%W(#{tmp.path} 10.03))
|
87
86
|
expect = (10 * 44100) + (44100 * 3/100.0)
|
88
87
|
assert_equal expect, source.offset_samples
|
89
88
|
end
|
90
89
|
|
91
90
|
def test_offset_us
|
92
|
-
tmp = new_file('
|
93
|
-
source = DTAS::Source.new(*%W(#{tmp.path} 441s))
|
91
|
+
tmp = new_file('flac') or return
|
92
|
+
source = DTAS::Source::Av.new.try(*%W(#{tmp.path} 441s))
|
94
93
|
assert_equal 10000.0, source.offset_us
|
95
94
|
|
96
|
-
source = DTAS::Source.new(*%W(#{tmp.path} 22050s))
|
95
|
+
source = DTAS::Source::Av.new.try(*%W(#{tmp.path} 22050s))
|
97
96
|
assert_equal 500000.0, source.offset_us
|
98
97
|
|
99
|
-
source = DTAS::Source.new(tmp.path, '1')
|
98
|
+
source = DTAS::Source::Av.new.try(tmp.path, '1')
|
100
99
|
assert_equal 1000000.0, source.offset_us
|
101
100
|
end
|
102
|
-
end
|
101
|
+
end unless `which avconv 2>/dev/null` =~ /avconv/ &&
|
102
|
+
`which avprobe 2>/dev/null` =~ /avprobe/
|
@@ -0,0 +1,115 @@
|
|
1
|
+
# -*- encoding: binary -*-
|
2
|
+
# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net>
|
3
|
+
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
4
|
+
require './test/helper'
|
5
|
+
require 'dtas/source/sox'
|
6
|
+
require 'tempfile'
|
7
|
+
|
8
|
+
class TestSource < Minitest::Unit::TestCase
|
9
|
+
def teardown
|
10
|
+
@tempfiles.each { |tmp| tmp.close! }
|
11
|
+
end
|
12
|
+
|
13
|
+
def setup
|
14
|
+
@tempfiles = []
|
15
|
+
end
|
16
|
+
|
17
|
+
def x(cmd)
|
18
|
+
system(*cmd)
|
19
|
+
assert $?.success?, cmd.inspect
|
20
|
+
end
|
21
|
+
|
22
|
+
def new_file(suffix)
|
23
|
+
tmp = Tempfile.new(%W(tmp .#{suffix}))
|
24
|
+
@tempfiles << tmp
|
25
|
+
cmd = %W(sox -r 44100 -b 16 -c 2 -n #{tmp.path} trim 0 1)
|
26
|
+
return tmp if system(*cmd)
|
27
|
+
nil
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_flac
|
31
|
+
return if `which metaflac`.strip.size == 0
|
32
|
+
tmp = new_file('flac') or return
|
33
|
+
|
34
|
+
source = DTAS::Source::Sox.new.try(tmp.path)
|
35
|
+
x(%W(metaflac --set-tag=FOO=BAR #{tmp.path}))
|
36
|
+
x(%W(metaflac --add-replay-gain #{tmp.path}))
|
37
|
+
assert_equal source.comments["FOO"], "BAR"
|
38
|
+
rg = source.replaygain
|
39
|
+
assert_kind_of DTAS::ReplayGain, rg
|
40
|
+
assert_in_delta 0.0, rg.track_peak.to_f, 0.00000001
|
41
|
+
assert_in_delta 0.0, rg.album_peak.to_f, 0.00000001
|
42
|
+
assert_operator rg.album_gain.to_f, :>, 1
|
43
|
+
assert_operator rg.track_gain.to_f, :>, 1
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_mp3gain
|
47
|
+
return if `which mp3gain`.strip.size == 0
|
48
|
+
a = new_file('mp3') or return
|
49
|
+
b = new_file('mp3') or return
|
50
|
+
|
51
|
+
source = DTAS::Source::Sox.new.try(a.path)
|
52
|
+
|
53
|
+
# redirect stdout to /dev/null temporarily, mp3gain is noisy
|
54
|
+
File.open("/dev/null", "w") do |null|
|
55
|
+
old_out = $stdout.dup
|
56
|
+
$stdout.reopen(null)
|
57
|
+
begin
|
58
|
+
x(%W(mp3gain -q #{a.path} #{b.path}))
|
59
|
+
ensure
|
60
|
+
$stdout.reopen(old_out)
|
61
|
+
old_out.close
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
rg = source.replaygain
|
66
|
+
assert_kind_of DTAS::ReplayGain, rg
|
67
|
+
assert_in_delta 0.0, rg.track_peak.to_f, 0.00000001
|
68
|
+
assert_in_delta 0.0, rg.album_peak.to_f, 0.00000001
|
69
|
+
assert_operator rg.album_gain.to_f, :>, 1
|
70
|
+
assert_operator rg.track_gain.to_f, :>, 1
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_offset
|
74
|
+
tmp = new_file('sox') or return
|
75
|
+
source = DTAS::Source::Sox.new.try(*%W(#{tmp.path} 5s))
|
76
|
+
assert_equal 5, source.offset_samples
|
77
|
+
|
78
|
+
source = DTAS::Source::Sox.new.try(*%W(#{tmp.path} 1:00:00.5))
|
79
|
+
expect = 1 * 60 * 60 * 44100 + (44100/2)
|
80
|
+
assert_equal expect, source.offset_samples
|
81
|
+
|
82
|
+
source = DTAS::Source::Sox.new.try(*%W(#{tmp.path} 1:10.5))
|
83
|
+
expect = 1 * 60 * 44100 + (10 * 44100) + (44100/2)
|
84
|
+
assert_equal expect, source.offset_samples
|
85
|
+
|
86
|
+
source = DTAS::Source::Sox.new.try(*%W(#{tmp.path} 10.03))
|
87
|
+
expect = (10 * 44100) + (44100 * 3/100.0)
|
88
|
+
assert_equal expect, source.offset_samples
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_offset_us
|
92
|
+
tmp = new_file('sox') or return
|
93
|
+
source = DTAS::Source::Sox.new.try(*%W(#{tmp.path} 441s))
|
94
|
+
assert_equal 10000.0, source.offset_us
|
95
|
+
|
96
|
+
source = DTAS::Source::Sox.new.try(*%W(#{tmp.path} 22050s))
|
97
|
+
assert_equal 500000.0, source.offset_us
|
98
|
+
|
99
|
+
source = DTAS::Source::Sox.new.try(tmp.path, '1')
|
100
|
+
assert_equal 1000000.0, source.offset_us
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_format_from_file
|
104
|
+
Tempfile.open(%w(tmp .wav)) do |tmp|
|
105
|
+
# generate an empty file with 1s of audio
|
106
|
+
cmd = %W(sox -r 96000 -b 24 -c 2 -n #{tmp.path} trim 0 1)
|
107
|
+
system(*cmd)
|
108
|
+
assert $?.success?, "#{cmd.inspect} failed: #$?"
|
109
|
+
fmt = DTAS::Source::Sox.new.try(tmp.path).format
|
110
|
+
assert_equal 96000, fmt.rate
|
111
|
+
assert_equal 2, fmt.channels
|
112
|
+
tmp.unlink
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dtas
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.I
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Wong
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rdoc
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '3.
|
33
|
+
version: '3.7'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '3.
|
40
|
+
version: '3.7'
|
41
41
|
description: '["Free Software command-line tools for audio playback, mastering, and\nwhatever
|
42
42
|
else related to audio. dtas follows the worse-is-better\nphilosophy and acts as
|
43
43
|
duct tape to combine existing command-line tools\nfor flexibility and ease-of-development. dtas
|
@@ -71,7 +71,6 @@ extra_rdoc_files:
|
|
71
71
|
- Documentation/troubleshooting.txt
|
72
72
|
files:
|
73
73
|
- .gitignore
|
74
|
-
- .rsync_doc
|
75
74
|
- COPYING
|
76
75
|
- Documentation/.gitignore
|
77
76
|
- Documentation/GNUmakefile
|
@@ -113,6 +112,7 @@ files:
|
|
113
112
|
- lib/dtas/command.rb
|
114
113
|
- lib/dtas/compat_onenine.rb
|
115
114
|
- lib/dtas/disclaimer.rb
|
115
|
+
- lib/dtas/edit_client.rb
|
116
116
|
- lib/dtas/format.rb
|
117
117
|
- lib/dtas/pipe.rb
|
118
118
|
- lib/dtas/player.rb
|
@@ -126,9 +126,14 @@ files:
|
|
126
126
|
- lib/dtas/sigevent/pipe.rb
|
127
127
|
- lib/dtas/sink.rb
|
128
128
|
- lib/dtas/source.rb
|
129
|
-
- lib/dtas/source/
|
129
|
+
- lib/dtas/source/av.rb
|
130
|
+
- lib/dtas/source/av_ff_common.rb
|
131
|
+
- lib/dtas/source/cmd.rb
|
130
132
|
- lib/dtas/source/common.rb
|
131
|
-
- lib/dtas/source/
|
133
|
+
- lib/dtas/source/ff.rb
|
134
|
+
- lib/dtas/source/file.rb
|
135
|
+
- lib/dtas/source/mp3gain.rb
|
136
|
+
- lib/dtas/source/sox.rb
|
132
137
|
- lib/dtas/state_file.rb
|
133
138
|
- lib/dtas/unix_accepted.rb
|
134
139
|
- lib/dtas/unix_client.rb
|
@@ -147,11 +152,14 @@ files:
|
|
147
152
|
- test/test_player.rb
|
148
153
|
- test/test_player_client_handler.rb
|
149
154
|
- test/test_player_integration.rb
|
155
|
+
- test/test_process.rb
|
150
156
|
- test/test_rg_integration.rb
|
151
157
|
- test/test_rg_state.rb
|
152
158
|
- test/test_sink.rb
|
159
|
+
- test/test_sink_pipe_size.rb
|
153
160
|
- test/test_sink_tee_integration.rb
|
154
|
-
- test/
|
161
|
+
- test/test_source_av.rb
|
162
|
+
- test/test_source_sox.rb
|
155
163
|
- test/test_unixserver.rb
|
156
164
|
- test/test_util.rb
|
157
165
|
- NEWS
|
@@ -183,24 +191,27 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
183
191
|
version: '0'
|
184
192
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
185
193
|
requirements:
|
186
|
-
- - '
|
194
|
+
- - '>'
|
187
195
|
- !ruby/object:Gem::Version
|
188
|
-
version:
|
196
|
+
version: 1.3.1
|
189
197
|
requirements: []
|
190
198
|
rubyforge_project: dtas
|
191
|
-
rubygems_version: 2.0.
|
199
|
+
rubygems_version: 2.1.0.rc.1
|
192
200
|
signing_key:
|
193
201
|
specification_version: 4
|
194
202
|
summary: dtas
|
195
203
|
test_files:
|
196
204
|
- test/test_util.rb
|
205
|
+
- test/test_process.rb
|
197
206
|
- test/test_sink_tee_integration.rb
|
198
207
|
- test/test_unixserver.rb
|
199
|
-
- test/
|
208
|
+
- test/test_source_av.rb
|
209
|
+
- test/test_source_sox.rb
|
200
210
|
- test/test_player.rb
|
201
211
|
- test/test_format_change.rb
|
202
212
|
- test/test_rg_integration.rb
|
203
213
|
- test/test_buffer.rb
|
214
|
+
- test/test_sink_pipe_size.rb
|
204
215
|
- test/test_format.rb
|
205
216
|
- test/test_player_integration.rb
|
206
217
|
- test/test_player_client_handler.rb
|