dtas 0.7.0 → 0.8.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 +4 -4
- data/.gitignore +1 -1
- data/Documentation/.gitignore +1 -1
- data/Documentation/GNUmakefile +1 -1
- data/Documentation/dtas-console.txt +1 -1
- data/Documentation/dtas-ctl.txt +1 -1
- data/Documentation/dtas-cueedit.txt +1 -1
- data/Documentation/dtas-enq.txt +1 -1
- data/Documentation/dtas-msinkctl.txt +1 -1
- data/Documentation/dtas-player.txt +1 -1
- data/Documentation/dtas-player_effects.txt +1 -1
- data/Documentation/dtas-player_protocol.txt +3 -3
- data/Documentation/dtas-player_sink_examples.txt +1 -1
- data/Documentation/dtas-sinkedit.txt +1 -1
- data/Documentation/dtas-sourceedit.txt +1 -1
- data/Documentation/dtas-splitfx.txt +1 -1
- data/Documentation/dtas-tl.txt +2 -1
- data/Documentation/dtas-xdelay.txt +1 -1
- data/GIT-VERSION-GEN +2 -2
- data/GNUmakefile +1 -1
- data/HACKING +1 -1
- data/INSTALL +5 -5
- data/README +1 -1
- data/Rakefile +2 -2
- data/TODO +1 -1
- data/bin/dtas-console +18 -3
- data/bin/dtas-ctl +1 -1
- data/bin/dtas-cueedit +1 -3
- data/bin/dtas-enq +2 -3
- data/bin/dtas-msinkctl +1 -1
- data/bin/dtas-partstats +1 -1
- data/bin/dtas-player +3 -4
- data/bin/dtas-sinkedit +1 -1
- data/bin/dtas-sourceedit +1 -1
- data/bin/dtas-splitfx +1 -1
- data/bin/dtas-tl +3 -3
- data/bin/dtas-xdelay +1 -1
- data/dtas-linux.gemspec +1 -1
- data/dtas-mpris.gemspec +1 -1
- data/dtas.gemspec +1 -1
- data/examples/trimfx.sample.yml +2 -5
- data/lib/dtas.rb +1 -1
- data/lib/dtas/buffer.rb +1 -1
- data/lib/dtas/buffer/read_write.rb +1 -1
- data/lib/dtas/buffer/splice.rb +1 -1
- data/lib/dtas/command.rb +1 -1
- data/lib/dtas/compat_onenine.rb +1 -1
- data/lib/dtas/compat_rbx.rb +1 -1
- data/lib/dtas/cue_index.rb +1 -1
- data/lib/dtas/disclaimer.rb +1 -1
- data/lib/dtas/edit_client.rb +1 -1
- data/lib/dtas/format.rb +1 -1
- data/lib/dtas/parse_time.rb +1 -1
- data/lib/dtas/partstats.rb +1 -1
- data/lib/dtas/pipe.rb +1 -1
- data/lib/dtas/player.rb +2 -2
- data/lib/dtas/player/client_handler.rb +5 -5
- data/lib/dtas/process.rb +1 -1
- data/lib/dtas/replaygain.rb +1 -1
- data/lib/dtas/rg_state.rb +1 -1
- data/lib/dtas/serialize.rb +1 -1
- data/lib/dtas/sigevent.rb +1 -1
- data/lib/dtas/sigevent/efd.rb +1 -1
- data/lib/dtas/sigevent/pipe.rb +1 -1
- data/lib/dtas/sink.rb +2 -2
- data/lib/dtas/source.rb +1 -1
- data/lib/dtas/source/av.rb +1 -1
- data/lib/dtas/source/av_ff_common.rb +1 -1
- data/lib/dtas/source/cmd.rb +1 -1
- data/lib/dtas/source/common.rb +1 -1
- data/lib/dtas/source/ff.rb +1 -1
- data/lib/dtas/source/file.rb +1 -1
- data/lib/dtas/source/mp3gain.rb +1 -1
- data/lib/dtas/source/sox.rb +1 -1
- data/lib/dtas/splitfx.rb +1 -1
- data/lib/dtas/state_file.rb +1 -1
- data/lib/dtas/tracklist.rb +1 -1
- data/lib/dtas/trimfx.rb +64 -3
- data/lib/dtas/unix_accepted.rb +3 -1
- data/lib/dtas/unix_client.rb +2 -2
- data/lib/dtas/unix_server.rb +8 -2
- data/lib/dtas/util.rb +1 -1
- data/lib/dtas/writable_iter.rb +1 -1
- data/lib/dtas/xs.rb +2 -2
- data/perl/dtas-graph +1 -1
- data/test/covshow.rb +1 -1
- data/test/helper.rb +24 -3
- data/test/player_integration.rb +1 -1
- data/test/test_buffer.rb +1 -1
- data/test/test_env.rb +1 -1
- data/test/test_format.rb +1 -1
- data/test/test_format_change.rb +1 -1
- data/test/test_player.rb +1 -1
- data/test/test_player_client_handler.rb +1 -1
- data/test/test_player_integration.rb +1 -1
- data/test/test_process.rb +1 -1
- data/test/test_rg_integration.rb +1 -1
- data/test/test_rg_state.rb +1 -1
- data/test/test_sink.rb +1 -1
- data/test/test_sink_pipe_size.rb +1 -1
- data/test/test_sink_tee_integration.rb +1 -1
- data/test/test_source_av.rb +1 -1
- data/test/test_source_sox.rb +1 -1
- data/test/test_splitfx.rb +8 -12
- data/test/test_tracklist.rb +1 -1
- data/test/test_trimfx.rb +33 -2
- data/test/test_unixserver.rb +1 -1
- data/test/test_util.rb +1 -1
- metadata +3 -5
- data/lib/dtas/fadefx.rb +0 -32
- data/test/test_fadefx.rb +0 -18
data/bin/dtas-xdelay
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
# Copyright (C) 2013, Eric Wong <
|
2
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
3
3
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
4
4
|
USAGE = "Usage: #$0 [-x FREQ] [-l] /dev/fd/LO /dev/fd/HI DELAY [DELAY ...]"
|
5
5
|
require 'optparse'
|
data/dtas-linux.gemspec
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
#
|
4
4
|
# this just declares dependencies to make gem installation a little easier
|
data/dtas-mpris.gemspec
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright 2013, Eric Wong <
|
1
|
+
# Copyright 2013-2014, Eric Wong <e@80x24.org> and all contributors.
|
2
2
|
# License: GPLv2 or later <http://www.gnu.org/licenses/gpl-2.0.txt>
|
3
3
|
# This is GPLv2+ instead of GPLv3+ because ruby-dbus is LGPLv2.1 (only)
|
4
4
|
Gem::Specification.new do |s|
|
data/dtas.gemspec
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
manifest = File.read('.gem-manifest').split(/\n/)
|
data/examples/trimfx.sample.yml
CHANGED
@@ -15,16 +15,13 @@ comments:
|
|
15
15
|
YEAR: 2013
|
16
16
|
track_start: 1
|
17
17
|
effects:
|
18
|
-
# the fade parameter sets the default fade for every subsequent effect
|
19
|
-
- fade=t1,t1;t1,t1 # fade-out-prev,fade-in-main;fade-out-main,fade-in-next
|
20
|
-
|
21
18
|
# the following commands are equivalent
|
22
|
-
- trim 52 =53 sh sox $SOXIN $SOXOUT $TRIMFX vol -6dB
|
19
|
+
- trim 52 =53 sh sox $SOXIN $SOXOUT $TRIMFX vol -6dB
|
23
20
|
- trim 52 1 sox vol -6dB # shorthand
|
24
21
|
|
25
22
|
# as are the following (for little endian machines)
|
26
23
|
- trim 52 1 eca -eadb:-6
|
27
24
|
- trim 52 1 sh sox $SOXIN $SOX2ECA $TRIMFX | ecasound $ECAFMT
|
28
|
-
-i stdin -o stdout -eadb:-6 | sox $ECA2SOX - $SOXOUT
|
25
|
+
-i stdin -o stdout -eadb:-6 | sox $ECA2SOX - $SOXOUT
|
29
26
|
# SOX2ECA='-tf32 -c$CHANNELS -r$RATE'
|
30
27
|
# ECAFMT='-f32_le,$CHANNELS,$RATE
|
data/lib/dtas.rb
CHANGED
data/lib/dtas/buffer.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require 'io/nonblock'
|
4
4
|
require_relative '../../dtas'
|
data/lib/dtas/buffer/splice.rb
CHANGED
data/lib/dtas/command.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
# common code for wrapping SoX/ecasound/... commands
|
4
4
|
require_relative 'serialize'
|
data/lib/dtas/compat_onenine.rb
CHANGED
data/lib/dtas/compat_rbx.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
|
4
4
|
# ref: https://github.com/rubysl/rubysl-io-wait/issues/1
|
data/lib/dtas/cue_index.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require_relative '../dtas'
|
4
4
|
class DTAS::CueIndex
|
data/lib/dtas/disclaimer.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# :enddoc:
|
2
|
-
# Copyright (C) 2013, Eric Wong <
|
2
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
3
3
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
4
4
|
DTAS_PROGNAME = File.basename($0)
|
5
5
|
DTAS_DISCLAIMER = <<EOF
|
data/lib/dtas/edit_client.rb
CHANGED
data/lib/dtas/format.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
# class represents an audio format (type/bits/channels/sample rate/...)
|
4
4
|
require_relative '../dtas'
|
data/lib/dtas/parse_time.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require_relative '../dtas'
|
4
4
|
module DTAS::ParseTime
|
data/lib/dtas/partstats.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- encoding: binary -*-
|
2
|
-
# Copyright (C) 2013, Eric Wong <
|
2
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
3
3
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
4
4
|
# Unlike the stuff for dtas-player, dtas-partstats is fairly tied to sox
|
5
5
|
require_relative '../dtas'
|
data/lib/dtas/pipe.rb
CHANGED
data/lib/dtas/player.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require 'yaml'
|
4
4
|
require 'shellwords'
|
@@ -52,7 +52,7 @@ class DTAS::Player # :nodoc:
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def source_map_reload
|
55
|
-
@sources = @source_map.values.sort_by
|
55
|
+
@sources = @source_map.values.sort_by(&:tryorder)
|
56
56
|
end
|
57
57
|
|
58
58
|
def wall(msg)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require_relative '../xs'
|
4
4
|
module DTAS::Player::ClientHandler # :nodoc:
|
@@ -583,7 +583,7 @@ module DTAS::Player::ClientHandler # :nodoc:
|
|
583
583
|
@queue.delete_if { |t| Array === t && t[0].object_id == track_id }
|
584
584
|
io.emit("OK")
|
585
585
|
when "get"
|
586
|
-
res = @tl.get_tracks(msg.map!
|
586
|
+
res = @tl.get_tracks(msg.map!(&:to_i))
|
587
587
|
res.map! { |tid, file| "#{tid}=#{file ? Shellwords.escape(file) : ''}" }
|
588
588
|
io.emit("#{res.size} #{res.join(' ')}")
|
589
589
|
when "tracks"
|
@@ -618,11 +618,11 @@ module DTAS::Player::ClientHandler # :nodoc:
|
|
618
618
|
def __bp_prev_next(io, msg, cur, bp)
|
619
619
|
case type = msg[1]
|
620
620
|
when nil, "track"
|
621
|
-
bp.keep_if
|
621
|
+
bp.keep_if(&:track?)
|
622
622
|
when "pregap"
|
623
|
-
bp.keep_if
|
623
|
+
bp.keep_if(&:pregap?)
|
624
624
|
when "subindex" # any subindex
|
625
|
-
bp.keep_if
|
625
|
+
bp.keep_if(&:subindex?)
|
626
626
|
when /\A\d+\z/ # exact subindex match
|
627
627
|
si = type.to_i
|
628
628
|
bp.keep_if { |ci| ci.index == si }
|
data/lib/dtas/process.rb
CHANGED
data/lib/dtas/replaygain.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
#
|
4
4
|
# Represents ReplayGain metadata for a DTAS::Source
|
data/lib/dtas/rg_state.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
#
|
4
4
|
# provides support for generating appropriate effects for ReplayGain
|
data/lib/dtas/serialize.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
module DTAS::Serialize # :nodoc:
|
4
4
|
def ivars_to_hash(ivars, rv = {})
|
data/lib/dtas/sigevent.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
begin
|
4
4
|
raise LoadError, "no eventfd with _DTAS_POSIX" if ENV["_DTAS_POSIX"]
|
data/lib/dtas/sigevent/efd.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
class DTAS::Sigevent < SleepyPenguin::EventFD # :nodoc:
|
4
4
|
include SleepyPenguin
|
data/lib/dtas/sigevent/pipe.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
class DTAS::Sigevent # :nodoc:
|
4
4
|
attr_reader :to_io
|
data/lib/dtas/sink.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require 'yaml'
|
4
4
|
require_relative '../dtas'
|
@@ -102,7 +102,7 @@ class DTAS::Sink # :nodoc:
|
|
102
102
|
end
|
103
103
|
|
104
104
|
@pid = dtas_spawn(format.to_env.merge!(@env), cmd, opts)
|
105
|
-
inputs.each_value
|
105
|
+
inputs.each_value(&:close)
|
106
106
|
rv
|
107
107
|
end
|
108
108
|
|
data/lib/dtas/source.rb
CHANGED
data/lib/dtas/source/av.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require_relative '../../dtas'
|
4
4
|
require_relative 'av_ff_common'
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require_relative '../../dtas'
|
4
4
|
require_relative '../source'
|
data/lib/dtas/source/cmd.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require_relative '../../dtas'
|
4
4
|
require_relative '../source'
|
data/lib/dtas/source/common.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
module DTAS::Source::Common # :nodoc:
|
4
4
|
attr_reader :dst_zero_byte
|
data/lib/dtas/source/ff.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require_relative '../../dtas'
|
4
4
|
require_relative 'av_ff_common'
|
data/lib/dtas/source/file.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require_relative '../../dtas'
|
4
4
|
require_relative '../source'
|
data/lib/dtas/source/mp3gain.rb
CHANGED
data/lib/dtas/source/sox.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require_relative '../../dtas'
|
4
4
|
require_relative '../source'
|
data/lib/dtas/splitfx.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
# Unlike the stuff for dtas-player, dtas-splitfx is fairly tied to sox
|
4
4
|
# (but we may still pipe to ecasound or anything else)
|
data/lib/dtas/state_file.rb
CHANGED
data/lib/dtas/tracklist.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require_relative '../dtas'
|
4
4
|
require_relative 'serialize'
|
data/lib/dtas/trimfx.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require_relative '../dtas'
|
4
4
|
require_relative 'parse_time'
|
@@ -36,14 +36,13 @@ class DTAS::TrimFX
|
|
36
36
|
def tfx_sox(args)
|
37
37
|
@cmd = %w(sox $SOXIN $SOXOUT $TRIMFX)
|
38
38
|
@cmd.concat(args)
|
39
|
-
@cmd.concat(%w($FADEFX))
|
40
39
|
end
|
41
40
|
|
42
41
|
def tfx_eca(args)
|
43
42
|
@cmd = %w(sox $SOXIN $SOX2ECA $TRIMFX)
|
44
43
|
@cmd.concat(%w(| ecasound $ECAFMT -i stdin -o stdout))
|
45
44
|
@cmd.concat(args)
|
46
|
-
@cmd.concat(%w(| sox $ECA2SOX - $SOXOUT
|
45
|
+
@cmd.concat(%w(| sox $ECA2SOX - $SOXOUT))
|
47
46
|
end
|
48
47
|
|
49
48
|
def to_sox_arg(format)
|
@@ -75,4 +74,66 @@ class DTAS::TrimFX
|
|
75
74
|
@tbeg = tbeg
|
76
75
|
@tlen = tlen
|
77
76
|
end
|
77
|
+
|
78
|
+
def <=>(other)
|
79
|
+
tbeg <=> other.tbeg
|
80
|
+
end
|
81
|
+
|
82
|
+
# for stable sorting
|
83
|
+
class TFXSort < Struct.new(:tfx, :idx)
|
84
|
+
def <=>(other)
|
85
|
+
cmp = tfx <=> other.tfx
|
86
|
+
0 == cmp ? idx <=> other.idx : cmp
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
# there'll be multiple epochs if ranges overlap
|
91
|
+
def self.schedule(ary)
|
92
|
+
sorted = []
|
93
|
+
ary.each_with_index { |tfx, i| sorted << TFXSort[tfx, i] }
|
94
|
+
sorted.sort!
|
95
|
+
rv = []
|
96
|
+
epoch = 0
|
97
|
+
prev_end = 0
|
98
|
+
defer = []
|
99
|
+
begin
|
100
|
+
while tfxsort = sorted.shift
|
101
|
+
tfx = tfxsort.tfx
|
102
|
+
if tfx.tbeg >= prev_end
|
103
|
+
prev_end = tfx.tbeg + tfx.tlen
|
104
|
+
(rv[epoch] ||= []) << tfx
|
105
|
+
else
|
106
|
+
defer << tfxsort
|
107
|
+
end
|
108
|
+
end
|
109
|
+
if defer[0]
|
110
|
+
epoch += 1
|
111
|
+
sorted = defer
|
112
|
+
defer = []
|
113
|
+
prev_end = 0
|
114
|
+
end
|
115
|
+
end while sorted[0]
|
116
|
+
rv
|
117
|
+
end
|
118
|
+
|
119
|
+
def self.expand(ary, total_len)
|
120
|
+
rv = []
|
121
|
+
schedule(ary).each_with_index do |sary, i|
|
122
|
+
tip = 0
|
123
|
+
dst = rv[i] = []
|
124
|
+
while tfx = sary.shift
|
125
|
+
if tfx.tbeg > tip
|
126
|
+
nfx = new(%W(trim #{tip} =#{tfx.tbeg}))
|
127
|
+
dst << nfx
|
128
|
+
dst << tfx
|
129
|
+
tip = tfx.tbeg + tfx.tlen
|
130
|
+
end
|
131
|
+
end
|
132
|
+
if tip < total_len
|
133
|
+
nfx = new(%W(trim #{tip} =#{total_len}))
|
134
|
+
dst << nfx
|
135
|
+
end
|
136
|
+
end
|
137
|
+
rv
|
138
|
+
end
|
78
139
|
end
|
data/lib/dtas/unix_accepted.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require 'socket'
|
4
4
|
require 'io/wait'
|
@@ -57,6 +57,8 @@ class DTAS::UNIXAccepted # :nodoc:
|
|
57
57
|
begin
|
58
58
|
begin
|
59
59
|
msg, _, _ = io.recvmsg_nonblock(nread)
|
60
|
+
rescue Errno::EAGAIN
|
61
|
+
return :wait_readable
|
60
62
|
rescue EOFError, SystemCallError
|
61
63
|
return nil
|
62
64
|
end
|
data/lib/dtas/unix_client.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require_relative '../dtas'
|
4
4
|
require_relative 'xs'
|
@@ -13,7 +13,7 @@ class DTAS::UNIXClient # :nodoc:
|
|
13
13
|
include DTAS::XS
|
14
14
|
|
15
15
|
def self.default_path
|
16
|
-
(ENV["DTAS_PLAYER_SOCK"] || File.expand_path("~/.dtas/player.sock"))
|
16
|
+
(ENV["DTAS_PLAYER_SOCK"] || File.expand_path("~/.dtas/player.sock"))
|
17
17
|
end
|
18
18
|
|
19
19
|
def initialize(path = self.class.default_path)
|