about summary refs log tree commit homepage
DateCommit message (Collapse)
2013-09-01doc: sink_examples: reference dtas-xdelay and friends
dtas-xdelay could use some more exposure, especially considering megabuck speakers have some of the same features :P
2013-09-01doc: reorganize sections around dtas-player
Move all sink examples to the dtas-player_sink_examples manpage. Remove redundant troubleshooting.txt, that now resides in dtas-player(1).
2013-09-01source/{av,ff}: probe harder for audio in weird containers
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
2013-08-31test_source_av: fix test to actually run
Oops, at least it still works.
2013-08-31dtas-sourcedit: allow loading YAML from stdin
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
2013-08-31Rakefile: wrap long line
This was a blind copy+paste.
2013-08-31Rakefile: additional pointer to git-set-file-times
In case we have non-Debian users
2013-08-31GNUmakefile: combine with pkg.mk
We hardly use GNU make right now.
2013-08-31disclaimer: disambiguate between dtas/$PROGNAME
The whole dtas project is committed to giving as much rope as users need!
2013-08-30av_ff_common: fix undefined var in astream fallback
This is reproducible on a video file with a mono audio stream when attempting playback in stereo.
2013-08-29rg: avoid adding gain if fallback_gain + preamp is near zero
No need to add the vol effect if it's going to be a noop.
2013-08-29remove "encoding: binary" header use
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.
2013-08-29README: add explicit copyright for this file
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.
2013-08-28dtas-console: support terminal resize
Lightly-tested, but this seems to work.
2013-08-28dtas 0.2.0 - minor bugfixes and packaging cleanups v0.2.0
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
2013-08-28add 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.
2013-08-28doc: protocol: question source ed tryorder, minor edits
Minor notes for future development.
2013-08-28doc: cleanup makefile formatting/naming
Hopefully slightly easier-to-read/parse for humans (especially non-English speakers).
2013-08-27Rakefile: use git set-file-times for consistent mtimes
Preserving mtimes will cut down on unnecessary rsync and HTTP traffic, saving bandwidth and making the Internet a better place :>
2013-08-27doc: dtas-player_protocol: note proposed revamp
Better to break compatibility while the project is very young.
2013-08-27doc: add more examples to dtas-player_sink_examples
This adds examples for using ssh(1) with play(1)
2013-08-27av_ff_common: zero samples on streams of unknown length
It's possible to get zero samples when playing streams of unknown length (e.g. over Icecast over HTTP)
2013-08-27doc: dtas-player_sink_examples manpage
This should hopefully make it easier to introduce users to sink usage.
2013-08-27player: fix sink auto-restart on "sink ed" changes
I should really write a test case for this, maybe later.
2013-08-26Rakefile: fix NEWS generation
order from most recent to oldest, and preserve non-numeric characters
2013-08-26dtas 0.1.I - zero-one-infinity v0.1.I
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
2013-08-26:nodoc: core classes in 1.9 compat layer
No we do not want to confuse `ri' users with this.
2013-08-26GIT-VERSION-GEN: :nodoc: the version constant
This is not part of any public API.
2013-08-26av_ff_common: :nodoc: this constant and add TODO item
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.
2013-08-26client_handler: remove redundant checks for @current.pid
@current is only set if is active with a pid, now, so all of our checks for @current.pid are redundant and confusing.
2013-08-26player: do not assign @current until successful spawn
This should hopefully prevent us from getting wedged if we hit an error while preparing to spawn (or during spawn).
2013-08-26source/sox: cleanup error handling, quiet redundant warnings
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.
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.