dtas 0.0.0
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 +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
|