about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/dtas/sink_reader_play.rb70
-rw-r--r--test/test_sink_reader_play.rb49
2 files changed, 0 insertions, 119 deletions
diff --git a/lib/dtas/sink_reader_play.rb b/lib/dtas/sink_reader_play.rb
deleted file mode 100644
index 17a0190..0000000
--- a/lib/dtas/sink_reader_play.rb
+++ /dev/null
@@ -1,70 +0,0 @@
-# -*- encoding: binary -*-
-# :stopdoc:
-# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net>
-# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
-require_relative '../dtas'
-
-# parses lines from play(1) -S/--show-progress like this:
-#  In:0.00% 00:00:37.34 [00:00:00.00] Out:1.65M [ -====|====  ]        Clip:0
-#
-# The authors of sox probably did not intend for the output of play(1) to
-# be parsed, but we do it anyways.  We need to be ready to update this
-# code in case play(1) output changes.
-# play -S/--show-progress
-class DTAS::SinkReaderPlay
-  attr_reader :time, :out, :meter, :clips, :headroom
-  attr_reader :to_io
-  attr_reader :wr # this is stderr of play(1)
-
-  def initialize
-    @to_io, @wr = IO.pipe
-    reset
-  end
-
-  def readable_iter
-    buf = Thread.current[:dtas_lbuf] ||= ""
-    begin
-      @rbuf << @to_io.read_nonblock(1024, buf)
-
-      # do not OOM in case SoX changes output format on us
-      @rbuf.clear if @rbuf.size > 0x10000
-
-      # don't handle partial read
-      next unless / Clip:\S+ *\z/ =~ @rbuf
-
-      if @rbuf.gsub!(/(.*)\rIn:\S+ (\S+) \S+ Out:(\S+)\s+(\[[^\]]+\]) /m, "")
-        err = $1
-        @time = $2
-        @out = $3
-        @meter = $4
-        if @rbuf.gsub!(/Hd:(\d+\.\d+) Clip:(\S+) */, "")
-          @headroom = $1
-          @clips = $2
-        elsif @rbuf.gsub!(/\s+Clip:(\S+) */, "")
-          @headroom = nil
-          @clips = $1
-        end
-
-        $stderr.write(err)
-      end
-    rescue EOFError
-      return nil
-    rescue Errno::EAGAIN
-      return :wait_readable
-    end while true
-  end
-
-  def close
-    @wr.close unless @wr.closed?
-    @to_io.close
-  end
-
-  def reset
-    @rbuf = ""
-    @time = @out = @meter = @headroom = @clips = nil
-  end
-
-  def closed?
-    @to_io.closed?
-  end
-end
diff --git a/test/test_sink_reader_play.rb b/test/test_sink_reader_play.rb
deleted file mode 100644
index 03aa979..0000000
--- a/test/test_sink_reader_play.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-# -*- encoding: binary -*-
-# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net>
-# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
-require 'dtas/sink_reader_play'
-require './test/helper'
-
-class TestSinkReaderPlay < Minitest::Unit::TestCase
-  FMT = "\rIn:%-5s %s [%s] Out:%-5s [%6s|%-6s] %s Clip:%-5s"
-  ZERO = "\rIn:0.00% 00:00:00.00 [00:00:00.00] Out:0     " \
-         "[      |      ]        Clip:0    "
-
-  def setup
-    @srp = DTAS::SinkReaderPlay.new
-  end
-
-  def teardown
-    @srp.close
-  end
-
-  def test_sink_reader_play
-    @srp.wr.write(ZERO)
-    assert_equal :wait_readable, @srp.readable_iter
-    assert_equal "0", @srp.clips
-    assert_equal nil, @srp.headroom
-    assert_equal "[      |      ]", @srp.meter
-    assert_equal "0", @srp.out
-    assert_equal "00:00:00.00", @srp.time
-
-    noheadroom = sprintf(FMT, '0.00%', '00:00:37.34', '00:00:00.00',
-                         '1.65M', ' -====', '====  ', ' ' * 6, '3M')
-    @srp.wr.write(noheadroom)
-    assert_equal :wait_readable, @srp.readable_iter
-    assert_equal '3M', @srp.clips
-    assert_equal nil, @srp.headroom
-    assert_equal '[ -====|====  ]', @srp.meter
-    assert_equal '1.65M', @srp.out
-    assert_equal '00:00:37.34', @srp.time
-
-    headroom = sprintf(FMT, '0.00%', '00:00:37.43', '00:00:00.00',
-                         '1.66M', ' =====', '===== ', 'Hd:1.2', '3.1M')
-    @srp.wr.write(headroom)
-    assert_equal :wait_readable, @srp.readable_iter
-    assert_equal '3.1M', @srp.clips
-    assert_equal '1.2', @srp.headroom
-    assert_equal '[ =====|===== ]', @srp.meter
-    assert_equal '1.66M', @srp.out
-    assert_equal '00:00:37.43', @srp.time
-  end
-end