Date | Commit message (Collapse) |
|
Oops.
|
|
Lightly tested, but this seems to work.
|
|
at_exit ordering is funky because minitest/autorun also runs
at_exit, so we need to delay registering the at_exit until we
call tmpfifo.
|
|
This is to avoid annoying deprecation warnings in minitest 5, while
still preserving compatibility with minitest 4 (which is distributed
in Ruby 2.0.0 and part of the standard library).
|
|
Process.waitall prevents test cases from using multiple threads
(we're already using multiple processes). We may use
parallelize_me! from minitest in the future.
|
|
assert() in test/unit does not automatically stringify the failure
message, unlike minitest. I don't have a strong opinion regarding
minitest and test/unit, but the deprecation notices in minitest 5
are annoying, so perhaps using Test::Unit via minitest shim is a
better way to go.
|
|
Singleton methods tend to be bad like this.
TODO: write tests for this.
|
|
There is now a mailing list hosted by Savannah: dtas-all@nongnu.org
No subscription is necessary to post (please Cc: all on replies).
This release should be compatible with Ruby 1.9.3 built with Syck,
as this seems to be the case with Debian wheezy systems. Hopefully
dtas is easier for Debian GNU/Linux users not familiar with Ruby.
Probing via avprobe/ffprobe for audio in large containers (e.g.
VOBs) should have a higher probability of success, but seeking with
large containers is still broken. My suggestion is to use
avconv/ffmpeg to extract the raw audio (without transcoding) from
VOBs/DVDs and just play that.
dtas-sourceedit learned to load YAML from stdin (same format
as "dtas-ctl source cat $SOURCENAME").
player protocol changes:
- "state dump [FILENAME]" allows dumping the current state (in case
an unexpected shutdown happens and at_exit does not run)
- "env" (no args) returns the environment
note: I'm still considering revamping the protocol completely
Eric Wong (23):
dtas-console: support terminal resize
README: add explicit copyright for this file
remove "encoding: binary" header use
rg: avoid adding gain if fallback_gain + preamp is near zero
av_ff_common: fix undefined var in astream fallback
disclaimer: disambiguate between dtas/$PROGNAME
GNUmakefile: combine with pkg.mk
Rakefile: additional pointer to git-set-file-times
Rakefile: wrap long line
dtas-sourcedit: allow loading YAML from stdin
test_source_av: fix test to actually run
source/{av,ff}: probe harder for audio in weird containers
doc: reorganize sections around dtas-player
doc: sink_examples: reference dtas-xdelay and friends
doc: add contact info to all documentation
INSTALL: update installation instructions
player: add "state dump" command to serialize state
doc/dtas-xdelay: reference sox/play env, update email address
dtas-xdelay: pass -q flag to play(1) by default
player/client_handler: cleanup to avoid redundant code
player: explicitly stop+wait for sink death at_exit
player/client_handler: support for dumping individual env
test/test_player_client_handler: rename shadowed method
|
|
Oops.
|
|
This allows users to display the current env value for introspection
|
|
This allows me to hit Ctrl-C on a dtas-player(1) process, wait on
termination of the player, and immediately restart it without
worrying about sink conflicts upon restart.
Before this change, sinks would continue running for a bit
(depending on buffer sizes).
|
|
stop_sinks is already defined, so avoid repeating this loop
|
|
We also do this for our defaults sinks, as multiple sinks makes
the meter output of play(1) annoying
|
|
Since dtas-xdelay uses play/sox, we need to document AUDIODEV,
AUDIODRIVER, and SOX_OPTS environment variables.
Also point comments to the mailing list while we're at it.
|
|
This helps in case dtas-player is hit with SIGKILL or the system
crashes. This does not fsync(2) as that could introduce delays on
slow filesystems. Users should open the file manually and fsync
themselves if they need to.
|
|
dtas 0.3.0 will be compatible with Syck in the Debian Ruby 1.9.3
install.
|
|
Users need to be able to communicate with us.
|
|
dtas-xdelay could use some more exposure, especially considering
megabuck speakers have some of the same features :P
|
|
Move all sink examples to the dtas-player_sink_examples manpage.
Remove redundant troubleshooting.txt, that now resides in
dtas-player(1).
|
|
Some containers (e.g. large VOBs) are not easily probed and require
additional options for avprobe/ffprobe to find audio streams. We do
this by looping and increasing the duration/size of the probe to
find new audio streams.
This seems to work reasonably well for some DVD rips I have until
seeking is required. This breaks if the seek point (including seeks
for source effects) exceeds the avprobe/ffprobe -analyzeduration.
Anyways, I recommend extracting the audio stream (without
transcoding) out of the VOB container as the best way to go.
Something like:
avconv -analyzeduration 2G -probesize 2G \
-i input.vob -vn -sn -c:a copy -map 0:$STREAM_NR output.ext
|
|
Oops, at least it still works.
|
|
This should make it easy to save/load sink profiles depending on
the users mood. One could easily create different profiles
depending on different listening criteria.
dtas-ctl source cat sox > casual.yml
dtas-sourceedit sox < critical.yml
|
|
This was a blind copy+paste.
|
|
In case we have non-Debian users
|
|
We hardly use GNU make right now.
|
|
The whole dtas project is committed to giving as much rope as users
need!
|
|
This is reproducible on a video file with a mono audio stream
when attempting playback in stereo.
|
|
No need to add the vol effect if it's going to be a noop.
|
|
We don't need it since IO#read(bytes, buf) will convert to
ASCII-8BIT anyways. Everywhere else, we ensure path names are
already binary. We do this mainly at the client layer before using
Shellwords to escape the paths.
We also must be careful about parsing output from soxi/avprobe
which can show us metadata in whatever encoding is in the file.
We must still handle data from parsing command output as binary,
as the encoding of file metadata tends to vary.
This also should buy us Syck compatibility for Ruby 1.9.3 users
on Debian systems where Ruby 1.9.3 still uses Syck.
|
|
While we're at it, remove a repeated paragraph. It was a copy+paste
error of the paragraph above it.
dtas-linux.gemspec: likewise for copyright.
|
|
Lightly-tested, but this seems to work.
|
|
Most notable is the addition of the dtas-player_sink_examples
manpage. Minor bugfixes and documentation updates.
Note: I'm considering a major revamp of the protocol now that
things function reasonably well.
Eric Wong (10):
Rakefile: fix NEWS generation
player: fix sink auto-restart on "sink ed" changes
doc: dtas-player_sink_examples manpage
av_ff_common: zero samples on streams of unknown length
doc: add more examples to dtas-player_sink_examples
doc: dtas-player_protocol: note proposed revamp
Rakefile: use git set-file-times for consistent mtimes
doc: cleanup makefile formatting/naming
doc: protocol: question source ed tryorder, minor edits
add license/copyright headers/footers to all files
|
|
All files we distribute in the tarball need to have a
copyright/license specified for Savannah.
We don't need the example state file anymore.
|
|
Minor notes for future development.
|
|
Hopefully slightly easier-to-read/parse for humans (especially
non-English speakers).
|
|
Preserving mtimes will cut down on unnecessary rsync and HTTP
traffic, saving bandwidth and making the Internet a better place :>
|
|
Better to break compatibility while the project is very young.
|
|
This adds examples for using ssh(1) with play(1)
|
|
It's possible to get zero samples when playing streams of
unknown length (e.g. over Icecast over HTTP)
|
|
This should hopefully make it easier to introduce users to
sink usage.
|
|
I should really write a test case for this, maybe later.
|
|
order from most recent to oldest, and preserve non-numeric
characters
|
|
This release refactors dtas-player internals and adds lightly-tested
avconv (from libav) and ffmpeg support. It should also be much easier
for us to add direct support for other non-SoX decoders in the future.
The "source ed" and "source cat" protocol commands now both require a
SOURCENAME argument, one of "sox", "av" (avconv), or "ff" (ffmpeg).
"source ed" also supports a new "tryorder" integer parameter to control
the order in which sox, av, and ff are tried.
dtas-console now displays ReplayGain status and allows controlling
ReplayGain mode, fallback_gain, and preamp values via hotkeys.
There are also many corner-case bugfixes and small minor features, see
"git log" for details.
Eric Wong (40):
README: include a pointer to the plain-text docs
set REPLAYGAIN_* vars for source command as documented
dtas-*edit: properly fall back to 'vi' as documented
use require_relative for loading 1.9 compatibility
dtas-console: implement better ReplayGain and format support
dtas-console: swap 'j' / 'k' bindings to match docs
doc: document new dtas-console key bindings
Rakefile: rsync task uploads gzipped files, too
test_rg_integration: avoid unused variable warning
unix_client: remove non-SOCK_SEQPACKET support
tests: use unix_client in tests to kill some redundant code
command: remove kill, we no longer rely on it
player: remove unreachable branch
split out source handling to prepare for avconv/ffmpeg support
format: decouple from soxi
preliminary support for avconv/avprobe from libav
source/av: handle multiple audio streams w/ proper sample rate
dtas-console: always show ReplayGain line
format: fix switching to floating point samples
player: fix logic around sink death/respawns
doc: add note about increased wakeups with dtas-console
process: allow passing env to qx
process: remove redundant "xs" method
process (qx): disambiguate err/err_str, add no_raise
cleanup multi-source handling between sox and av
player: flesh out multi-source in protocol/sourceedit
dtas-{sink,source}edit: reduce redundant code
player: sink ed pipe_size= disallows nils
player: restart sinks on "sink ed" modification
player: break out gracefully if a file is totally unplayable
source/sox: bail out if zero samples are detected
test_source_av: disable if avprobe/avconv are not available
add lightly-tested ffmpeg support
README: remove avconv/ffmpeg item
source/sox: cleanup error handling, quiet redundant warnings
player: do not assign @current until successful spawn
client_handler: remove redundant checks for @current.pid
av_ff_common: :nodoc: this constant and add TODO item
GIT-VERSION-GEN: :nodoc: the version constant
:nodoc: core classes in 1.9 compat layer
|
|
No we do not want to confuse `ri' users with this.
|
|
This is not part of any public API.
|
|
We expose no public API, so avoid cluttering users disk space with
useless ri/rdoc and avoid cluttering the web with HTML nobody will
read.
|
|
@current is only set if is active with a pid, now, so all
of our checks for @current.pid are redundant and confusing.
|
|
This should hopefully prevent us from getting wedged
if we hit an error while preparing to spawn (or during spawn).
|
|
Showing the warning for the same file over and over again is
annoying when seeking a file handled by avconv/ffmpeg, so stop
doing it.
While we're at it, the error handling for __load_comments is totally
redundant (absent of race conditions if another process modifies the
file). However, if we do hit races, all the other soxi invocations
would be racy, too; but we really just shouldn't care about such
a corner case in here.
|
|
We may still implement gst support, but avconv/ffmpeg probably
cover everything gst covers already (and I'm more familiar with
them than gst).
|