about summary refs log tree commit homepage
DateCommit message (Collapse)
2013-08-26README: remove avconv/ffmpeg item
We may still implement gst support, but avconv/ffmpeg probably cover everything gst covers already (and I'm more familiar with them than gst).
2013-08-26add lightly-tested ffmpeg support
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.
2013-08-26test_source_av: disable if avprobe/avconv are not available
We may not have these available, so bail.
2013-08-26source/sox: bail out if zero samples are detected
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.
2013-08-26player: break out gracefully if a file is totally unplayable
Sometimes we'll enqueue the wrong file and avconv won't be able to handle it.
2013-08-26player: restart sinks on "sink ed" modification
This is for consistency with source handlers.
2013-08-26player: sink ed pipe_size= disallows nils
While we're at it, add a test for this functionality, too.
2013-08-26dtas-{sink,source}edit: reduce redundant code
These two are similar enough that it's possible to share some code between them and also increase user-friendliness at the same time.
2013-08-26player: flesh out multi-source in protocol/sourceedit
We should be fully-capable of managing any number of options to try sources in.
2013-08-26cleanup multi-source handling between sox and av
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
2013-08-26process (qx): disambiguate err/err_str, add no_raise
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.
2013-08-26process: remove redundant "xs" method
Shellwords.join is an identical method and there's no reason not to use it.
2013-08-25process: allow passing env to qx
This should allow us to more easily transfer user-configured environment variables to helper tools (avprobe/soxi).
2013-08-25doc: add note about increased wakeups with dtas-console
Fancy displays waste power and can potentially harm audio quality, it's true!
2013-08-25player: fix logic around sink death/respawns
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.
2013-08-25format: fix switching to floating point samples
Regexps are hard to write sometimes :x Anyways, we should support using floating-point internally for users who prefer it.
2013-08-25dtas-console: always show ReplayGain line
It's useful to show inactive ReplayGain values, as users may switch between the defaults and non-default values frequently.
2013-08-25source/av: handle multiple audio streams w/ proper sample rate
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.
2013-08-25preliminary support for avconv/avprobe from libav
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).
2013-08-25format: decouple from soxi
We'll be supporting reading the format from avprobe and ffprobe, so we should avoid tying ourselves to soxi
2013-08-25split out source handling to prepare for avconv/ffmpeg support
We should've done this at the start, but we didn't.
2013-08-25player: remove unreachable branch
a sink can never have respawn set and not be active
2013-08-25command: remove kill, we no longer rely on it
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.
2013-08-25tests: use unix_client in tests to kill some redundant code
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.
2013-08-25unix_client: remove non-SOCK_SEQPACKET support
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.
2013-08-25test_rg_integration: avoid unused variable warning
Oops, I should've noticed this earlier.
2013-08-25Rakefile: rsync task uploads gzipped files, too
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.
2013-08-25doc: document new dtas-console key bindings
New features should be documented.
2013-08-25dtas-console: swap 'j' / 'k' bindings to match docs
This also matches the KEY_UP and KEY_DOWN behavior, and probably(?) makes more sense.
2013-08-25dtas-console: implement better ReplayGain and format support
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.
2013-08-25use require_relative for loading 1.9 compatibility
We use it everywhere else since it can potentially speed things up.
2013-08-25dtas-*edit: properly fall back to 'vi' as documented
Oops, not everybody has their VISUAL or EDITOR environment set.
2013-08-25set REPLAYGAIN_* vars for source command as documented
We documented this behavior in dtas-player.txt but failed to implement it. Now our behavior matches the documentation!
2013-08-25README: include a pointer to the plain-text docs
We have a website, really!
2013-08-25more cleanups for packaging and documentation v0.0.0
Rename COPYRIGHT -> COPYING, as that seems to be the more common name for the GPLv3 license file. Kill all rdoc, since I don't agree with HTML documentation and we do not expose any Ruby APIs.
2013-08-25remove sink_reader_play
It was never fully-realized and too crazy/complex to be worth it. In case we ever need it in the future, git will remember it for us.
2013-08-25manpage installation updates
We should be compatible with "gem-man", as well as allowing installation to prefix ($HOME by default) via: make -C Documentation install-man
2013-08-25move dtas-graph to a perl/ directory
I haven't figured out what to do with this, yet, since I have yet to find and ASCII-art capable grapher in Ruby. This was intended to become dtas-ps, but maybe that'll be something else...
2013-08-25pkg.mk: remove HTML packaging bits
As far as new projects are concerned, I'm done with HTML.
2013-08-25build: include prebuilt manpages with installation
This may make lives easier for users without pandoc.
2013-08-25rename dtas-play-xover-delay to dtas-xdelay
dtas-xdelay is shorter and easier-to-type. The "play" in the name is also not entirely accurate, as it is capable of using plain "sox", too.
2013-08-25player: preserve format across invocations
We maintain most everything else, so we should maintain this, too.
2013-08-25dtas-console: don't barf if there is no infile
Occasionally we will play the output of a command, just display that.
2013-08-25packaging for dtas-linux and dtas-mpris meta-packages
We shall reserve dtas-mpris until it's actually implemented.
2013-08-24documentation: initial manpages for all commands
We should probably document this before we forget it.
2013-08-24player: cd/pwd handlers for manipulating working directory
Some effects may be easier to save/store with relative directory paths, so allow changing this at runtime.
2013-08-24dtas-{sink,source}edit: allow unsetting command and env
Omitting a command: entry or an entry inside env: should delete it from the player
2013-08-24initial commit