dtas 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gemtest +0 -0
- data/.gitignore +9 -0
- data/.rsync_doc +3 -0
- data/COPYING +674 -0
- data/Documentation/.gitignore +3 -0
- data/Documentation/GNUmakefile +46 -0
- data/Documentation/dtas-console.txt +42 -0
- data/Documentation/dtas-ctl.txt +64 -0
- data/Documentation/dtas-cueedit.txt +24 -0
- data/Documentation/dtas-enq.txt +29 -0
- data/Documentation/dtas-msinkctl.txt +45 -0
- data/Documentation/dtas-player.txt +110 -0
- data/Documentation/dtas-player_effects.txt +45 -0
- data/Documentation/dtas-player_protocol.txt +181 -0
- data/Documentation/dtas-sinkedit.txt +41 -0
- data/Documentation/dtas-sourceedit.txt +33 -0
- data/Documentation/dtas-xdelay.txt +57 -0
- data/Documentation/troubleshooting.txt +13 -0
- data/GIT-VERSION-GEN +30 -0
- data/GNUmakefile +9 -0
- data/HACKING +12 -0
- data/INSTALL +53 -0
- data/README +103 -0
- data/Rakefile +97 -0
- data/TODO +4 -0
- data/bin/dtas-console +160 -0
- data/bin/dtas-ctl +10 -0
- data/bin/dtas-cueedit +78 -0
- data/bin/dtas-enq +13 -0
- data/bin/dtas-msinkctl +51 -0
- data/bin/dtas-player +34 -0
- data/bin/dtas-sinkedit +58 -0
- data/bin/dtas-sourceedit +48 -0
- data/bin/dtas-xdelay +85 -0
- data/dtas-linux.gemspec +18 -0
- data/dtas-mpris.gemspec +16 -0
- data/examples/dtas_state.yml +18 -0
- data/lib/dtas.rb +7 -0
- data/lib/dtas/buffer.rb +90 -0
- data/lib/dtas/buffer/read_write.rb +102 -0
- data/lib/dtas/buffer/splice.rb +142 -0
- data/lib/dtas/command.rb +43 -0
- data/lib/dtas/compat_onenine.rb +18 -0
- data/lib/dtas/disclaimer.rb +18 -0
- data/lib/dtas/format.rb +151 -0
- data/lib/dtas/pipe.rb +39 -0
- data/lib/dtas/player.rb +393 -0
- data/lib/dtas/player/client_handler.rb +463 -0
- data/lib/dtas/process.rb +87 -0
- data/lib/dtas/replaygain.rb +41 -0
- data/lib/dtas/rg_state.rb +99 -0
- data/lib/dtas/serialize.rb +9 -0
- data/lib/dtas/sigevent.rb +10 -0
- data/lib/dtas/sigevent/efd.rb +20 -0
- data/lib/dtas/sigevent/pipe.rb +28 -0
- data/lib/dtas/sink.rb +121 -0
- data/lib/dtas/source.rb +147 -0
- data/lib/dtas/source/command.rb +40 -0
- data/lib/dtas/source/common.rb +14 -0
- data/lib/dtas/source/mp3.rb +37 -0
- data/lib/dtas/state_file.rb +33 -0
- data/lib/dtas/unix_accepted.rb +76 -0
- data/lib/dtas/unix_client.rb +51 -0
- data/lib/dtas/unix_server.rb +110 -0
- data/lib/dtas/util.rb +15 -0
- data/lib/dtas/writable_iter.rb +22 -0
- data/perl/dtas-graph +129 -0
- data/pkg.mk +26 -0
- data/setup.rb +1586 -0
- data/test/covshow.rb +30 -0
- data/test/helper.rb +76 -0
- data/test/player_integration.rb +121 -0
- data/test/test_buffer.rb +216 -0
- data/test/test_format.rb +61 -0
- data/test/test_format_change.rb +49 -0
- data/test/test_player.rb +47 -0
- data/test/test_player_client_handler.rb +86 -0
- data/test/test_player_integration.rb +220 -0
- data/test/test_rg_integration.rb +117 -0
- data/test/test_rg_state.rb +32 -0
- data/test/test_sink.rb +32 -0
- data/test/test_sink_tee_integration.rb +34 -0
- data/test/test_source.rb +102 -0
- data/test/test_unixserver.rb +66 -0
- data/test/test_util.rb +15 -0
- metadata +208 -0
@@ -0,0 +1,32 @@
|
|
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/rg_state'
|
6
|
+
|
7
|
+
class TestRGState < Minitest::Unit::TestCase
|
8
|
+
|
9
|
+
def test_rg_state
|
10
|
+
rg = DTAS::RGState.new
|
11
|
+
assert_equal({}, rg.to_hsh)
|
12
|
+
rg.preamp = 0.1
|
13
|
+
assert_equal({"preamp" => 0.1}, rg.to_hsh)
|
14
|
+
rg.preamp = 0
|
15
|
+
assert_equal({}, rg.to_hsh)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_load
|
19
|
+
rg = DTAS::RGState.load("preamp" => 0.666)
|
20
|
+
assert_equal({"preamp" => 0.666}, rg.to_hsh)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_mode_set
|
24
|
+
rg = DTAS::RGState.new
|
25
|
+
orig = rg.mode
|
26
|
+
assert_equal DTAS::RGState::RG_DEFAULT["mode"], orig
|
27
|
+
%w(album_gain track_gain album_peak track_peak).each do |t|
|
28
|
+
rg.mode = t
|
29
|
+
assert_equal t, rg.mode
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/test/test_sink.rb
ADDED
@@ -0,0 +1,32 @@
|
|
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/sink'
|
6
|
+
require 'yaml'
|
7
|
+
|
8
|
+
class TestSink < Minitest::Unit::TestCase
|
9
|
+
def test_serialize_reload
|
10
|
+
sink = DTAS::Sink.new
|
11
|
+
sink.name = "DAC"
|
12
|
+
hash = sink.to_hsh
|
13
|
+
assert_kind_of Hash, hash
|
14
|
+
refute_match(%r{ruby}i, hash.to_yaml, "ruby guts exposed: #{hash}")
|
15
|
+
|
16
|
+
s2 = DTAS::Sink.load(hash)
|
17
|
+
assert_equal sink.to_hsh, s2.to_hsh
|
18
|
+
assert_equal hash, s2.to_hsh
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_name
|
22
|
+
sink = DTAS::Sink.new
|
23
|
+
sink.name = "dac1"
|
24
|
+
assert_equal({"name" => "dac1"}, sink.to_hsh)
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_inactive_load
|
28
|
+
orig = { "active" => false }.freeze
|
29
|
+
tmp = orig.to_yaml
|
30
|
+
assert_equal orig, YAML.load(tmp)
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,34 @@
|
|
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/player_integration'
|
5
|
+
class TestSinkTeeIntegration < Minitest::Unit::TestCase
|
6
|
+
include PlayerIntegration
|
7
|
+
|
8
|
+
def test_tee_integration
|
9
|
+
s = client_socket
|
10
|
+
default_sink_pid(s)
|
11
|
+
tee_pid = Tempfile.new(%w(dtas-test .pid))
|
12
|
+
orig = Tempfile.new(%w(orig .junk))
|
13
|
+
ajunk = Tempfile.new(%w(a .junk))
|
14
|
+
bjunk = Tempfile.new(%w(b .junk))
|
15
|
+
cmd = "echo $$ > #{tee_pid.path}; " \
|
16
|
+
"cat /dev/fd/a > #{ajunk.path} & " \
|
17
|
+
"cat /dev/fd/b > #{bjunk.path}; wait"
|
18
|
+
s.send("sink ed split active=true command='#{cmd}'", Socket::MSG_EOR)
|
19
|
+
assert_equal("OK", s.readpartial(666))
|
20
|
+
pluck = "sox -n $SOXFMT - synth 3 pluck | tee #{orig.path}"
|
21
|
+
s.send("enq-cmd \"#{pluck}\"", Socket::MSG_EOR)
|
22
|
+
assert_equal "OK", s.readpartial(666)
|
23
|
+
|
24
|
+
wait_files_not_empty(tee_pid)
|
25
|
+
pid = read_pid_file(tee_pid)
|
26
|
+
dethrottle_decoder(s)
|
27
|
+
wait_pid_dead(pid)
|
28
|
+
assert_equal ajunk.size, bjunk.size
|
29
|
+
assert_equal orig.size, bjunk.size
|
30
|
+
assert_equal ajunk.read, bjunk.read
|
31
|
+
bjunk.rewind
|
32
|
+
assert_equal orig.read, bjunk.read
|
33
|
+
end
|
34
|
+
end
|
data/test/test_source.rb
ADDED
@@ -0,0 +1,102 @@
|
|
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'
|
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.new(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.new(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.new(*%W(#{tmp.path} 5s))
|
76
|
+
assert_equal 5, source.offset_samples
|
77
|
+
|
78
|
+
source = DTAS::Source.new(*%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.new(*%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.new(*%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.new(*%W(#{tmp.path} 441s))
|
94
|
+
assert_equal 10000.0, source.offset_us
|
95
|
+
|
96
|
+
source = DTAS::Source.new(*%W(#{tmp.path} 22050s))
|
97
|
+
assert_equal 500000.0, source.offset_us
|
98
|
+
|
99
|
+
source = DTAS::Source.new(tmp.path, '1')
|
100
|
+
assert_equal 1000000.0, source.offset_us
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,66 @@
|
|
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 'tempfile'
|
6
|
+
require 'dtas/unix_server'
|
7
|
+
require 'stringio'
|
8
|
+
|
9
|
+
class TestUNIXServer < Minitest::Unit::TestCase
|
10
|
+
def setup
|
11
|
+
@tmp = Tempfile.new(%w(dtas-unix_server-test .sock))
|
12
|
+
File.unlink(@tmp.path)
|
13
|
+
@clients = []
|
14
|
+
@srv = DTAS::UNIXServer.new(@tmp.path)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_close
|
18
|
+
assert File.exist?(@tmp.path)
|
19
|
+
assert_nil @srv.close
|
20
|
+
refute File.exist?(@tmp.path)
|
21
|
+
end
|
22
|
+
|
23
|
+
def teardown
|
24
|
+
@clients.each { |io| io.close unless io.closed? }
|
25
|
+
if File.exist?(@tmp.path)
|
26
|
+
@tmp.close!
|
27
|
+
else
|
28
|
+
@tmp.close
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def new_client
|
33
|
+
c = Socket.new(:AF_UNIX, :SEQPACKET, 0)
|
34
|
+
@clients << c
|
35
|
+
c.connect(Socket.pack_sockaddr_un(@tmp.path))
|
36
|
+
c
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_server_loop
|
40
|
+
client = new_client
|
41
|
+
@srv.run_once # nothing
|
42
|
+
msgs = []
|
43
|
+
clients = []
|
44
|
+
client.send("HELLO", Socket::MSG_EOR)
|
45
|
+
@srv.run_once do |c, msg|
|
46
|
+
clients << c
|
47
|
+
msgs << msg
|
48
|
+
end
|
49
|
+
assert_equal %w(HELLO), msgs, clients.inspect
|
50
|
+
assert_equal 1, clients.size
|
51
|
+
c = clients[0]
|
52
|
+
c.emit "HIHI"
|
53
|
+
assert_equal "HIHI", client.recv(4)
|
54
|
+
|
55
|
+
err = nil
|
56
|
+
500.times do
|
57
|
+
rc = c.emit "SPAM"
|
58
|
+
case rc
|
59
|
+
when StandardError
|
60
|
+
err = rc
|
61
|
+
break
|
62
|
+
end
|
63
|
+
end
|
64
|
+
assert_kind_of RuntimeError, err
|
65
|
+
end
|
66
|
+
end
|
data/test/test_util.rb
ADDED
@@ -0,0 +1,15 @@
|
|
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/util'
|
6
|
+
|
7
|
+
class TestUtil < Minitest::Unit::TestCase
|
8
|
+
include DTAS::Util
|
9
|
+
def test_util
|
10
|
+
orig = 6.0
|
11
|
+
lin = db_to_linear(orig)
|
12
|
+
db = linear_to_db(lin)
|
13
|
+
assert_in_delta orig, db, 0.00000001
|
14
|
+
end
|
15
|
+
end
|
metadata
ADDED
@@ -0,0 +1,208 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dtas
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Eric Wong
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-08-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rdoc
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: hoe
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.6'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.6'
|
41
|
+
description: '["Free Software command-line tools for audio playback, mastering, and\nwhatever
|
42
|
+
else related to audio. dtas follows the worse-is-better\nphilosophy and acts as
|
43
|
+
duct tape to combine existing command-line tools\nfor flexibility and ease-of-development. dtas
|
44
|
+
is currently implemented\nin Ruby (and some embedded shell), but may use other languages
|
45
|
+
in the\nfuture."]'
|
46
|
+
email:
|
47
|
+
- e@80x24.org
|
48
|
+
executables:
|
49
|
+
- dtas-console
|
50
|
+
- dtas-ctl
|
51
|
+
- dtas-cueedit
|
52
|
+
- dtas-enq
|
53
|
+
- dtas-msinkctl
|
54
|
+
- dtas-player
|
55
|
+
- dtas-sinkedit
|
56
|
+
- dtas-sourceedit
|
57
|
+
- dtas-xdelay
|
58
|
+
extensions: []
|
59
|
+
extra_rdoc_files:
|
60
|
+
- Documentation/dtas-console.txt
|
61
|
+
- Documentation/dtas-ctl.txt
|
62
|
+
- Documentation/dtas-cueedit.txt
|
63
|
+
- Documentation/dtas-enq.txt
|
64
|
+
- Documentation/dtas-msinkctl.txt
|
65
|
+
- Documentation/dtas-player.txt
|
66
|
+
- Documentation/dtas-player_effects.txt
|
67
|
+
- Documentation/dtas-player_protocol.txt
|
68
|
+
- Documentation/dtas-sinkedit.txt
|
69
|
+
- Documentation/dtas-sourceedit.txt
|
70
|
+
- Documentation/dtas-xdelay.txt
|
71
|
+
- Documentation/troubleshooting.txt
|
72
|
+
files:
|
73
|
+
- .gitignore
|
74
|
+
- .rsync_doc
|
75
|
+
- COPYING
|
76
|
+
- Documentation/.gitignore
|
77
|
+
- Documentation/GNUmakefile
|
78
|
+
- Documentation/dtas-console.txt
|
79
|
+
- Documentation/dtas-ctl.txt
|
80
|
+
- Documentation/dtas-cueedit.txt
|
81
|
+
- Documentation/dtas-enq.txt
|
82
|
+
- Documentation/dtas-msinkctl.txt
|
83
|
+
- Documentation/dtas-player.txt
|
84
|
+
- Documentation/dtas-player_effects.txt
|
85
|
+
- Documentation/dtas-player_protocol.txt
|
86
|
+
- Documentation/dtas-sinkedit.txt
|
87
|
+
- Documentation/dtas-sourceedit.txt
|
88
|
+
- Documentation/dtas-xdelay.txt
|
89
|
+
- Documentation/troubleshooting.txt
|
90
|
+
- GIT-VERSION-GEN
|
91
|
+
- GNUmakefile
|
92
|
+
- HACKING
|
93
|
+
- INSTALL
|
94
|
+
- README
|
95
|
+
- Rakefile
|
96
|
+
- TODO
|
97
|
+
- bin/dtas-console
|
98
|
+
- bin/dtas-ctl
|
99
|
+
- bin/dtas-cueedit
|
100
|
+
- bin/dtas-enq
|
101
|
+
- bin/dtas-msinkctl
|
102
|
+
- bin/dtas-player
|
103
|
+
- bin/dtas-sinkedit
|
104
|
+
- bin/dtas-sourceedit
|
105
|
+
- bin/dtas-xdelay
|
106
|
+
- dtas-linux.gemspec
|
107
|
+
- dtas-mpris.gemspec
|
108
|
+
- examples/dtas_state.yml
|
109
|
+
- lib/dtas.rb
|
110
|
+
- lib/dtas/buffer.rb
|
111
|
+
- lib/dtas/buffer/read_write.rb
|
112
|
+
- lib/dtas/buffer/splice.rb
|
113
|
+
- lib/dtas/command.rb
|
114
|
+
- lib/dtas/compat_onenine.rb
|
115
|
+
- lib/dtas/disclaimer.rb
|
116
|
+
- lib/dtas/format.rb
|
117
|
+
- lib/dtas/pipe.rb
|
118
|
+
- lib/dtas/player.rb
|
119
|
+
- lib/dtas/player/client_handler.rb
|
120
|
+
- lib/dtas/process.rb
|
121
|
+
- lib/dtas/replaygain.rb
|
122
|
+
- lib/dtas/rg_state.rb
|
123
|
+
- lib/dtas/serialize.rb
|
124
|
+
- lib/dtas/sigevent.rb
|
125
|
+
- lib/dtas/sigevent/efd.rb
|
126
|
+
- lib/dtas/sigevent/pipe.rb
|
127
|
+
- lib/dtas/sink.rb
|
128
|
+
- lib/dtas/source.rb
|
129
|
+
- lib/dtas/source/command.rb
|
130
|
+
- lib/dtas/source/common.rb
|
131
|
+
- lib/dtas/source/mp3.rb
|
132
|
+
- lib/dtas/state_file.rb
|
133
|
+
- lib/dtas/unix_accepted.rb
|
134
|
+
- lib/dtas/unix_client.rb
|
135
|
+
- lib/dtas/unix_server.rb
|
136
|
+
- lib/dtas/util.rb
|
137
|
+
- lib/dtas/writable_iter.rb
|
138
|
+
- perl/dtas-graph
|
139
|
+
- pkg.mk
|
140
|
+
- setup.rb
|
141
|
+
- test/covshow.rb
|
142
|
+
- test/helper.rb
|
143
|
+
- test/player_integration.rb
|
144
|
+
- test/test_buffer.rb
|
145
|
+
- test/test_format.rb
|
146
|
+
- test/test_format_change.rb
|
147
|
+
- test/test_player.rb
|
148
|
+
- test/test_player_client_handler.rb
|
149
|
+
- test/test_player_integration.rb
|
150
|
+
- test/test_rg_integration.rb
|
151
|
+
- test/test_rg_state.rb
|
152
|
+
- test/test_sink.rb
|
153
|
+
- test/test_sink_tee_integration.rb
|
154
|
+
- test/test_source.rb
|
155
|
+
- test/test_unixserver.rb
|
156
|
+
- test/test_util.rb
|
157
|
+
- NEWS
|
158
|
+
- lib/dtas/version.rb
|
159
|
+
- man/dtas-console.1
|
160
|
+
- man/dtas-ctl.1
|
161
|
+
- man/dtas-enq.1
|
162
|
+
- man/dtas-msinkctl.1
|
163
|
+
- man/dtas-player.1
|
164
|
+
- man/dtas-player_protocol.7
|
165
|
+
- man/dtas-sinkedit.1
|
166
|
+
- man/dtas-sourceedit.1
|
167
|
+
- man/dtas-xdelay.1
|
168
|
+
- .gemtest
|
169
|
+
homepage: http://dtas.80x24.org/
|
170
|
+
licenses:
|
171
|
+
- GPLv3+
|
172
|
+
metadata: {}
|
173
|
+
post_install_message:
|
174
|
+
rdoc_options:
|
175
|
+
- --main
|
176
|
+
- README
|
177
|
+
require_paths:
|
178
|
+
- lib
|
179
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
180
|
+
requirements:
|
181
|
+
- - '>='
|
182
|
+
- !ruby/object:Gem::Version
|
183
|
+
version: '0'
|
184
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - '>='
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: '0'
|
189
|
+
requirements: []
|
190
|
+
rubyforge_project: dtas
|
191
|
+
rubygems_version: 2.0.3
|
192
|
+
signing_key:
|
193
|
+
specification_version: 4
|
194
|
+
summary: dtas
|
195
|
+
test_files:
|
196
|
+
- test/test_util.rb
|
197
|
+
- test/test_sink_tee_integration.rb
|
198
|
+
- test/test_unixserver.rb
|
199
|
+
- test/test_source.rb
|
200
|
+
- test/test_player.rb
|
201
|
+
- test/test_format_change.rb
|
202
|
+
- test/test_rg_integration.rb
|
203
|
+
- test/test_buffer.rb
|
204
|
+
- test/test_format.rb
|
205
|
+
- test/test_player_integration.rb
|
206
|
+
- test/test_player_client_handler.rb
|
207
|
+
- test/test_rg_state.rb
|
208
|
+
- test/test_sink.rb
|