Date | Commit message (Collapse) |
|
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).
|
|
Since ffmpeg/ffprobe are wrappers around their libav-variants,
I haven't had the chance to actually test with "real" ffmpeg,
but the usage is probably similar enough to not matter.
|
|
We may not have these available, so bail.
|
|
soxi may not handle some files correctly and detect zero samples
without error-ing out. If sox can't detect the sample count
or the file is really empty, then there's no point trying futher
and we'll fall back to avconv.
|
|
Sometimes we'll enqueue the wrong file and avconv won't be able to
handle it.
|
|
This is for consistency with source handlers.
|
|
While we're at it, add a test for this functionality, too.
|
|
These two are similar enough that it's possible to share
some code between them and also increase user-friendliness
at the same time.
|
|
We should be fully-capable of managing any number of options
to try sources in.
|
|
This should better prepare us to make "source ed" into
"source <av|sox> ed" and set per-source priorities.
We also now treat @env consistently for all per-source commands
(such as soxi/avprobe) so we can be sure we're using the same
installation of sox or libav if using a non-standard PATH, or if we
want to set AV_LOG_FORCE_NOCOLOR
|
|
I forgot :err is already handled by Process.spawn, so split out
the functionality into err_str where we want to use it.
Also, add a :no_raise flag which will allow us to better handle
avprobe/soxi calls which can fail and avoid needless exceptions.
|
|
Shellwords.join is an identical method and there's no reason not to
use it.
|
|
This should allow us to more easily transfer user-configured
environment variables to helper tools (avprobe/soxi).
|
|
Fancy displays waste power and can potentially harm audio quality,
it's true!
|
|
We do not need a respawn flag, since we already infer expected vs
unexpected sink death by checking the @targets array.
Additionally, next_source must always check @current before
calling, and not clobber the existing @current because that
would cause two source processes writing into the same pipe.
|
|
Regexps are hard to write sometimes :x
Anyways, we should support using floating-point internally
for users who prefer it.
|
|
It's useful to show inactive ReplayGain values, as users may
switch between the defaults and non-default values frequently.
|
|
We need to tell sox to use and resample to the _player_ format
instead of the source format. Otherwise 48000 Hz audio (common for
video?) sounds very slow when attempting to play back on the default
44100 Hz. It is also likely preferable to choose the audio stream
which matches the player channel count instead of letting sox
automatically invoke the remix effect.
Before this change, playing 6-channel, 48000 Hz source into a sink
expecting stereo, 44100 Hz is rather disturbing...
While we're at it, clarify the spawn code for the sox source, too.
We can drop the test_format_from_file test now, since
it's probably overkill at this point.
|
|
avconv is capable of outputting to the .sox format, greatly
simplifying our life as it enables us to easily apply sox
effects on a per-source file basis.
dtas-sourceedit and the "source" protocol commands will need
to change to support internal priorities (like sink).
|
|
We'll be supporting reading the format from avprobe and ffprobe,
so we should avoid tying ourselves to soxi
|
|
We should've done this at the start, but we didn't.
|
|
a sink can never have respawn set and not be active
|
|
Instead, we rely on closing the pipe (EOF or SIGPIPE) to
stop sources and sinks. This way we remove the possibility
of old and new processes operating on the same pipe and
causing strange audio overlaps.
|
|
This should make porting to different Unix socket types easier, too.
Much of these tests were written before I decided to implement
unix_client originally.
|
|
It's too much work for me to attempt to wedge SOCK_DGRAM or
SOCK_STREAM support into this. SOCK_SEQPACKET is the best use of
_my_ time and I have limited patience for crippled OSes. Linux has
had this forever and FreeBSD 9 supports SOCK_SEQPACKET already, so
maybe this will be another way to nudge developers of other OSes
into supporting SOCK_SEQPACKET.
If somebody can provide clean patches to support SOCK_DGRAM or
SOCK_STREAM, I'll accept them.
|
|
Oops, I should've noticed this earlier.
|
|
This allows gzip_static in nginx to serve files more efficiently.
While we're at it, replace some system() calls with sh() which fails
appropriately.
|
|
New features should be documented.
|
|
This also matches the KEY_UP and KEY_DOWN behavior, and probably(?)
makes more sense.
|
|
Add hotkeys for the (probably) frequently changed ReplayGain mode,
preamp and fallback_gain parameters. And display the RGFX volume
change.
While we're at it, we'll display the format info to get a better
idea of what we're decoding and playing to.
|
|
We use it everywhere else since it can potentially speed things up.
|
|
Oops, not everybody has their VISUAL or EDITOR environment set.
|
|
We documented this behavior in dtas-player.txt but failed to
implement it. Now our behavior matches the documentation!
|
|
We have a website, really!
|