dtas 0.14.0 → 0.14.2
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/GIT-VERSION-GEN +1 -1
- data/INSTALL +3 -3
- data/bin/dtas-readahead +13 -2
- data/lib/dtas/sigevent/pipe.rb +1 -1
- data/lib/dtas/source/av_ff_common.rb +31 -9
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0bc3ffcf67bb7f7e020a386299244ce66f10ad4d
|
4
|
+
data.tar.gz: 62e5cb485569bee19c6d68ca70fadf335585fc4d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69ffea1179687f8bb6f73bdde76a6b9e1b7d47e39744f17398f392abf1d48b501ec4874b9b282e7143b0f02aa166e0910d3b4d3ca3935f0194d601d346f0fd5f
|
7
|
+
data.tar.gz: bd7f43ad66ba88d8c5d1ca2e0225a38d9a2c7125961bd19e1f74ccbbe44a5be9bd19f4540a8f386ef4f4f75da8c70a5c126fa29dd642130185ec37c53f76951d
|
data/GIT-VERSION-GEN
CHANGED
data/INSTALL
CHANGED
@@ -39,10 +39,10 @@ For future upgrades of dtas (upgrades to dtas-linux will be infrequent)
|
|
39
39
|
|
40
40
|
Grab the latest tarball from our HTTP site:
|
41
41
|
|
42
|
-
http://dtas.80x24.org/2016/dtas-0.14.
|
42
|
+
http://dtas.80x24.org/2016/dtas-0.14.2.tar.gz
|
43
43
|
|
44
|
-
$ tar zxvf dtas-0.14.
|
45
|
-
$ cd dtas-0.14.
|
44
|
+
$ tar zxvf dtas-0.14.2.tar.gz
|
45
|
+
$ cd dtas-0.14.2
|
46
46
|
$ sudo ruby setup.rb
|
47
47
|
|
48
48
|
GNU/Linux users may optionally install "io_splice" and
|
data/bin/dtas-readahead
CHANGED
@@ -9,6 +9,8 @@
|
|
9
9
|
unless RUBY_PLATFORM =~ /linux/
|
10
10
|
warn "this relies on Linux /proc and probably does not work well for you"
|
11
11
|
end
|
12
|
+
@ffprobe = 'ffprobe'
|
13
|
+
@avprobe = 'avprobe'
|
12
14
|
|
13
15
|
require 'yaml'
|
14
16
|
require 'io/wait'
|
@@ -97,8 +99,17 @@ def do_ra(fp, pos, w)
|
|
97
99
|
len: '%.3f' % (len / (1024 * 1024.0)),
|
98
100
|
pos: pos })
|
99
101
|
spawn('soxi', path, @redir)
|
100
|
-
|
101
|
-
|
102
|
+
begin
|
103
|
+
spawn(@avprobe, path, @redir)
|
104
|
+
rescue Errno::ENOENT
|
105
|
+
@avprobe = false unless File.exist?(path)
|
106
|
+
end if @avprobe
|
107
|
+
begin
|
108
|
+
spawn(@ffprobe, path, @redir)
|
109
|
+
rescue Errno::ENOENT
|
110
|
+
@ffprobe = false unless File.exist?(path)
|
111
|
+
end if @ffprobe
|
112
|
+
|
102
113
|
fp.advise(:sequential, pos, len)
|
103
114
|
Thread.new(fp.dup) { |d| d.advise(:willneed, pos, len); d.close }
|
104
115
|
|
data/lib/dtas/sigevent/pipe.rb
CHANGED
@@ -78,28 +78,50 @@ def av_ff_ok?
|
|
78
78
|
break if cmd == prev_cmd
|
79
79
|
|
80
80
|
err = "".b
|
81
|
-
|
81
|
+
begin
|
82
|
+
s = qx(@env, cmd, err_str: err, no_raise: true)
|
83
|
+
rescue Errno::ENOENT # avprobe/ffprobe not installed
|
84
|
+
return false
|
85
|
+
end
|
82
86
|
return false unless probe_ok?(s, err)
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
87
|
+
|
88
|
+
# old avprobe
|
89
|
+
[ %r{^\[STREAM\]\n(.*?)\n\[/STREAM\]\n}mn,
|
90
|
+
%r{^\[streams\.stream\.\d+\]\n(.*?)\n\n}mn ].each do |re|
|
91
|
+
s.scan(re) do |_|
|
92
|
+
__parse_astream(cmd, $1) do |index, as|
|
93
|
+
# incomplete streams may have zero channels
|
94
|
+
if as.channels > 0 && as.rate > 0
|
95
|
+
@astreams[index] = as
|
96
|
+
incomplete[index] = nil
|
97
|
+
else
|
98
|
+
incomplete[index] = as
|
99
|
+
end
|
91
100
|
end
|
92
101
|
end
|
93
102
|
end
|
103
|
+
|
94
104
|
prev_cmd = cmd
|
95
105
|
end while incomplete.compact[0]
|
96
106
|
|
107
|
+
# old avprobe
|
97
108
|
s.scan(%r{^\[FORMAT\]\n(.*?)\n\[/FORMAT\]\n}m) do |_|
|
98
109
|
f = $1.dup
|
99
110
|
f =~ /^duration=([\d\.]+)\s*$/nm and @duration = $1.to_f
|
100
111
|
# TODO: multi-line/multi-value/repeated tags
|
101
112
|
f.gsub!(/^TAG:([^=]+)=(.*)$/ni) { |_| @comments[$1.upcase.freeze] = $2 }
|
102
113
|
end
|
114
|
+
|
115
|
+
# new avprobe
|
116
|
+
s.scan(%r{^\[format\.tags\]\n(.*?)\n\n}m) do |_|
|
117
|
+
f = $1.dup
|
118
|
+
f.gsub!(/^([^=]+)=(.*)$/ni) { |_| @comments[$1.upcase.freeze] = $2 }
|
119
|
+
end
|
120
|
+
s.scan(%r{^\[format\]\n(.*?)\n\n}m) do |_|
|
121
|
+
f = $1.dup
|
122
|
+
f =~ /^duration=([\d\.]+)\s*$/nm and @duration = $1.to_f
|
123
|
+
end
|
124
|
+
|
103
125
|
! @astreams.compact.empty?
|
104
126
|
end
|
105
127
|
|
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.14.
|
4
|
+
version: 0.14.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dtas hackers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-03-18 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |-
|
14
14
|
Free Software command-line tools for audio playback, mastering, and
|
@@ -205,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
205
205
|
version: '0'
|
206
206
|
requirements: []
|
207
207
|
rubyforge_project:
|
208
|
-
rubygems_version: 2.5.
|
208
|
+
rubygems_version: 2.5.2
|
209
209
|
signing_key:
|
210
210
|
specification_version: 4
|
211
211
|
summary: duct tape audio suite for *nix
|